Использование FFmpeg в .NET?

Таким образом, я знаю, что это - довольно сложная задача, но я хочу записать основной проигрыватель фильмов / преобразователь в 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, который я считаю, что мог портировать меня? Затем не должны волноваться о лицензировании.

Но я хочу разобраться в этом, прежде чем я буду идти вперед и начинать кодировать. Если я:

  1. Запишите мою собственную библиотеку C++ для взаимодействия с ffmpeg, затем имейте мою программу C#, говорят с библиотекой C++ для игрения/преобразовывания видео и т.д.

ИЛИ

  1. Порт avcodec.h и avformat.h (то, что все мне нужно?) к c# при помощи большого количества DllImports и записи это полностью в C#?

В первую очередь, полагайте, что я не силен в C++, поскольку я редко использую его, но я знаю достаточно для двигений. Причиной я думаю № 1, мог бы быть более оптимальный вариант, то, что большинство учебных руководств FFmpeg находится в C++, и я также имел бы больше контроля над управлением памятью, чем если бы я должен был сделать это в c#.

Что Вы думаете? Также у Вас, оказалось бы, были бы какие-либо полезные ссылки (возможно, учебное руководство) для использования FFmpeg?

62
задан Alanight 3 September 2015 в 12:41
поделиться

2 ответа

несколько других управляемых оболочек, которые вы можете проверить

Написание собственных оболочек взаимодействия может быть трудоемким и сложным процессом в .NET. У написания библиотеки C ++ для взаимодействия есть некоторые преимущества, особенно потому, что она позволяет значительно упростить интерфейс кода C #. Однако, если вам нужна только часть библиотеки, вы можете облегчить себе жизнь, просто выполняя взаимодействие на C #.

23
ответ дан 24 November 2019 в 16:53
поделиться

Вы можете попробовать простую оболочку .NET для ffmpeg отсюда: http://ivolo.mit.edu/post/Convert-Audio-Video-to-Any-Format-using-C.aspx

1
ответ дан 24 November 2019 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: