2010-05-09 3 views

ответ

0

Нет действительно простого способа сделать это; мой совет - использовать ffmpeg, либо с помощью оболочки C#, вызвав ее извне. Кажется, что для ffmpeg (например, this one) есть несколько оберток C#, но все они, похоже, находятся на разных этапах разработки и не могут использоваться. Ваш единственный вариант, вероятно, будет, вызвав его извне.

+0

ffmpeg-sharp является неполным и старым. У вас были какие-то успехи? Я обнаружил, что Дао немного лучше, но закончил тем самым прямое обращение к нему через обертку C++/CLI. –

+0

Это было практически бесполезно для большинства вещей - как я и посоветовал, я закончил использовать систему ffmpeg и piping to/from. Меньше контроля, но достаточно для простого преобразования между форматами контейнеров. – TkTech

6

Это зависит от того, что вы подразумеваете под «преобразованием». Как 3GP, так и AVI являются форматами оболочки, так что вы просто пытаетесь изменить формат контейнера или хотите также перекодировать потоки?

В любом случае, вы должны, вероятно, взглянуть на ffmpeg (Windows info). Для простых случаев (т. Е. У вас есть файл, требуется один выходной файл), вам, вероятно, следует подумать о его вызове в командной строке (т. Е. System.Diagnostics.Process), что намного проще (и не связано с проблемами лицензирования). Если вы хотите получить доступ к кодеку/libavormat программен, я высоко рекомендую пропускать любые .NET оболочек LIBS (все они находятся в разных состояниях сосания, Tao быть лучшим, но это не говорит много), и вместо того, чтобы писать C++/CLI обертки. I started doing this, и как только я приступил к сортировке данных и т. Д., И выяснил, как его построить (Part 1, Part 2), это было не слишком сложно.

Смежные вопросы