Если бы вам пришлось добавить поддержку одного формата видеофайла и кодека, что бы вы выбрали? - PullRequest
2 голосов
/ 20 ноября 2008

Я хочу добавить поддержку для чтения и записи видеофайлов в моем приложении. Если бы вам пришлось выбрать ровно одну комбинацию формата файла и кодека, которая бы удовлетворяла большинство пользователей, вы бы выбрали:

1) MPEG-4 / H.264 (.mp4) 2) AVI / DiVX (.avi) 3) Ogg / Theora (.ogg) 4) Windows Media Video (.wmv)

Я склоняюсь к MPEG-4 / H.264, учитывая, что он поддерживается в Linux, Mac OS X, Flash-плеере, iPod, Playstation 3, XBox360, и ожидается поддержка в Microsoft Silverlight и Windows Media Player 12.

Я что-то упустил? Есть ли что-то лучшее, что я мог бы выбрать?

Ответы [ 3 ]

3 голосов
/ 20 ноября 2008

Это зависит от того, что делает ваше приложение. Если вы хотите обрабатывать видео, записанные с карты видеозахвата, вам, вероятно, понадобится прочитать файлы .mpg со встроенным mpeg2. Большое количество видео использует контейнер .avi или .wmv. Microsoft продвигает .wmv, но .avi имеет гораздо лучшую поддержку среди бесплатных инструментов. Не многие инструменты поддерживают контейнеры .mp4 в Windows (Mac, вероятно, отличается). H.264, mpeg2 и mpeg4 - мои любимые кодеки. H.264 - это отличное качество / битрейт, но он делает точный и быстрый поиск трудным и чрезвычайно ресурсоемким. С точки зрения качества / битрейта mpeg4 почти так же хорош, как и h.264, но он намного менее загружает процессор. mpeg2 требует гораздо больше битов для достижения того же качества, но он поддерживается практически везде, и его действительно легко декодировать и искать в этих файлах.

Если вы не возражаете против использования кода LGPL, я бы посоветовал взглянуть на ffmpeg libavcodec и libavformat. Это позволит вам делать все, что вы упоминаете на всех платформах (хотя я не уверен насчет Ogg & Theora - я не использовал их).

1 голос
/ 20 ноября 2008

Я думаю, что ваш первый вариант будет моим выбором. Я думаю, что большинство приложений могут читать этот формат, и он менее гибок.

Если я прав, файлы AVI / DIVX могут фактически содержать разные типы носителей, то же самое относится и к WMV. Это затрудняет использование этих форматов, поскольку вам необходимо поддерживать все кодировки.

0 голосов
/ 24 июля 2009

Прежде всего, у вас также будет звук в ваших видео? Если да, я бы пошел с mp3.

Теперь рассмотрим видеокодек и видеоконтейнер. Я думаю, что вы не должны рассматривать варианты 3 и 4 по разным причинам. Theora действительно непопулярна (я только что натолкнулся на видео theora), а WMV - это технология Microsoft, поэтому ваши возможности немного ограничены.

Теперь о первых двух: я бы пошел с видео DivX (Mpeg4 часть 2) в контейнере Avi. Это действительно популярно, так как большинство компьютеров и множество DVD-дисков способны воспроизводить такие видео. Также есть отличный кодек DIVX с открытым исходным кодом, XVID. Наконец, для кодирования и декодирования DIVX требуется гораздо меньше ресурсов, чем H.264. Последнее важно, поскольку в зависимости от параметров кодирования кодирование H.264 в реальном времени может даже не поддерживаться.

Отсутствие поддержки AVI / DIVX на ряде платформ не является проблемой, поскольку действительно легко перекодировать в любой формат с помощью инструментов с открытым исходным кодом.

...