| Тип | Мультимедійна бібліотека |
|---|---|
| Автор | Фабріс Беллар, Боббі Бінгем (libavfilter) |
| Розробник | FFmpeg team |
| Перший випуск | 20 січня2000[1] |
| Стабільний випуск | 6.0 "Von Neumann"[2] (27 лютого2023; 2 роки тому (2023-02-27)) |
| Платформа | x86,ARM,PowerPC,MIPS,DEC Alpha, Blackfin,AVR32, SH-4 таSPARC; може бути скомпільований для інших настільних комп’ютерів |
| Операційна система | Багатоплатформове ПЗ |
| Мова програмування | С тамова асемблера |
| Стан розробки | активний |
| Ліцензія | LGPL-2.1 та новішої або GPL-2.0 та новішої; не розповсюджується, якщо скомпільовано з будь-яким програмним забезпеченням з ліцензією, несумісною з GPL |
| Онлайн-документація | ffmpeg.org/documentation.html |
| Репозиторій | git.ffmpeg.org/ffmpeg.git |
| Вебсайт | ffmpeg.org |
FFmpeg — це комплексвільнихкомп'ютерних програм тапрограмних бібліотек для обробки відео, аудіо та інших мультимедійних файлів і потоків. У його основі лежить сам інструмент командного рядкаffmpeg, призначений для обробки відео та аудіофайлів. Проєкт широко використовується для перекодування форматів, базового редагування (обрізка таконкатенація), масштабування відео, ефектів постпродакшн відео та для дотримання стандартів (SMPTE[en],ITU).
FFmpeg також включає інші інструменти:ffplay, простий медіа програвач таffprobe — інструменткомандного рядка для відображення медіа-інформації. Серед вхідних бібліотек єlibavcodec, бібліотека аудіо-/відео-кодеків, яка використовується багатьма комерційними та безкоштовними програмними продуктами,libavformat (Lavf)[3], бібліотекамультиплексування та демуксування аудіо/відео контейнерів, а такожlibavfilter, бібліотека для покращення та редагування фільтрів за допомогою фільтр-граф, схожий наGStreamer.[4]
FFmpeg є частиною робочого процесу багатьох інших програмних проєктів, а його бібліотеки є основною частиною медіапрогравачів, таких як VLC, також були включені в основу обробки дляYouTube і Bilibili.[5] У комплект входять кодери та декодери для багатьох форматів аудіо та відео файлів, що робить його дуже корисним для перекодування поширених і незвичайних медіафайлів.
FFmpeg публікується підLGPL-2.1 та новішої версії абоGPL-2.0 та новішої, залежно від того, які параметри ввімкнено.[6]
Проєкт був започаткованийФабрісом Белларом (використовуючипсевдонім «Жерар Лантау») у 2000 році, а з 2004 по 2015 рік його очолював Міхаель Нідермайєр. Деякі розробники FFmpeg також були частиною проєкту MPlayer, а сам FFmpeg був розміщений на сервері проєктуMPlayer.
Назва проєкту навіяна групою стандартів відеоMPEG разом із «FF» для «швидкої перемотування».[7] У логотипі використовуєтьсязигзагоподібний візерунок, який показує, як відеокодеки MPEG обробляютьентропійне кодування.
13 березня 2011 року група розробників FFmpeg вирішила розділити проєкт під назвою Libav.[8][9][10] Подія була пов’язана з проблемою в управлінні проєктами, у якій розробники не погодилися з керівництвом FFmpeg.[11][12]
10 січня 2014 року двоє співробітників Google оголосили, що протягом попередніх двох років у FFmpeg було виправлено понад 1000 помилок за допомогою fuzz-тестування.
У січні 2018 року програму командного рядка ffserver, який є давнім компонентом FFmpeg, було видалено.[13] Розробники відмовилися від програми, посилаючись на високі зусилля по обслуговуванню через використання внутрішніхінтерфейсів прикладного програмування.[14]
Проєкт публікує новий випуск у середньому кожні три місяці. Хоча версії випуску доступні на вебсайт для завантаження, розробники FFmpeg рекомендують користувачам компілювати програмне забезпечення звихідного коду, використовуючи останню збірку з їх вихідного коду системи контролю версійGit.[15]
Наразі в рамках проєкту FFmpeg створено два формати кодування відео з відповідними кодеками та один формат контейнера. Два відеокодеки – цеFFV1 (без втрат якості) та Snow (без втрат або з втратами). Розвиток відеокодека Snow зупинився, а його формат бітового потоку ще не завершено, що робить його експериментальним з 2011 року. Власним форматом мультимедійного контейнера є NUT, який більше активно не розвивається, але все ще підтримується.[16]
Влітку 2010 року розробники FFmpeg Фіона Глейзер, Рональд Бултьє та Девід Конрад анонсували декодерffvp8. За допомогою тестування вони визначили, що ffvp8 швидший, ніж власний декодер Googlelibvpx.[17] Починаючи з версії 0.6 FFmpeg також підтримуєWebM іVP8.[18]
У жовтні 2013 року до FFmpeg були додані власний відеокодекVP9[19], декодер OpenHEVC, декодер високоефективне кодування відеоH.265 (відомий ще як HEVC) з відкритим програмним кодом.[20] У 2016 році власний кодерAAC вважався стабільним, що призвело до зняття підтримки двох зовнішніх кодеків AAC від VisualOn та FAAC. FFmpeg 3.0 (під назвою «Einstein») зберіг підтримку для кодера Fraunhofer FDK AAC.[21] Серед помітних змін в порівнянні з попередніми версіями було поліпшено підтримку апаратного стиснення AAC, поліпшене апаратне пришвидшення стиснення інших алгоритмів. Проте було порушено сумісність програмного та двійкового інтерфейсу з попередніми версіями.[22] Починаючи з версії 3.4 «Cantor» FFmpeg підтримує формат зображенняFITS.[23] З листопада 2018 року у версії 4.1 «al-Khwarizmi»AV1 може мультиплікувати вMP4,Matroska таWebM.[24][25]
FFmpeg моє програмні реалізації алгоритмів стиснення та розпакування відео та аудіо. Таким чином їх можна компілювати та запускати на різних наборах інструкцій процесора.
Багато поширенихнаборів інструкцій підтримуються FFmpeg, включаючиx86 (IA-32 таx86-64), PPC (PowerPC),ARM,DEC Alpha,SPARC таMIPS.[28]
Існує безлічінтегральних схем (ASIC) для стиснення та декомпресії аудіо/відео. Ці ASIC можуть частково або повністю розвантажити обчислення з центрального процесора. Замість повної реалізації алгоритму для використання подібного ASIC потрібен лишеAPI.[29]
| Виробник | ASIC | призначення | підтримується FFmpeg? | Деталі |
|---|---|---|---|---|
| AMD | UVD | декодування | черезVDPAU API таVAAPI[30] | |
| VCE | кодування | черезVAAPI, вважається експериментальним | ||
| Amlogic | Amlogic Video Engine | декодування | ? | |
| BlackMagic | DeckLink | кодування/декодування | прийом та відтворення в режимі реального часу | |
| Broadcom | Crystal HD | декодування | ||
| Qualcomm | Hexagon | кодування/декодування | hwaccel[31] | |
| Intel | Intel Clear Video | декодування | ||
| Intel Quick Sync Video | кодування/декодування | |||
| Nvidia | PureVideo / NVDEC | декодування | черезVDPAU API від версії FFmpeg 1.2 (застарілий); черезCUVID API від версії FFmpeg 3.1 | |
| NVENC | кодування | починаючи з версії FFmpeg 2.6 |
Прискорення апаратне декодування включається за допомогою опції-hwaccel. Декодування починається у звичайному режимі, але якщо декодований потік підтримує апаратне забезпечення, тоді декодер призначає всю значну обробку цьому апаратному забезпеченню, таким чином прискорюючи процес декодування. Якщо потоки, які можна декодувати через апаратне забезпечення не виявлено (як це відбувається з непідтримуваним кодеком або профілем), тоді вони будуть декодовані програмним забезпеченням. Параметр-hwaccel_device застосовується, коли апаратне забезпечення потребує певного пристрою для роботи, особливо якщо доступно декілька графічних карт.
FFmpeg підтримує багато поширених та деякі незвичайні формати зображень.
Формат зображення PGMYUV є саморобним варіантом двійкового (P5) формату PGMNetpbm. FFmpeg також підтримує 16-бітову глибину форматів PGM і PPM, а також двійковий (P7) формат PAM з або без альфа-каналу, глибиною 8 або 16 біт дляpix_fmts monob, grey, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be.
На додаток до форматівFFV1 і Snow, які були створені та розроблені з FFmpeg, проєкт також підтримує такі формати:
| Група | Тип формату | Назва формату |
|---|---|---|
| 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[32] (MPEG-H Part 2), MPEG-4 VCB (також відомий як VP8),Motion JPEG, IECDV відео та CD+G |
| Аудіо | MP1,MP2,MP3,AAC, HE-AAC, MPEG-4 ALS,G.711 μ-law,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, G.729D, IEC DV аудіо таDirect Stream Transfer (також відомий як Super Audio CD) | |
| Субтитри | MPEG-4 Timed Text (також відомий як MPEG-4 Part 17 або 3GPP Timed Text) | |
| Зображення | JPEG, Lossless JPEG,JPEG-LS,JPEG 2000,JPEG XL,[33]PNG, CCITT G3 та CCITT G4 | |
| Alliance for Open Media | Відео | AV1[34] |
| EIA | Субтитри | EIA-608 |
| CEA | Субтитри | CEA-708 |
| SMPTE | Відео | SMPTE 314M (також відомий як DVCAM і DVCPRO), SMPTE 370M (також відомий як DVCPRO HD), VC-1 (також відомий як WMV3), VC-2 (відомий як Dirac Pro), VC-3 (також відомий як AVID DNxHD) |
| Аудіо | SMPTE 302M | |
| Зображення | DPX | |
| ATSC/ETSI/DVB | Аудіо | Full Rate (GSM 06.10), AC-3 (Dolby Digital), Enhanced AC-3 (Dolby Digital Plus) та DTS Coherent Acoustics (також відомий як DTS або DCA) |
| Субтитри | DVB Subtitling (ETSI 300 743) | |
| DVD Forum/Dolby | Аудіо | MLP /Dolby TrueHD |
| Субтитри | DVD-Video субтитри | |
| Xperi/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 Music Codec 1 та 2 |
| Blu-ray Disc Association | Субтитри | PGS (Presentation Graphics Stream) |
| 3GPP | Аудіо | AMR-NB, AMR-WB (також відомий як G.722.2) |
| 3GPP2 | Аудіо | QCELP-8 (також відомий як SmartRate або IS-96C), QCELP-13 (також відомий як PureVoice або IS-733) та Enhanced Variable Rate Codec (EVRC. також відомий як IS-127) |
| World Wide Web Consortium | Відео | Анімовані GIF |
| Субтитри | WebVTT | |
| Зображення | GIF таSVG (черезlibrsvg) | |
| IETF | Відео | FFV1 |
| Аудіо | iLBC (через libilbc),Opus та Comfort noise | |
| International Voice Association | Аудіо | DSS-SP |
| SAC | Відео | AVS відео, AVS2 відео (через libdavs2) та AVS3 відео (через libuavs3d) |
| Microsoft | Відео | Microsoft RLE, Microsoft Video 1, Cinepak, MicrosoftMPEG-4 v1, v2 і v3,Windows Media Video (WMV1, WMV2, WMV3/VC-1), WMV Screen та Mimic кодек |
| Аудіо | Windows Media Audio (WMA1, WMA2, WMA Pro та WMA Lossless),XMA (XMA1 і XMA2), MSN Siren, MS-GSM та MS-ADPCM | |
| Субтитри | SAMI | |
| Зображення | Windows Bitmap, WMV Image (WMV9 Image і WMV9 Image v2),DirectDraw Surface таMSP | |
| Interactive Multimedia Association | Аудіо | IMA ADPCM |
| Intel /Digital Video Interactive | Відео | RTV 2.1 (Indeo 2), Indeo 3, 4 and 5 та Intel H.263 |
| Аудіо | DVI4 (також відомий як IMA DVI ADPCM), Intel Music Coder та Indeo Audio Coder | |
| RealNetworks | Відео | RealVideo Fractal Codec (також відомий як Iterated Systems ClearVideo), 1, 2, 3 та 4 |
| Аудіо | RealAudio v1 – v10 | |
| Субтитри | RealText | |
| Apple / Spruce Technologies | Відео | Cinepak (Apple Compact Video),ProRes, Sorenson 3 Codec, QuickTime Animation (Apple Animation), QuickTime Graphics (Apple Graphics), Apple Video, Apple Intermediate Codec та Pixlet |
| Аудіо | ALAC | |
| Зображення | QuickDrawPICT | |
| Субтитри | Spruce subtitle (STL) | |
| Adobe Flash Player (SWF) | Відео | Screen video, Screen video 2, Sorenson Spark та VP6 |
| Аудіо | Adobe SWFADPCM і Nellymoser Asao | |
| Adobe / Aldus | Зображення | TIFF,PSD таDNG |
| Xiph.Org | Відео | Theora |
| Аудіо | Speex,Vorbis,Opus таFLAC | |
| Субтитри | Ogg Writ | |
| Sony | Аудіо | Adaptive Transform Acoustic Coding (ATRAC1, ATRAC3, ATRAC3Plus та ATRAC9)[35] та PSX ADPCM |
| NTT | Аудіо | TwinVQ |
| Google / On2 / GIPS | Відео | Duck TrueMotion 1, Duck TrueMotion 2, Duck TrueMotion 2.0 Real Time, VP3, VP4, VP5, VP6, VP7, VP8, VP9[36] та анімовані WebP |
| Аудіо | DK ADPCM Audio 3/4, On2 AVC та iLBC (через libilbc) | |
| Зображення | WebP | |
| Epic Games / RAD Game Tools | Відео | Smacker відео та Bink відео |
| Аудіо | Blink аудіо | |
| CRI Middleware | Аудіо | ADX ADPCM та HCA |
| Nintendo / NERD | Відео | Mobiclip відео |
| Аудіо | GCADPCM (також відомий як ADPCM THP), FastAudio та ADPCM IMA MOFLEX | |
| DSP Group | Аудіо | Truespeech |
| Electronic Arts /Criterion Games / Black Box Games / Westwood Studios | Відео | RenderWare TXD, Madcow, CMV, TGV, TGQ, TQI, Midivid VQ (MVDV), MidiVid 3.0 (MV30), Midivid Archival (MVHA) та Vector Quantized Animation (VQA) |
| Аудіо | Electronic Arts ADPCM variants | |
| Netpbm | Зображення | PBM, PGM, PPM, PNM, PAM та PFM |
| MIT/X Consortium/The Open Group | Зображення | XBM,XPM та xwd |
| HPE / SGI /Silicon Graphics | Відео | Silicon Graphics RLE 8-бітне відео, Silicon Graphics MVC1/2 |
| Зображення | Silicon Graphics Image | |
| Oracle/Sun Microsystems | Зображення | Sun Raster |
| IBM | Відео | IBM UltiMotion |
| Avid Technology / Truevision | Відео | Avid 1:1x, Avid Meridien, Avid DNxHD та DNxHR |
| Зображення | Tagra | |
| Autodesk / Alias | Відео | Autodesk Animator Studio Codec та FLIC |
| Зображення | Alias PIX | |
| Activision Blizzard /Activision / Infocom | Аудіо | ADPCM Zork |
| Konami / Hudson Soft | Відео | HVQM4 Video |
| Аудіо | Konami MTAF, and ADPCM IMA HVQM4 | |
| Grass Valley / Canopus | Відео | HQ, HQA, HQX and Lossless |
| Vizrt / NewTek | Відео | SpeedHQ |
| Зображення | Vizrt Binary Image | |
| Academy Software Foundation / ILM | Зображення | OpenEXR |
| Mozilla Corporation | Відео | APNG |
| Matrox | Відео | Matrox Uncompressed SD (M101) / HD (M102) |
| AMD/ATI | Відео | ATI VCR1/VCR2 |
| Asus | Відео | ASUS V1/V2 кодек |
| Commodore | Відео | CDXL кодек |
| Kodak | Зображення | Photo CD |
| Blackmagic Design / Cintel | Зображення | Cintel RAW |
| Houghton Mifflin Harcourt / The Learning Company / ZSoft Corporation | Зображення | PCX |
| Australian National University | Зображення | X-Face |
| Bluetooth Special Interest Group | Аудіо | SBC та mSBC |
| Qualcomm / CSR | Аудіо | QCELP,aptX таaptX HD |
Дані можна передавати без обробки через -c copy. Одним зі способів є вирізання відеозапису без необхідності часу та обробки перекодування.
Вихідні формати (формати контейнерів та інші способи створення вихідних потоків) у FFmpeg називаються «муксерами» (від словаmuxers). FFmpeg підтримує наступні:[37]
FFmpeg підтримує багато форматів пікселів.[38] Деякі з цих форматів підтримуються лише в якостівхідних (відангл.input) форматів.
| Тип | Колірна модель | Упакований піксель | Планарність | Палітра | |||
|---|---|---|---|---|---|---|---|
| Без альфа-каналу | Зальфа-каналом | Без альфа-каналу | З альфа-каналом | Кольорове перемежування | З альфа-каналом | ||
| Монохромія | Бінарне (1-бітна монохромія) | monoblack, monowhite | — | — | — | — | — |
| Відтінки сірого | 8/9/10/12/14/16 bpp[p 1] | — | — | 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/BGR | 24/30[p 2]/48bpp | 32[p 3]/64bpp | — | — | — | 8bit->32bpp | |
| GBR[p 4] | — | — | 8/9/10/12/14/16bpc | 8/10/12/16bpc | — | — | |
| RGBз рухомою комою | GBR | — | — | 32bpc | 32bpc | — | — |
| YUV | YVU 4:1:0 | — | — | (9bpp (YVU9))[p 5] | — | — | — |
| YUV 4:1:0 | — | — | 9bpp | — | — | — | |
| YUV 4:1:1 | 8bpc (UYYVYY) | — | 8bpc | — | (8bpc (NV11)) | — | |
| YVU 4:2:0 | — | — | (8bpc (YV12))[p 5] | — | 8 (NV21) | — | |
| YUV 4:2:0 | — | — | 8[p 6]/9/10/12/14/16bpc | 8/9/10/16bpc | 8 (NV12)/10 (P010)/16bpc (P016) | — | |
| YVU 4:2:2 | — | — | (8bpc (YV16))[p 5] | — | (8bpc (NV61)) | — | |
| YUV 4:2:2 | 8 (YUYV[p 7] і UYVY)/10bpc (Y210)[p 8] | — | 8[p 9]/9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV16)/10 (NV20 and P210)/16bpc (P216) | — | |
| YUV 4:4:0 | — | — | 8/10/12bpc | — | — | — | |
| YVU 4:4:4 | — | — | (8bpc (YV24))[p 5] | — | 8bpc (NV42) | — | |
| YUV 4:4:4 | (10 (Y410) і 16bpc (Y416)) | 16bpc[p 10] | 8[p 11]/9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV24)/10 (P410)/ 16bpc (P416) | — | |
| XYZ | XYZ 4:4:4[p 12] | 12bpc | — | — | — | — | — |
| Баєра | BGGR/RGGB/GBRG/GRBG | 8/16bppp | — | — | — | — | — |
FFmpeg не підтримує IMC1-IMC4, AI44, CYMK, RGBE, Log RGB та інші формати. Він також ще не підтримує ARGB 1:5:5:5, 2:10:10:10 або інші формати бітових полів BMP, які зазвичай не використовуються.
FFmpeg містить понад 100 кодеків,[42] більшість із яких використовує ті чи інші методи стиснення. Багато таких методів стиснення можуть бути предметом юридичних претензій щодопатентів на програмне забезпечення.[43] Такі претензії можуть мати позовну силу в таких країнах, якСполучені Штати Америки, які запровадили патенти на програмне забезпечення, але вважаються такими, що не мають позовної сили або є недійсними, наприклад, у країнах-членахЄвропейського Союзу.[44] Термін дії патентів на багато старіших кодеків, включаючи AC3 і всі кодеки MPEG-1 і MPEG-2, закінчився.
FFmpeg ліцензується згідно з ліцензією LGPL, але якщо певна збірка FFmpeg пов’язана з будь-якою бібліотекою GPL (зокрема, x264), тоді весь двійковий файл ліцензується під ліцензією GPL.
FFmpeg використовується програмним забезпеченням, таким якBlender,Cinelerra-GG Infinity,HandBrake,Kodi,MPC-HC, Plex, Shotcut, VirtualDub2 (форкVirtualDub),[45]медіаплеєр VLC,xine іYouTube.[46][47] Він керує відтворенням відео та аудіо вGoogle Chrome[47] і версіїFirefox дляLinux.[48] Було розроблено інтерфейс графічного інтерфейсу для FFmpeg, включаючи Multimedia Xpert[49] і XMedia Recode.
FFmpeg використовуєтьсяffdshow, FFmpegInterop, плагіном GStreamer FFmpeg, фільтрами LAV і OpenMAX IL для розширення можливостей кодування та декодування відповідних мультимедійних платформ.
У рамках місіїНАСАМарс 2020 FFmpeg використовуєтьсямарсоходом Perseverance для стиснення зображень і відео перед відправкою на Землю.[50]
Примітка: Важливо, щоб параметри були вказані в правильному порядку (наприклад, вхід, відео, фільтри, аудіо, вихід). Якщо цього не зробити, параметри можуть бути пропущені або запобігти виконанню FFmpeg.[51]
Переглянути інформацію про будь-який медіафайла:[52]
$ ffprobe вхідний-файл.mkv
Об’єднання потрібних файлів, наприкладVOB-файли, в один потік і мультиплексування їх уMPEG-2:
$ cat вхідний-0.VOB вхідний-1.VOB вхідний-2.VOB | ffmpeg -i - вихідний_відео_файл.mp2
Мультиплексування одного формата в інший, в данном прикладіMPEG-4 вAVI таMPEG-3 вWAV:
$ ffmpeg -i вхідний_відео_файл.mp4 вихідний_відео_файл.avi
$ ffmpeg -i вхідний_аудіо_файл.mp3 вихідний_аудіо_файл.wav
...with VLC, Boxee, MythTV, Handbrake and MPlayer being some of the more popular projects utilizing FFmpeg...[Архівовано 2010-06-20 уWayback Machine.]
{{citation}}:Зовнішнє посилання в|title= (довідка){{cite news}}: Обслуговування CS1: Сторінки з PMC з іншим форматом (посилання)It is important that parameters are specified in the correct order (e.g. input, video, filters, audio, output). Failing to do so may cause parameters being skipped or will prevent FFmpeg from executing.