FFmpeg

редактировать
FFmpeg
FFmpeg Logo new.svg
FFmpeg, работающий в Arch Linux FFmpeg, работающий на Arch Linux
Автор (ы) Фабрис Беллард
Разработчик Команда FFmpeg
Первоначальный выпуск20 декабря 2000 г.; 19 лет назад (20.12.2000)
Стабильный выпуск 4.3.1 (11 июля 2020 г.; 3 месяца назад (2020-07-11))
Предварительный выпуск Git
Репозиторий git.ffmpeg.org / ffmpeg.git
Написано наC и Сборке
Операционная система Разное, в том числе Windows, macOS и Linux (исполняемые программы доступны только у третьих лиц, так как проект распространяется только исходный код )
Платформа x86, ARM, PowerPC, MIPS, DEC Alpha, Blackfin, AVR32, SH-4 и SPARC ; может быть скомпилирован для других настольных компьютеров
Тип Мультимедийный фреймворк
Лицензия LGPL 2.1+, GPL 2 +. Не подлежит распространению, если скомпилирован с любым программным обеспечением с лицензией, несовместимой с GPL
Веб-сайтffmpeg.org

FFmpeg - это бесплатное программное обеспечение с открытым исходным кодом, состоящее из большого набора библиотек и программы для обработки видео, аудио и других мультимедийных файлов и потоков. В ее основе лежит сама программа FFmpeg, разработанная для командной строки обработки видео и аудио файлов. Он широко используется для перекодирования формата , базового редактирования (обрезка и конкатенация ), масштабирования видео, эффектов и стандартов видео пост-продакшн. соответствие (SMPTE, ITU ).

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

FFmpeg является частью рабочего процесса сотен других программных проектов, а его библиотеки являются основной частью программных медиаплееров, таких как VLC, и были включены в базовую обработку для YouTube и iTunes. Включены кодеки для кодирования и / или декодирования большинства форматов аудио- и видеофайлов, что делает его очень полезным для перекодирования обычных и необычных файлов мультимедиа в единый общий формат.

Название проекта навеяно группой стандартов видео MPEG вместе с «FF» для «быстрой перемотки вперед». В логотипе используется шаблон зигзаг, который показывает, как видеокодеки MPEG обрабатывают энтропийное кодирование.

FFmpeg публикуется под Стандартной общественной лицензией ограниченного применения GNU 2.1+ или GNU. Стандартная общественная лицензия 2+ (в зависимости от того, какие опции включены).

Содержание

  • 1 История
    • 1.1 История кодеков
    • 1.2 Форки
  • 2 Компоненты
    • 2.1 Инструменты командной строки
    • 2.2 Библиотеки
  • 3 Поддерживаемое оборудование
    • 3.1 ЦП
    • 3.2 Оборудование специального назначения
    • 3.3 Использование с утилитой FFmpeg
  • 4 Поддерживаемые кодеки и форматы
    • 4.1 Форматы изображений
    • 4.2 Поддерживаемые форматы
    • 4.3 Muxers
    • 4.4 Форматы пикселей
  • 5 Поддерживаемые протоколы
    • 5.1 Открытые стандарты
    • 5.2 Стандарты де-факто
  • 6 Поддерживаемые фильтры
    • 6.1 Аудио
    • 6.2 Видео
  • 7 Приложения
    • 7.1 Правовые аспекты
    • 7.2 Проекты, использующие FFmpeg
  • 8 См. Также
  • 9 Ссылки
  • 10 Внешние ссылки

История

Проект был запущен Фабрис Беллар (под псевдонимом «Жерар Лантау») в 2000 г., С 2004 по 2015 год его возглавлял Майкл Нидермайер. Некоторые разработчики FFmpeg также были частью проекта MPlayer.

10 января 2014 года два сотрудника Google объявили, что более 1000 ошибок было исправлено в FFmpeg за предыдущие два года с помощью нечеткого тестирования.

В январе 2018 года командная строка ffserver Программа - давний компонент FFmpeg - была удалена. Разработчики ранее не рекомендовали программу, ссылаясь на большие усилия по обслуживанию из-за использования внутренних интерфейсов прикладного программирования.

Проект публикует новую версию в среднем каждые три месяца. Хотя версии выпуска доступны для загрузки на веб-сайте, разработчики FFmpeg рекомендуют пользователям компилировать программное обеспечение из исходного кода, используя последнюю сборку из их исходного кода Git системы контроля версий.

История кодеков

На данный момент в рамках проекта FFmpeg созданы два формата кодирования видео с соответствующими кодеками и один формат контейнера . Два видеокодека - это кодек без потерь FFV1 и кодек Snow без потерь и с потерями. Разработка Snow застопорилась, а его формат битового потока еще не завершен, что делает его экспериментальным с 2011 года. Формат мультимедийных контейнеров под названием NUT больше не разрабатывается, но все еще поддерживается.

Летом 2010 года, Фиона Глейзер, Рональд Бултье и Дэвид Конрад из команды FFmpeg объявили о декодере ffvp8. В ходе тестирования они определили, что ffvp8 быстрее, чем собственный декодер libvpx от Google. Начиная с версии 0.6, FFmpeg также поддерживал WebM и VP8.

. В октябре 2013 года собственный VP9 и декодер OpenHEVC, высокоэффективное видео с открытым исходным кодом Кодирование (HEVC) декодер были добавлены в FFmpeg. В 2016 году собственный кодировщик AAC считался стабильным, в результате чего поддержка двух внешних кодировщиков AAC была удалена из VisualOn и FAAC. FFmpeg 3.0 (по прозвищу «Эйнштейн») сохранил поддержку сборки для кодировщика Fraunhofer FDK AAC. Начиная с версии 3.4 "Cantor" FFmpeg поддерживает формат изображения FITS. С ноября 2018 года в версии 4.1 «аль-Хорезми» AV1 можно мультиплексировать в MP4 и Matroska вкл. WebM.

Форки

13 марта 2011 года группа разработчиков FFmpeg решила форкнуть проект под названием «Libav ». Событие было связано с проблемой в управлении проектом, в которой разработчики не согласились с руководством FFmpeg.

Компоненты

Инструменты командной строки

  • ffmpeg - это инструмент командной строки, который конвертирует аудио или видео форматы. Он также может захватывать и кодировать в реальном времени из различных источников оборудования и программного обеспечения, таких как карта видеозахвата.
  • ffplay - это простой медиаплеер, использующий SDL и библиотеки FFmpeg.
  • ffprobe - это инструмент командной строки для отображения мультимедийной информации (текст, CSV, XML, JSON ), см. Также Mediainfo.

Библиотеки

  • libswresample - это библиотека, содержащая процедуры ресэмплинга аудио.
  • libavresample - это библиотека, содержащая процедуры ресэмплинга аудио из проекта Libav, аналогичные libswresample из ffmpeg.
  • libavcodec - это библиотека, содержащая все встроенные аудио / видео кодеры и декодеры FFmpeg. Большинство кодеков были разработаны с нуля для обеспечения максимальной производительности и высокой возможности повторного использования кода.
  • libavformat (Lavf) - это библиотека, содержащая демультиплексоры и мультиплексоры для форматов контейнеров аудио / видео.
  • libavutil - вспомогательная библиотека содержащие процедуры, общие для разных частей FFmpeg. Эта библиотека включает хэш-функции (Adler-32, CRC, MD5, RIPEMD, SHA-1. SHA-2, MurmurHash 3, HMAC MD-5, HMAC SHA-1 и HMAC SHA-2), шифры (DES, RC4, AES, AES-CTR, TEA, XTEA, Blowfish, CAST- 128, Twofish и Camellia ), LZO декомпрессор и Base64 encoder/decoder.
  • libpostproc - это библиотека, содержащая старые подпрограммы постобработки видео на основе h263.
  • libswscale - это библиотека, содержащая видео масштабирование изображения и процедуры преобразования цветового пространства / формат пикселей.
  • libavfilter - это заменитель vhook, который позволяет изменять или проверять видео / аудио между декодером и кодером. Фильтры были перенесены из многих проектов, включая MPlayer и avisynth.

Поддерживаемое оборудование

ЦП

FFmpeg включает программные реализации алгоритмов сжатия и распаковки видео и аудио.. Их можно скомпилировать и запустить на различных наборах инструкций.

Многие широко распространенные наборы команд поддерживаются FFmpeg, включая x86 (IA-32 и x86-64 ), PPC (PowerPC ), ARM, DEC Alpha, SPARC и MIPS.

Специальное оборудование

Существуют различные специализированные интегральные схемы (ASIC), относящиеся к сжатию и декомпрессии видео и аудио. Такие ASIC могут частично или полностью выполнять вычисления для декомпрессии или сжатия аудио / видео, чтобы разгрузить их от центрального процессора. Чтобы использовать такую ​​ASIC, вместо полной реализации какого-либо алгоритма требуется только API. Доступно множество ASIC и API, некоторые из которых поддерживаются FFmpeg.

ФирмаASICназначениеподдерживается FFmpegПодробнее
AMDUVD декодированиечерез VDPAU API и VAAPI
VCE кодированиечерез VAAPI, рассматривается экспериментальный
AmlogicAmlogic Video Engine декодирование?
BlackMagicDeckLinkкодирование / декодированиезахват и воспроизведение в реальном времени
BroadcomCrystal HD декодирование
IntelIntel Clear Video декодирование
Intel Quick Sync Video кодирование / декодирование
NvidiaPureVideo / NVDEC декодированиечерез VDPAU API начиная с FFmpeg v1.2 (устарело). через CUVID API начиная с FFmpeg v3.1
NVENC с кодировкойкак of FFmpeg v2.6

Использование с утилитой FFmpeg

Внутреннее аппаратное ускорение декодирования включается с помощью параметра -hwaccel. Он начинает декодирование нормально, но если декодируемый поток обнаруживается аппаратными средствами, тогда декодер назначает всю значительную обработку этому оборудованию, тем самым ускоряя процесс декодирования. Принимая во внимание, что если декодируемые потоки не обнаружены (как это происходит с неподдерживаемым кодеком или профилем), аппаратное ускорение будет пропущено, и оно все равно будет декодироваться программно. Параметр -hwaccel_deviceприменяется, когда оборудование требует для работы определенного устройства, особенно если доступно несколько графических карт.

Поддерживаемые кодеки и форматы

Форматы изображений

FFmpeg поддерживает множество распространенных и некоторые необычные форматы изображений.

Формат изображения PGMYUV - это домашний вариант двоичного (P5) PGM формата Netpbm. FFmpeg также поддерживает 16-битную глубину форматов PGM и PPM, а также двоичный (P7) PAM формат с альфа-каналом или без него, глубина 8 или 16 бит для моноблока pix_fmts, серый, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be.

Поддерживаемые форматы

В дополнение к форматам FFV1 и Snow, которые были созданы и разработаны в рамках FFmpeg, проект также поддерживает следующие форматы:

GroupТип форматаНазвание формата
ISO / IEC / ITU-T ВидеоMPEG-1 Part 2, H.261 (Px64), H.262 / MPEG-2 Part 2, H.263, MPEG-4 Part 2, H.264 / MPEG-4 AVC, HEVC / H.265 (MPEG-H Part 2), MPEG-4 VCB (также известный как VP8), Motion JPEG, IEC DV видео и CD + G
AudioMP1, MP2, MP3, AAC, HE-AAC, MPEG-4 ALS, G.711 μ-закон, G.711 A-law, G.721 (он же G.726 32k), G.722, G.722.2 (он же AMR-WB), G.723 (он же G.726 24k и 40k), G.723.1, G. 726, G.729, IEC DV аудио и прямая потоковая передача
субтитрыMPEG-4 Timed Tex t (он же 3GPP Timed Text)
ИзображениеJPEG, JPEG без потерь, JPEG-LS, JPEG 2000, PNG, CCITT G3 и CCITT G4
Alliance for Open Media VideoAV1
EIA SubtitleEIA-608
CEA СубтитрыCEA-708
SMPTE ВидеоSMPTE 314M (он же DVCAM и DVCPRO ), SMPTE 370M (он же DVCPRO HD ), VC-1 (он же WMV3), VC-2 (он же Dirac Pro), VC-3 (он же AVID DNxHD )
Аудио
АудиоПолная скорость (GSM 06.10), AC-3 (Dolby Digital ), Enhanced AC-3 (Dolby Digital Plus ) и DTS Coherent Acoustics (также известный как DTS или DCA)
ИзображениеDPX
ATSC / ETSI / DVB СубтитрыСубтитры DVB (ETSI 300 743)
DVD Forum / Dolby АудиоMLP / Dolby TrueHD
СубтитрыСубтитры DVD-Video
DTS, Inc / QDesign АудиоDTS Coherent Acoustics (также известный как DTS или DCA), DTS Extended Surround (также известный как DTS-ES), DTS 96/24, DTS-HD High Resolution Audio, DTS Express (также известный как DTS-HD LBR), DTS-HD Master Audio, QDesign Музыкальные кодеки 1 и 2
Ассоциация дисков Blu-ray СубтитрыPGS (поток графики презентации)
3GPP АудиоAMR- NB, AMR-WB (он же G.722.2)
3GPP2 АудиоQCELP -8 (он же SmartRate или IS-96C), QCELP-13 ( aka PureVoice или IS-733) и Enhanced Variable Rate Codec (EVRC. aka IS-127)
Консорциум World Wide Web ВидеоАнимированный GIF
СубтитрыWebVTT
ИзображениеGIF и SVG (через librsvg )
IETF AudioiLBC (через libilbc), Opus и Комфортный шум
International Voice AssociationАудиоDSS-SP
SAC ВидеоВидео AVS
Microsoft ВидеоMicrosoft RLE, Microsoft Video 1, Cinepak, Indeo (v2, v3, v4 и v5), Microsoft MPEG-4 v1, v2 и v3, Windows Media Video (WMV1, WMV2, WMV3 / VC-1 ), экран WMV и кодек Mimic
AudioWindows Media Audio (WMA1, WMA2, WMA Pro и WMA Lossless), XMA (XMA1 и XMA2), MS-GSM и MS-ADPCM
СубтитрыSAMI
ИзображениеРастровое изображение Windows, WMV Image (WMV9 Image и WMV9 Image v2) и DirectDraw Surface
Interactive Multimedia Association AudioIMA ADPCM
Digital Video Interactive VideoRTV 2.1 (Intel Indeo 2)
AudioАудиокодек DVI4
RealNetworks VideoRealVideo Fractal Codec (также известный как Iterated Systems ClearVideo), 1, 2, 3 и 4
АудиоRealAudio v1 - v10
Субтитры
Apple / Spruce TechnologiesВидеоCinepak (Apple Compact Video), ProRes, Кодек Sorenson 3, QuickTime Animation (Apple Animation), QuickTime Graphics ( Apple Graphics), Apple Video, Apple Intermediate Codec и Pixlet
AudioALAC
ImageQuickDraw PICT
СубтитрыЕловые субтитры (STL)
Adobe Flash Player (SWF)ВидеоЭкранное видео, Экранное видео 2, Sorenson Spark и VP6
AudioAdobe SWF ADPCM и Nellymoser Asao
Aldus / AdobeИзображениеTIFF, PSD и DNG
Xiph.Org ВидеоTheora
АудиоSpeex (через libspeex ), Vorbis, Opus и FLAC
SubtitleOgg Writ
Sony AudioAdaptive Transform Акустическое кодирование (ATRAC 1, ATRAC3, ATRAC3Plus и ATRAC9) и PSX ADPCM
NTT АудиоTwinVQ
On2 / GIPS / Google ВидеоDuck TrueMotion 1, Duck TrueMotion 2, Duck TrueMotion 2.0 Real Time, VP3, VP4, VP5, VP6, VP7, VP8, VP9 и анимированный WebP
AudioDK ADPCM Audio 3/4 и iLBC (через libilbc)
ИзображениеWebP
RAD Game Tools ВидеоSmacker video и Bink video
AudioBink audio
Промежуточное ПО CRI АудиоADX ADPCM и HCA
Nintendo / NERD ВидеоВидео Mobiclip
АудиоGCADPCM (он же ADPCM THP), FastAudio и ADPCM IMA MOFLEX
DSP Group AudioTruespeech
Electronic Arts / Criterion Games / Black Box Games ВидеоRenderWare TXD, Madcow, CMV, TGV, TGQ, TQI, Midivid VQ (MVDV), MidiVid 3.0 (MV30) и Midivid Archival (MVHA)
АудиоElectronic Arts Варианты ADPCM
Netpbm ИзображениеPBM, PGM, PPM, PNM, PAM и PFM
Консорциум MIT / X / The Open Group ИзображениеXBM, XPM и xwd
HPE / SGI / Silicon Graphics ВидеоSilicon Graphics RLE 8-битное видео, Silicon Graphics MVC1 / 2
ИзображениеИзображение Silicon Graphics
Oracle / Sun Microsystems ИзображениеSun Raster
IBM Видео
Avid Технологии / Truevision ВидеоAvid 1: 1x, Avid Meridien, Avid DNxHD и DNxHR
ИзображениеTarga
Autodesk / Псевдоним ВидеоКодек Autodesk Animator Studio и FLIC
ИзображениеПсевдоним PI X
Grass Valley / Canopus VideoHQ, HQA, HQX and Lossless
NewTek VideoSpeedHQ
/ ILM ИзображениеOpenEXR
Mozilla Corporation ВидеоAPNG
Matrox ВидеоMatrox без сжатия SD (M101) / HD (M102)
AMD /ATI VideoATI VCR1 / VCR2
Asus VideoASUS V1 / V2 codec
Commodore VideoCDXL кодек
Kodak ИзображениеPhoto CD
Blackmagic Design / Cintel ИзображениеCintel RAW
Houghton Mifflin Harcourt / The Learning Company / ZSoft CorporationИзображениеPCX
Bell Labs ИзображениеX-Face
Специальная группа по интересам Bluetooth АудиоSBC и mSBC
Qualcomm АудиоQCELP, aptX и aptX HD

Muxers

Форматы вывода (форматы контейнеров и другие способы создания потоков вывода) в FFmpeg называются «мультиплексорами». FFmpeg поддерживает, среди прочего, следующее:

Форматы пикселей

FFmpeg поддерживает множество форматов пикселей. Некоторые из этих форматов поддерживаются только как входные форматы. Команда ffmpeg -pix_fmtsпредоставляет список поддерживаемых форматов пикселей.

ТипЦветУпаковано Планарное Палитра
Без альфа-каналаС альфа Без альфаС альфа-каналомс чередованием цветностиС альфа-каналом
Монохромный Двоичный (1-битный монохромный)монохромный, монохромный-----
Оттенки серого 8/9/10/12/14 / 16bpp--16 / 32bpp--
RGB RGB 1: 2: 1 (4-битный цвет)4bpp-----
RGB 3: 3: 2 (8-битный цвет )8bpp-----
RGB 5: 5: 5 (High color )16bpp-----
RGB 5: 6: 5 ( High color)16bpp-----
RGB / BGR24/30 / 48bpp32 / 64bpp---8bit->32bpp
GBR--8/9/10/12/14 / 16bpc8/10/12 / 16bpc--
RGB Float GBR--32bpc32bpc--
YUV YVU 4: 1: 0--(9bpp (YVU9))---
YUV 4: 1: 0--9bpp---
YUV 4: 1: 18bpc (UYYVYY)-8bpc-(8bpc (NV11))-
YVU 4: 2: 0--(8bpc (YV12))-8 (NV21)-
YUV 4: 2: 0--8/9/10/12/14/16 бит / канал8/9/10/16 бит / канал8 (NV12) / 10 (P010) / 16 бит / канал (P016)-
YVU 4 : 2: 2--(8bpc (YV16))-(8bpc (NV61))-
YUV 4: 2: 28bpc (YUYV и UYVY)-8/9 / 10/12/14/16 бит / канал8/9/10/12/16 бит / канал8 (NV16) / 10 бит / канал (NV20 он же P21 0)-
YUV 4: 4: 0--8/10 / 12bpc---
YVU 4: 4: 4--(8bpc (YV24))-8bpc (NV42)-
YUV 4: 4: 4(10 (Y410) и 16bpc (Y416))16bpc8/9/10/12/14 / 16bpc8/9/10/12 / 16bpc8bpc (NV24)-
XYZ XYZ 4: 4: 412bpc-----
Bayer BGGR / RGGB / GBRG / GRBG8 / 16bpp-----
  1. ^10-битные компоненты цвета с 2-битным заполнением (X2RGB10)
  2. ^Также поддерживаются RGBx (rgb0) и xBGR (0bgr)
  3. ^, используемые в YUV- центрические кодеки, такие как H.264
  4. ^ YVU9, YV12, YV16 и YV24, поддерживаются как кодек rawvideo в FFmpeg.
  5. ^I420 a.k.a. YUV420P
  6. ^aka YUY2 в Windows
  7. ^Y210 (YUYV 10bpc) не поддерживается. UYVY 10bpc без заполнения поддерживается как битовый кодек в FFmpeg. UYVY 10bpc с 2-битным заполнением поддерживается как кодек v210 в FFmpeg. 16bpc (Y216) поддерживается как кодек targa_y216 в FFmpeg.
  8. ^I422 aka YUV422P
  9. ^16bpc (P216) не поддерживается
  10. ^8bpc (AYUV) не поддерживается
  11. ^I444 aka YUV444P
  12. ^используется в JPEG2000

FFmpeg не поддерживает IMC1-IMC4, AI44, CYMK, RGBE, Log RGB и другие форматы. Он также еще не поддерживает ARGB 1: 5: 5: 5, 2: 10: 10: 10 или другое битовое поле BMP форматы, которые обычно не используются.

Поддерживаемые протоколы

Открытые стандарты

Стандарты де-факто
  • RTSP через TLS
  • Icecast протокол
  • Adobe RTMP, RTMPT, RTMPE, RTMPTE и RTMPS
  • RealMedia RTSP / RDT

Поддерживаемые фильтры

FFmpeg поддерживает, среди прочего, следующие фильтры.

Аудио

Видео

Приложения

Юридические аспекты

FFmpeg содержит более 100 кодеков, большинство из которых используют те или иные методы сжатия. Многие такие методы сжатия могут быть предметом судебных исков, связанных с патентами на программное обеспечение. Такие иски могут иметь исковую силу в таких странах, как США, которые внедрили патенты на программное обеспечение, но считаются не имеющими исковой силы или недействительными, например, в странах-членах Европейского Союза. Срок действия патентов на многие старые кодеки, включая AC3 и все кодеки MPEG-1 и MPEG-2, истек.

FFmpeg находится под лицензией LGPL, однако, если конкретная сборка FFmpeg связана с любыми библиотеками GPL (в частности, x264 ), то весь двоичный файл лицензируется по GPL.

Проекты, использующие FFmpeg

FFmpeg используется таким программным обеспечением, как VLC media player, xine, Shotcut, Видеоредактор Cinelerra-GG, Plex, Kodi, Blender, HandBrake, YouTube, VirtualDub2, ответвление VirtualDub и MPC-HC ; он обрабатывает воспроизведение видео и аудио в Google Chrome и версии Firefox для Linux. Графический пользовательский интерфейс Разработаны внешние интерфейсы для FFmpeg, включая XMedia Recode.

FFmpeg используется ffdshow, LAV Filters, подключаемым модулем GStreamer FFmpeg, Perian, OpenMAX IL и FFmpegInterop для расширения возможностей кодирования и декодирования соответствующей мультимедийной платформы.

См. Также

  • Портал бесплатного программного обеспечения с открытым исходным кодом

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-20 07:26:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте