FFmpeg

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
FFmpeg
Logo
FFmpeg.png
Vývojář FFmpeg tým
Aktuální verze 4.4 (8. dubna 2021)
Operační systém multiplatformní software
Platforma x86
architektura ARM
PowerPC
Architektura MIPS
DEC Alpha
Blackfin
AVR32
SPARC
Vyvíjeno v C, jazyk symbolických adres a C++
Typ softwaru multimediální framework
Licence LGPL nebo GPL
Web ffmpeg.org
Některá data mohou pocházet z datové položky.

FFmpeg je kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku (audia) a obrazu (videa). Kolekce zahrnuje libavcodec – nejdůležitější knihovnu pro kompresi audia a videa. 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ě Windows). Projekt založil vývojář Fabrice Bellard (pod pseudonymem Gerard Lantau) a v současnosti jej udržuje Michael Niedermayer. Mnoho vývojářů FFmpeg zároveň pracuje na projektu MPlayer. FFmpeg dokonce sídlil na serveru projektu MPlayer. Kvůli sporům mezi vývojáři vznikl 13. března 2011 fork projektu s názvem Libav.[1][2]

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.[3]

Součásti[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  • 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[4]

Hardwarová podpora[editovat | editovat zdroj]

FFmpeg je vícevláknový program. Podporuje akceleraci přes grafické karty.[5] 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)[6]:  

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í[editovat | editovat zdroj]

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ů[editovat | editovat zdroj]

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í[editovat | editovat zdroj]

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
4.4 Rao[7] 2021-04-08 2021-04-08 ano
4.3 4:3[8] 2020-06-15 2021-02-20 ano
4.2 Ada[9] 2019-08-05 2020-07-09 ano
4.1 al-Khwarizmi 2018–11–06 2020–07–04 ano
4.0 Wu 2018–04–20 2020–07–03 ano
3.4 Cantor 2017–10–15 2020–07–03 ano
3.3 Hilbert 2017–04–13 2018–11–18 ano
3.2 Hypatia 2016–10–27 2020–07–02 ano
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 2020–07–07 ano
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

Reference[editovat | editovat zdroj]

  1. A Group Of FFmpeg Developers Just Forked As Libav [online]. Phoronix, 2011-03-14 [cit. 2011-03-17]. Dostupné online. (anglicky) 
  2. Libav News [online]. Libav, 2011-03-13 [cit. 2011-03-17]. Dostupné online. (anglicky) 
  3. 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) 
  4. MICHALOVIČ, Robert. Lekce 1 - Framework FFmpeg - Představení a nastavení. www.itnetwork.cz [online]. [cit. 2021-04-16]. Dostupné online. (česky) 
  5. HWAccelIntro – FFmpeg. trac.ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online. 
  6. HWAccelIntro – FFmpeg. trac.ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online. 
  7. FFmpeg. ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online. 
  8. FFmpeg. ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online. 
  9. FFmpeg. ffmpeg.org [online]. [cit. 2021-04-16]. Dostupné online. 

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]