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.

