FFmpeg je svobodný a otevřený multimediální framework, který se skládá ze sady knihoven a programů pro práci s videem, zvukem a dalšími multimediálními soubory a datovými proudy. Jeho jádrem je samotný nástroj ffmpeg pro příkazový řádek, určený pro zpracování video a audio souborů. Je široce používán pro překódování formátů, základní úpravy (stříhání a spojování), škálování videa, postprodukční efekty videa a dodržování standardů (SMPTE, Mezinárodní telekomunikační unie).
FFmpeg obsahuje také další nástroje: ffplay, jednoduchý přehrávač médií, a ffprobe, nástroj příkazového řádku pro zobrazení informací o médiích. Mezi obsažené knihovny patří libavcodec, knihovna audio/video kodeků používaná mnoha komerčními i svobodnými softwarovými produkty, libavformat (Lavf), knihovna pro multiplexování audio/video kontejnerů, a libavfilter, knihovna pro vylepšování a úpravu filtrů přes filtrgraf, podobný Gstreameru.
FFmpeg je součástí pracovních postupů mnoha dalších softwarových projektů a jeho knihovny jsou základní součástí softwarových přehrávačů médií, jako je VLC, a byl zahrnut do jádra pro zpracování videí YouTube a BiliBili. Obsahuje kodéry a dekodéry pro mnoho formátů zvukových a video souborů, takže je velmi užitečný pro překódování běžných i neobvyklých mediálních souborů.
FFmpeg je zveřejněn pod licencí LGPL (verze 2.1 či novější) nebo GPL (verze 2.0 či novější), podle toho, které možnosti jsou povoleny.
Historie Projekt založil vývojář Fabrice Bellard (pod pseudonymem Gerard Lantau) a v současnosti jej udržuje Michael Niedermayer. FFmpeg je vyvíjen pod systémem Linux, ale může být zkompilován pod většinou operačních systémů (včetně Microsoft Windows).
Součásti
Projekt se skládá z několika komponent.
Nástroje ffmpeg je utilita pro příkazový řádek pro konverzi video formátů. Podporuje také grabování a kódování v reálném čase z TV karty. ffplay je jednoduchý multimediální přehrávač založený na SDL a knihovnách FFmpeg. ffprobe je jednoduchý analyzátor multimediálních streamů. Odstraněno od verze 4.0: ffserver je HTTP a RTSP multimediální streamovací server pro živá broadcastová vysílání. Podporuje také posun času.
Knihovny libavcodec je knihovna obsahující všechny audio a video kodéry a dekodéry. Většina kodeků byla vyvinuta s úsilím pro maximální výkon a znovupoužitelnost kódu. libavformat je knihovna obsahující demuxery a muxery pro audio/video kontejnerové formáty. libavutil je pomocná knihovna obsahující rutiny společné pro jednotlivé části kolekce FFmpeg. libavdevice je knihovna umožňuje komunikovat se zařízeními přes mnoho multimediálních rozhraní (Video4Linux, Video4Linux2, Video for Windows, ALSA). libpostproc je knihovna obsahující rutiny pro postprocessing videa. libavfilter je knihovna obsahující filtry (efekty, filtry OpenCV a frei0r). libswscale je knihovna obsahující rutiny pro změnu rozlišení a barevného modelu videa. libswresample, libavresample jsou knihovny implementující optimalizované převzorkování audia a změnu jeho formátu.
FFmpeg je uvolněn pro LGPL nebo GPL (závisí na konkrétní knihovně / části kódu).
Vývojáři FFmpeg rozkryli (reverzním inženýrstvím) a reimplementovali následující formáty (kvůli tomu může být část projektu v některých zemích nelegální): Sorenson 3 Codec použitý v mnoha filmech pro QuickTime Advanced Streaming Format Windows Media Audio Windows Media Video QDesign Music Codec 2, použitý v mnoha filmech pro QuickTime před verzí QuickTime 7.
Standardní MPEG-4 kodek použitý v FFmpeg má přiřazen FourCC kód FMP4.
Funkce FFmpeg
Kódování – zakóduje data podle kompresního algoritmu Dekódování – dekóduje data zakódované kompresním algoritmem Překódování (transcode) – překóduje soubor do jiného kontejneru Spojování stop (mux) – kombinuje několik stop do jednoho kontejneru Odstraňování stop (demux) – odstraní nebo rozdělí soubor na více stop Vysílání na síť – vysílá soubor ve formě proudu Úprava přes filtry – provede filtry na soubory Přehrávání – přehrává soubory
Hardwarová podpora FFmpeg je vícevláknový program. Podporuje akceleraci přes grafické karty. Podporuje architektury x86, PPC (PowerPC), ARM, DEC Alpha, SPARC, a MIPS.
FFmpeg podporuje následující aplikačně specifické integrované obvody (anglicky application-specific integrated circuit): ASIC Podpora v FFmpeg UVD Dekódování VCE Kódování Crystal HD Dekódování Hexagon Kódování a dekódování Intel Clear Video Dekódování Intel Quick Sync Video Kódování a dekódování PureVideo/NVDEC Dekódování
Ukázka použití Následující kód demonstruje použití FFmpeg na otevření souboru s videem. #include <avcodec.h> #include <avformat.h>
int main(int argc, char *argv[]) { av_register_all();
AVFormatContext *pFormatCtx;
if(av_open_input_file(&pFormatCtx, argv, NULL, 0, NULL) != 0) return -1; …
Grafy filtrů
FFmpeg umožňuje specifikovat na příkazové řádce graf filtrů, kterým mají multimediální data procházet. Následující příkaz vloží před zobrazení snímků filtr, který překlopí obraz podle vertikální osy. ffplay -vf vflip clock.avi Filtrům je možno předávat parametry. Další příkaz vloží to řetězce filtr, který provede ořez snímku. Ořez má rozměry pixelů a počíná na souřadnicích (0,0). ffplay -vf crop=256:256:0:0 clock.avi Poslední příkaz zařadí řetězec filtrů. Každý snímek je nejprve transponován, a poté negován. ffplay -vf "transpose, negate" clock.avi
Historie vydání
Majoritní verze FFmpegu vycházejí přibližně každé 3 měsíce. Mezi majoritními verzemi jsou vydávány pouze opravy důležitých chyb.
větev krycí jméno první vydání poslední vydání aktivní vývoj7.1Péter2024-09-302025-03-03ano7.0Dijkstra2024-04-052024-08-03ano6.1Heaviside2023-11-102024-08-02ne6.0Von Neumann2023-02-282023-11-10ne5.1Riemann2022-07-222024-08-05ne5.0Lorentz2022-01-172022-04-04ne4.4Rao2021-04-082022-04-14ne4.34:32020-06-152022-04-16ne4.2Ada2019-08-052022-04-16ne 4.1 al-Khwarizmi 2018-11-06 2022-04-17 - 4.0Wu2018-04-202020-07-03ne 3.4 Cantor 2017-10-15 2022-04-22 - 3.3Hilbert2017-04-132018-11-18ne 3.2 Hypatia 2016-10-27 2022-04-23 - 3.1Laplace2016-06-272017-09-25ne 3.0 Einstein 2016-02-15 2018-10-28 ne 2.8 Feynman 2015-09-09 2021-10-21 ne 2.7 Nash 2015-06-10 2016-04-30 ne 2.6 Grothendieck 2015-03-07 2016-05-03 ne 2.5 Bohr 2014-12-04 2016-02-02 ne 2.4 Fresnel 2014-09-14 2017-12-31 ne 2.3 Mandelbrot 2014-07-16 2015-01-06 ne 2.2 Muybridge 2014-03-23 2015-06-18 ne 2.1 Fourier 2013-10-28 2015-04-30 ne 2.0 Nameless 2013-07-10 2015-06-10 ne 1.2 Magic 2013-03-15 2015-02-12 ne 1.1 Fire Flower 2013-01-07 2015-03-13 ne 1.0 Angel 2012-09-28 2014-07-20 ne 0.11 Happiness 2012-05-25 2014-03-10 ne 0.10 Freedom 2012-01-27 2015-03-12 ne 0.9 Harmony 2011-12-11 2014-03-21 ne 0.8 Love 2011-06-21 2013-10-06 ne 0.7 Peace 2011-06-21 2015-03-12 ne 0.6 Works with HTML5 2010-06-15 2013-09-23 ne 0.5 half-way to world domination A.K.A. the belligerent blue bike shed 2009-03-10 2014-11-29 ne
Zajímavost V letech 2020 a 2021 NASA uskutečnilo misi Mars 2020, kde jejich vozítko Perseverance použilo FFmpeg pro kompresi fotografií a videa odeslaného zpět na Zemi.
Reference
Související články MPlayer a MEncoder (využívající libavcodec a libavformat) ffdshow (využívající libavcodec) xine (využívající libavcodec) VLC media player (využívající libavcodec)
Externí odkazy
Ohlédnutí za historií projektu FFmpeg: čtvrt století digitálního videa Oficiální stránka projektu FFmpeg (anglicky) Oficiální stránka projektu Libav (anglicky)
Kategorie:Video kodeky Kategorie:Audio kodeky Kategorie:Svobodný multimediální software Kategorie:Multimediální frameworky Kategorie:Svobodné kodeky Kategorie:Svobodný software v C Kategorie:Software v jazyce symbolických adres Kategorie:Software pod licencí GPL Kategorie:Software pod licencí LGPL