Lekce 2 - FFprobe - Analýza multimediálních souborů
V minulé lekci, Framework FFmpeg - Představení a nastavení, jsme si představili framework FFmpeg a jeho součásti.
Jelikož máme framework již nainstalovaný a připravený, nic nám
nebrání pustit se do první z jeho součástí. Samozřejmě
nejdůležitější je nejdříve zjistit informace o multimediálním souboru.
To se provádí přes příkaz FFprobe.exe
. Samozřejmě to lze i
přes FFmpeg.exe
, ale to řešit nebudeme. Podrobně je příkaz
specifikován zde.
Testovací video
Abychom mohli začít experimentovat, budeme potřebovat nějaké testovací video. Pro začátek si z uloz.to stáhneme nějaké 4K video (pokud by odkaz přestal fungovat, stáhněte libovolné jiné). Uloz.to vám umožňuje prohlédnout si v parametrech vlastnosti daného multimediálního souboru. Dle informací z ulož.to je rozlišení 3840x2160 pixelů, počet snímků za sekundu, tzv. snímkovací frekvence neboli framerate, 23.8 a velikost souboru je cca 224 MB.
Poté, co si ho stáhneme, jej přejmenujeme na
video.mp4
, abychom nemuseli stále vypisovat tak dlouhý
název souboru.
Daný video soubor není mým uploadem. Pokud již nebude dostupný, stáhněte si nějaké jiné 4K video.
FFprobe
Vyzkoušíme tedy co FFprobe o daném souboru řekne. A provedeme to tímto příkazem:
ffprobe -i video.mp4
Parametr -i
určuje zdrojový soubor. Výsledek:

Co nám to tedy říká o stopách v daném souboru?
Duration nám říká, že doba trvání je 43.47 sekundy. Celkový bitrate audia a videa je 43184 kilobitů/sekundu (43.184 Mb/s).
Stopy
Soubor obsahuje dvě stopy (streamy). Video stopa označená jako Stream #0:0 a je uložena v kodeku h264. Kódování barevného spektra je zpracováno yuv420p, rozlišení je 3840x2160 (takže 4K), bitrate 43002 kb/s a počet snímků 23.8 za sekundu.
Stopa audia označená jako Stream #0:1 je uložena v kodeku aac, vzorkovací frekvence (samplerate) je 44.1 kHz, počet kanálů je stereo (2 kanály) a bitrate je 192 kbit/sekundu.
Skrytí banneru
Pokud nechceme vypisovat i nepodstatné informace o ffprobe
, tak
stačí přidat parametr (flag) -hide_banner
:
ffprobe -i video.mp4 -hide_banner
Všechny parametry
Pokud chcete vidět všechny parametry, kterými příkaz
ffprobe
disponuje (tzn. vypsat nápovědu), stačí přidat
parametry -h
, -?
nebo -help
:
ffprobe -help
V případě názvu souboru s mezerami je možné využít uvozovky, např.
"šílené jméno SouboruX564.mkv"
:
ffprobe -i "šílené jméno SouboruX564.mkv"
Toto samozřejmě bude fungovat i v případě příkazu
ffmpeg
.
Klíčové vlastnosti video stop
- Video kodek (Codecs) - Specifikace kompresního algoritmu, dá se říci, že čím novější, tím lepší. Jedná se o důležitý faktor pro kvalitu obrazu.
- Rozlišení (Resolution) - Rozlišení představuje počet řádků a počet sloupců obrazu. Čím vyšší rozlišení, tím lepší obraz. Známe typy rozlišení 4K (UHD = 3840x2160), FullHD (HD1080 = 1920x1080), HD (HD720 = 1280x720), VGA (NTSC = 640x480), apod. ,
- Počet snímků za sekundu (Framerate) - jinak známé také jako snímkovací frekvence. Opět čím vyšší číslo, tím lepší a plynulejší obraz.
- Datový tok (bitrate) - jinak známé také jako hustota datového toku. Opět čím vyšší číslo, tím lepší, ostřejší a detailnější obraz. Jedná se o klíčový parametr ovlivňující v kodeku kvalitu videa.
Klíčové vlastnosti audio stop
- Audio kodek (Codecs) - Specifikace kompresního algoritmu, dá se říci, že zas čím novější, tím lepší. Důležitý faktor pro kvalitu zvuku.
- Kanály (Channels) - 1 kanál Mono, 2 kanály Stereo, 6 kanálů kino. Každý kanál je vlastní zvuková stopa složená z četnosti snímání (sample rate) a bitové hloubky (Sample size). Všechny kanály jsou uložené v jednom audio streamu (stopě). Pokud je zvuk uložen přes kodek, pak je zvuk v kanálu vyjádřen typem kodeku a datovým tokem.
- Datový tok (bitrate) - jinak známý také jako hustota datového toku. Opět čím vyšší číslo, tím lepší zvuk. Jedná se o klíčový parametr ovlivňující kvalitu audia v kodeku. Dá se říci, že datový tok představuje četnost snímání x hloubku snímání.
- Četnost snímání zvukových vzorků (Sample rate) - Sample (vzorek) je nejmenší jednotka u digitální interpretace zvuku. Jedná se o počet vzorků nahraných za sekundu. Čím vyšší číslo, tím plynulejší zvuk
- Hloubka snímání (Sample size) - Každému zvukovému vzorku je přiřazena bitová hloubka (8, 16, 24 bitů). Prakticky by měla představovat hodnotu akustického tlaku v různých zvukových frekvencí. Hloubka snímání a datový tok není jedno a to samé.
Zobrazení formátového výpisu souborového kontejneru
Pokud použijeme parametr -show_format
, pak nám výpis
ffprobe
zobrazí informace o formátu souboru (souborovém
kontejneru). Formátový výpis je výpis, ve kterém je jednoznačně
specifikovaná vlastnost a její hodnota. Neprovádí se tedy formátový výpis
pro jednotlivé streamy uložené v souborovém kontejneru. Zkusme si to:
ffprobe -i video.mp4 -hide_banner -show_format
Výsledek:

Zobrazení výpisů streamů uložených v souborovém kontejneru
Pokud použijeme parametr -show_streams
, pak nám výpis
ffprobe
zobrazí informace o jednotlivých streamech uložených v
souborovém kontejneru. Streamy jsou řazeny jeden za druhý. Jak vidíte v
přiloženém obrázku, stream obsahuje skutečně mnoho parametrů a do
přiloženého screenshotu se ani všechny nevešly:
ffprobe -i video.mp4 -hide_banner -show_streams
Výsledek:

Export do JSON
Samozřejmě lze provést výpis do JSON formátu:
ffprobe -i video.mp4 -v quiet -print_format json -show_streams
Pokud výpis chceme uložit i do souboru, použijeme standardní DOS syntaxi:
ffprobe -i video.mp4 -v quiet -print_format json -show_streams >> video.json
Export do XML
Samozřejmě lze provést i výpis do formátu XML:
ffprobe -i video.mp4 -v quiet -print_format xml -show_streams
Pokud jej chceme uložit i do souboru, použijeme opět standardní DOS syntaxi:
ffprobe -i video.mp4 -v quiet -print_format xml -show_streams >> video.xml
Toto by vám mělo stačit k tomu, abyste byli schopni úspěšně konvertovat soubory multimédií.
V příští lekci, FFmpeg a transcoding - Kontejner, Kodek, nás čeká transcoding neboli převod multimédii mezi různými formáty.