FFmpeg
From Wikipedia, the free encyclopedia
Remove ads
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).
Remove ads
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]
Remove ads
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
- 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
.
Remove ads
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]:
Remove ads
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
Remove ads
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.
Remove ads
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.
Remove ads