FFmpeg je svobodný a otevřený softwarový projekt, 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),[1] knihovna pro multiplexování audio/video kontejnerů, a libavfilter, knihovna pro vylepšování a úpravu filtrů přes filtrgraf, podobný Gstreameru.[2]
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.[3] 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.[4]
Historie
Projekt založil vývojář Fabrice Bellard (pod pseudonymem Gerard Lantau) a v současnosti jej udržuje Michael Niedermayer.[5][6] 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
- 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í):
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[7]
Hardwarová podpora
FFmpeg je vícevláknový program. Podporuje akceleraci přes grafické karty.[8] 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)[8]:
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[1], 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ývoj
|
7.1
|
Péter
|
2024-09-30
|
2025-03-03
|
ano
|
7.0
|
Dijkstra
|
2024-04-05
|
2024-08-03
|
ano
|
6.1
|
Heaviside
|
2023-11-10
|
2024-08-02
|
ne
|
6.0
|
Von Neumann
|
2023-02-28
|
2023-11-10
|
ne
|
5.1
|
Riemann
|
2022-07-22
|
2024-08-05
|
ne
|
5.0
|
Lorentz[9]
|
2022-01-17
|
2022-04-04
|
ne
|
4.4
|
Rao[9]
|
2021-04-08
|
2022-04-14
|
ne
|
4.3
|
4:3[9]
|
2020-06-15
|
2022-04-16
|
ne
|
4.2
|
Ada[9]
|
2019-08-05
|
2022-04-16
|
ne
|
4.1 |
al-Khwarizmi |
2018-11-06 |
2022-04-17 |
-
|
4.0
|
Wu
|
2018-04-20
|
2020-07-03
|
ne
|
3.4 |
Cantor |
2017-10-15 |
2022-04-22 |
-
|
3.3
|
Hilbert
|
2017-04-13
|
2018-11-18
|
ne
|
3.2 |
Hypatia |
2016-10-27 |
2022-04-23 |
-
|
3.1
|
Laplace
|
2016-06-27
|
2017-09-25
|
ne
|
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.[10]
Reference
V tomto článku byl použit překlad textu z článku FFmpeg na anglické Wikipedii.
- ↑ FFmpeg: Lavf: I/O and Muxing/Demuxing Library [online]. [cit. 2016-10-21]. Dostupné online. Je zde použita šablona
{{Cite web}}
označená jako k „pouze dočasnému použití“.
- ↑ Libavfilter Documentation [online]. [cit. 2021-10-07]. Dostupné online. Je zde použita šablona
{{Cite web}}
označená jako k „pouze dočasnému použití“.
- ↑ ijkplayer. [s.l.]: bilibili, 2021-10-05. Dostupné online. Je zde použita šablona
{{Citation}}
označená jako k „pouze dočasnému použití“.
- ↑ FFmpeg License and Legal Considerations [online]. ffmpeg.org [cit. 2012-01-04]. Dostupné online. Je zde použita šablona
{{Cite web}}
označená jako k „pouze dočasnému použití“.
- ↑ A Group Of FFmpeg Developers Just Forked As Libav [online]. Phoronix, 2011-03-14 [cit. 2011-03-17]. Dostupné online. (anglicky)
- ↑ Libav News [online]. Libav, 2011-03-13 [cit. 2011-03-17]. Dostupné v archivu pořízeném dne 2011-06-05. (anglicky)
- ↑ MICHALOVIČ, Robert. Lekce 1 - Framework FFmpeg - Představení a nastavení. www.itnetwork.cz [online]. [cit. 2021-04-16]. Dostupné online.
- ↑ a b HWAccelIntro – FFmpeg. trac.ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online.
- ↑ a b c d FFmpeg. ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online.
- ↑ MAKI, J. N.; GRUEL, D.; MCKINNEY, C. The Mars 2020 Engineering Cameras and Microphone on the Perseverance Rover: A Next-Generation Imaging System for Mars Exploration. Space Science Reviews. 2020-11-24, roč. 216, čís. 8, s. 137. Dostupné online [cit. 2021-04-16]. ISSN 1572-9672. doi:10.1007/s11214-020-00765-9. PMID 33268910. (anglicky)
Související články
Externí odkazy