2013-05-27 5 views
4

Из wiki, я прочитал, чтоЧто такое ffmpeg, avcodec, x264?

FFmpeg является свободным программным проектом, который производит библиотеки и программы для обработки мультимедийных данных. Наиболее заметными частями FFmpeg являются libavcodec, библиотека аудио/видео кодеков, используемая несколькими другими проектами , libavformat, мультия аудио/видео контейнеров и библиотека demux, и программа командной строки ffmpeg для перекодирования мультимедийных файлов.

Так что ffmpeg является оберткой avcodec? И я часто слышу, что люди кодируют видео с помощью x264 с помощью ffmpeg. Итак, ffmpeg также является оберткой x264?

Как они относятся?

ответ

19

Прежде всего, чтобы прояснить некоторые термины:

  • FFmpeg представляет собой программный проект с большим количеством людей, вовлеченных, Вики, ошибка, трекер, некоторые средства и т.д.
  • ffmpeg является одним из инструменты, которые они предлагают (другие - ffplay и qt-faststart, например).
  • Libav является развилкой проекта FFmpeg, который снабжает двоичным кодом avconv. Они оба развиваются независимо, но FFmpeg обычно сливается с Либавом, а не наоборот. (Некоторые могут сказать, что Ливав страдает от NIH). Некоторые дистрибутивы решили отправить Libav вместо программ FFmpeg, в частности Ubuntu, что вызвало некоторую путаницу в переходный период, когда команда Libav по-прежнему была названа ffmpeg. Теперь Ubuntu снова использует «реальный» ffmpeg.

Инструмент ffmpeg, как вы сказали, обертка командной строки для ряда библиотек, предназначенных для обработки мультимедийного контента. К ним относятся:

  • кодек, для encoding and decoding аудио, видео и битовых потоков субтитров
  • libavformat, для muxing and demuxing контейнеров
  • libavfilter, для применения a variety of filters на аудио, видео и субтитры
  • libswscale, который scales images and video или resamples audio
  • libavresample, который был первоначально перенесен в Libav, а затем интегрирован в FFmpeg. См. this thread для получения дополнительной информации об истории.

Хотя разработчики FFmpeg часто предоставляют свои собственные кодеры и декодеры, вы можете включить сторонние библиотеки, которые имеют упаковщик в кодеке для того, чтобы «клей» вместе FFmpeg и, скажем, x264, который является наиболее популярными H .264. Это часто делается, когда просто нет смысла «изобретать колесо», что было бы, если бы кто-то решил написать новый кодер H.264 с целью быть лучше, чем x264. В других случаях некоторые библиотеки не могут быть отправлены с помощью сборки ffmpeg по причинам, связанным с лицензированием, например libfaac. В этом случае ffmpeg предлагает собственный кодер AAC.

Общие внешние датчики включают в себя:

  • libx264
  • libvpx (для VP8 и VP9 видео)
  • libfaac, libfdk-AAC, libvo-aacenc для AAC аудио
  • libmp3lame
  • libvorbis
  • libxvid

Для всех тех, которые вы найдете обертки под libavcodec, например. для libx264, the file libx264.c содержит необходимый код, чтобы вывести видео из внутреннего формата FFmpeg в кодировщик x264, а затем передать это на libavformat, чтобы записать его в файл. Фактическое кодирование выполняется через libx264.

Как уже упоминалось ранее, другие кодеры, такие как the one for MPEG-4, являются родными для FFmpeg и вообще не полагаются на внешние библиотеки.

И наконец, there are several programs, которые используют инструменты и библиотеки FFmpeg, будь то предоставление ffmpeg исполняемого файла или выбор частей библиотек libavcodec и libavformat. Это разрешено по лицензии и делает FFmpeg самой популярной коллекцией мультимедийных инструментов сегодня.

+0

- часть кодека h263 ffmpeg? – onmyway133

+1

FFmpeg's H.263 кодеки являются родными, да. – slhck

+0

Возможно, упоминается, что встроенный AAC enc теперь стабилен. – Mulvya