FFmpeg

From Wikipedia, the free encyclopedia

FFmpeg

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]:  

Další informace ASIC, Podpora v FFmpeg ...
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í
Zavřít

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.

Další informace větev, krycí jméno ...
větev krycí jméno první vydání poslední vydání aktivní vývoj
5.0 Lorentz[9] 2022-01-17 2022-04-04 ano
4.4 Rao[9] 2021-04-08 2022-04-14 ano
4.3 4:3[9] 2020-06-15 2022-04-16 ano
4.2 Ada[9] 2019-08-05 2022-04-16 ano
4.1al-Khwarizmi2018-11-062022-04-17ano
4.0Wu2018-04-202020-07-03ne
3.4Cantor2017-10-152022-04-22ano
3.3Hilbert2017-04-132018-11-18ne
3.2Hypatia2016-10-272022-04-23ano
3.1Laplace2016-06-272017-09-25ne
3.0Einstein2016-02-152018-10-28ne
2.8Feynman2015-09-092021-10-21ne
2.7Nash2015-06-102016-04-30ne
2.6Grothendieck2015-03-072016-05-03ne
2.5Bohr2014-12-042016-02-02ne
2.4Fresnel2014-09-142017-12-31ne
2.3Mandelbrot2014-07-162015-01-06ne
2.2Muybridge2014-03-232015-06-18ne
2.1Fourier2013-10-282015-04-30ne
2.0Nameless2013-07-102015-06-10ne
1.2Magic2013-03-152015-02-12ne
1.1Fire Flower2013-01-072015-03-13ne
1.0Angel2012-09-282014-07-20ne
0.11Happiness2012-05-252014-03-10ne
0.10Freedom2012-01-272015-03-12ne
0.9Harmony2011-12-112014-03-21ne
0.8Love2011-06-212013-10-06ne
0.7Peace2011-06-212015-03-12ne
0.6Works with HTML52010-06-152013-09-23ne
0.5half-way to world domination A.K.A. the belligerent blue bike shed2009-03-102014-11-29ne
Zavřít

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

Související články

Externí odkazy

Wikiwand - on

Seamless Wikipedia browsing. On steroids.