Таким образом, я знаю, что это - довольно сложная задача, но я хочу записать основной проигрыватель фильмов / преобразователь в c#, пользующемся библиотекой FFmpeg. Однако первое препятствие, которое я должен преодолеть, переносит библиотеку FFmpeg в c#. Я загрузил ffmpeg, но не мог скомпилировать его в Windows, таким образом, я загрузил предварительно скомпилированную версию для меня. Хорошо потрясающий. Затем я начал искать обертки C#.
Я озирался и нашел несколько оберток, таких как SharpFFmpeg (http://sourceforge.net/projects/sharpffmpeg/) и ffmpeg-резкий (http://code.google.com/p/ffmpeg-sharp/). В первую очередь, я хотел использовать ffmpeg-резкий в качестве его LGPL, и SharpFFmpeg является GPL. Однако это имело довольно много ошибок компиляции. Оказывается, что это было записано для моно компилятора, я пытался компилировать его с моно, но не мог выяснить как. Я затем начал вручную фиксировать ошибки компилятора сам, но столкнулся с несколькими страшными и думал, что должен оставить их в покое. Таким образом, я разочаровался ffmpeg-резкий.
Затем я посмотрел на SharpFFmpeg, и похоже на то, что я хочу, все функции P/Invoked для меня. Однако его GPL? И AVCodec.cs и файлы AVFormat.cs похожи на порты avcodec.c и avformat.c, который я считаю, что мог портировать меня? Затем не должны волноваться о лицензировании.
Но я хочу разобраться в этом, прежде чем я буду идти вперед и начинать кодировать. Если я:
ИЛИ
В первую очередь, полагайте, что я не силен в C++, поскольку я редко использую его, но я знаю достаточно для двигений. Причиной я думаю № 1, мог бы быть более оптимальный вариант, то, что большинство учебных руководств FFmpeg находится в C++, и я также имел бы больше контроля над управлением памятью, чем если бы я должен был сделать это в c#.
Что Вы думаете? Также у Вас, оказалось бы, были бы какие-либо полезные ссылки (возможно, учебное руководство) для использования FFmpeg?
несколько других управляемых оболочек, которые вы можете проверить
Написание собственных оболочек взаимодействия может быть трудоемким и сложным процессом в .NET. У написания библиотеки C ++ для взаимодействия есть некоторые преимущества, особенно потому, что она позволяет значительно упростить интерфейс кода C #. Однако, если вам нужна только часть библиотеки, вы можете облегчить себе жизнь, просто выполняя взаимодействие на C #.
Вы можете попробовать простую оболочку .NET для ffmpeg отсюда: http://ivolo.mit.edu/post/Convert-Audio-Video-to-Any-Format-using-C.aspx