IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

Výpis FFprobe z FFmpeg - Úprava audio a video souborů pomocí frameworku FFmpeg

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:

Vlastnosti videa - Úprava audio a video souborů pomocí frameworku FFmpeg

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:

Vlastnosti - Úprava audio a video souborů pomocí frameworku FFmpeg

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.


 

Předchozí článek
Framework FFmpeg - Představení a nastavení
Všechny články v sekci
Úprava audio a video souborů pomocí frameworku FFmpeg
Přeskočit článek
(nedoporučujeme)
FFmpeg a transcoding - Kontejner, Kodek
Článek pro vás napsal Robert Michalovič
Avatar
Uživatelské hodnocení:
3 hlasů
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity