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

StackOverflow https://stackoverflow.com/questions/305773

Вопрос

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

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.

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

Это было полезно?

Решение

Это зависит от того, что делает ваше приложение. Если вы хотите обрабатывать видео, записанные с карты видеозахвата, вам, вероятно, понадобится прочитать файлы .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 - я не использовал их).

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top