2. diel - FFprobe - Analýza multimediálnych súborov
V minulej lekcii, Framework FFmpeg - Predstavenie a nastavenie , sme si predstavili framework FFmpeg a jeho súčasti. Keďže máme framework už nainštalovaný a pripravený, nič nám nebráni pustiť sa do prvej z jeho súčastí.
Samozrejme najdôležitejšie je najskôr zistiť informácie o
multimediálnom súbore. To sa vykonáva cez príkaz FFprobe.exe
.
Samozrejme to možno aj napriek FFmpeg.exe
, ale to riešiť
nebudeme. Podrobne je príkaz špecifikovaný tu.
Testovacie video
Aby sme mohli začať experimentovať, budeme potrebovať nejaké testovacie video. Pre začiatok si z uloz.to stiahneme nejakej 4K video (ak by odkaz prestal fungovať, stiahnite ľubovoľné iné). Uloz.to vám umožňuje prezrieť si v parametroch vlastnosti daného multimediálneho súboru. Podľa informácií z Ulož.to je rozlíšenie 3840x2160 pixelov, počet snímkov za sekundu, tzv. Snímkovacie frekvencia alebo framerate, 23.8 a veľkosť súboru je cca 224 MB.
Potom, čo si ho stiahneme, ho premenujeme na
video.mp4
, aby sme nemuseli stále vypisovať tak dlhý
názov súboru.
Daný video súbor nie je mojím upload. Ak už nebude dostupný, stiahnite si nejaké iné 4K video.
FFprobe
Vyskúšame teda čo FFprobe o danom súbore povie. A prevedieme to týmto príkazom:
ffprobe -i video.mp4
Parameter -i
určuje zdrojový súbor. výsledok:
Čo nám to teda hovorí o stopách v danom súbore?
Duration nám hovorí, že doba trvania je 43.47 sekundy. Celkový bitrate audia a videa je 43184 kilobitov / sekundu (43.184 Mb / s).
Stopy
Súbor obsahuje dve stopy (streamy). Video stopa označená ako Stream # 0: 0 a je uložená v kodeku h264. Kódovanie farebného spektra je spracované yuv420p, rozlíšenie je 3840x2160 (takže 4K), bitrate 43002 kb / sa počet snímkov 23.8 za sekundu.
Stopa audia označená ako Stream # 0: 1 je uložená v kodeku aac, vzorkovacej frekvencie (samplerate) je 44.1 kHz, počet kanálov je stereo (2 kanály) a bitrate je 192 kbit / sekundu.
Skrytie banneru
Ak nechceme vypisovať aj nepodstatné informácie o ffprobe
,
tak stačí pridať parameter (flag) -hide_banner
:
ffprobe -i video.mp4 -hide_banner
Všetky parametre
Ak chcete vidieť všetky parametre, ktorými príkaz ffprobe
disponuje (tzn. Vypísať nápovedu), stačí pridať parametre -h
,
-?
alebo -help
:
ffprobe -help
V prípade názvu súboru s medzerami je možné využiť úvodzovky, napr.
"šílené jméno SouboruX564.mkv"
:
ffprobe -i "šílené jméno SouboruX564.mkv"
Toto samozrejme bude fungovať aj v prípade príkazu
ffmpeg
.
Kľúčové vlastnosti video stôp
- Video kodek (Codecs) - Špecifikácie kompresného algoritmu, dá sa povedať, že čím novší, tým lepšie. Ide o dôležitý faktor pre kvalitu obrazu.
- Rozlíšenie (Resolution) - rozlíšenie predstavuje počet riadkov a počet stĺpcov obrazu. Čím vyššie rozlíšenie, tým lepší obraz. Poznáme typy rozlíšenie 4K (UHD = 3840x2160), FullHD (HD1080 = 1920x1080), HD (HD720 = 1280x720), VGA (NTSC = 640x480), a pod.,
- Počet snímok za sekundu (Framerate) - inak známe tiež ako snímkovacie frekvencie. Opäť čím vyššie číslo, tým lepší a plynulejší obraz.
- Dátový tok (bitrate) - inak známe tiež ako hustota dátového toku. Opäť čím vyššie číslo, tým lepšie, ostrejší a detailnejší obraz. Ide o kľúčový parameter ovplyvňujúce v kodeku kvalitu videa.
Kľúčové vlastnosti audio stôp
- Audio kodek (Codecs) - Špecifikácie kompresného algoritmu, dá sa povedať, že zas čím novšie, tým lepšie. Dôležitý faktor pre kvalitu zvuku.
- Kanály (Channels) - 1 kanál Mono, 2 kanály Stereo, 6 kanálov kino. Každý kanál je vlastný zvuková stopa zložená z početnosti snímania (sample rate) a bitovej hĺbky (Sample size). Všetky kanály sú uložené v jednom audio streamu (stope). Ak je zvuk uložený cez kodek, potom je zvuk v kanáli vyjadrený typom kodeku a dátovým tokom.
- Dátový tok (bitrate) - inak známy tiež ako hustota dátového toku. Opäť čím vyššie číslo, tým lepší zvuk. Ide o kľúčový parameter ovplyvňujúce kvalitu audia v kodeku. Dá sa povedať, že dátový tok predstavuje početnosť snímanie x hĺbku snímania.
- Frekvencia snímania zvukových vzoriek (Sample rate) - Sample (vzorka) je najmenšia jednotka z digitálnej interpretácie zvuku. Ide o počet vzoriek nahraných za sekundu. Čím vyššie číslo, tým plynulejší zvuk)
- Hĺbka snímania (Sample size) - Každému zvukovému vzorky je priradená bitová hĺbka (8, 16, 24 bitov). Prakticky by mala predstavovať hodnotu akustického tlaku v rôznych zvukových frekvencií. Hĺbka snímania a dátový tok nie je jedno a to isté.
Zobrazenie formátového výpisu súborového kontajnera
Ak použijeme parameter -show_format
, potom nám výpis
ffprobe
zobrazia informácie o formáte súboru (súborovom
kontajnera). Formátový výpis je výpis, v ktorom je jednoznačne
špecifikovaná vlastnosť a jej hodnota. Nevykonáva sa teda formátový výpis
pre jednotlivé streamy uložené v súborovom kontajneri. Skúsme si to:
ffprobe -i video.mp4 -hide_banner -show_format
výsledok:
Zobrazenie výpisov streamov uložených v súborovom kontajneri
Ak použijeme parameter -show_streams
, potom nám výpis
ffprobe
zobrazia informácie o jednotlivých streamoch uložených
v súborovom kontajneri. Streamy sú radené jeden za druhý. Ako vidíte v
priloženom obrázku, stream obsahuje skutočne veľa parametrov a do
priloženého screenshotu sa ani všetky nevošli:
ffprobe -i video.mp4 -hide_banner -show_streams
výsledok:
Export do JSON
Samozrejme možno vykonať výpis do JSON formátu:
ffprobe -i video.mp4 -v quiet -print_format json -show_streams
Ak výpis chceme uložiť aj do súboru, použijeme štandardné DOS syntax:
ffprobe -i video.mp4 -v quiet -print_format json -show_streams >> video.json
Export do XML
Samozrejme možno vykonať aj výpis do formátu XML:
ffprobe -i video.mp4 -v quiet -print_format xml -show_streams
Pokiaľ ho chceme uložiť aj do súboru, použijeme opäť štandardné DOS syntax:
ffprobe -i video.mp4 -v quiet -print_format xml -show_streams >> video.xml
Toto by vám malo stačiť na to, aby ste boli schopní úspešne konvertovať súbory multimédií. V budúcej lekcii, Ffmpeg a transcoding - Kontajner, Kodek , nás čaká transcoding čiže prevod multimédiami medzi rôznymi formátmi.