6. diel - Ffmpeg a Transcoding - Audio
V minulej lekcii, Ffmpeg a transcoding - Strihanie, skladanie, výrezy , sme si skúsili strihanie videa, skladanie viac videí do jedného, výrezy a zmenu rýchlosti. Pretože sme venovali pomerne dosť priestoru videu (obrazu), bolo by vhodné sa venovať aj audiu (zvuku)
Ffmpeg - Audio
Princíp je stále identický. V súborovom kontajnera je audio reprezentované ako stopa (stream) s určitými vlastnosťami (viď. Lekcie FFprobe - Analýza multimediálnych súborov). Vlastnosti audio stôp sú kanály, dátový tok, kodek, frekvencia snímania a hĺbka snímania.
Opäť platí rovnaké pravidlo ako u videa, z horšie nahrávky lepšiu nahrávku neurobíte. Respektíve môžeme vytvoriť nahrávku s väčšou veľkosťou súboru, ale na jej kvalitu to nemá žiadny efekt. Informácie sa vytvárať nedajú.
Konfigurovať kvalitu audio stopy môžeme nasledujúcimi parametrami:
-c:a
- nastaví typ audio kodeku, napr.mp3
,aac
,flac
-b:a
alebo-ab
- nastaví hustotu dátového toku z audio stopy-ar
- nastaví audio frekvenciu (frekvencia snímania), napr.22050
,44100
,48000
Hz-ac
- nastaví audio kanály-f
- špecifikuje výstupný súborový kontajner (súborový formát)
Transcoding audio súborov
V tejto časti sa budeme opakovať, ale vnímajte to len ako súhrn.
Transcoding audia je úplne analogický ako transcoding u videa. Najskôr si
stiahneme nejaký audio súbor, napr. Nejaký
flac a daný súbor si z premenujeme na
hudba.flac
. Tento súbor si teraz zanalyzujeme pomocou
ffprobe
:
ffprobe -i hudba.flac
výsledok:
Počas prehliadky sme zistili, že súbor obsahuje aj tzv. "Video stopu" obsahujúci nejaký obrázok * .jpg. Dĺžka audio stopy je 1: 51.51 (skoro 2 minúty), kodek je typu flac a bitrate 1680 kb / s. Pretože je nahrávka stereo, obsahuje teda 2 kanály a frekvencia snímania je 48 000 Hz. Tu je zoznam podporovaných audio kodekov. Možno vidieť, že v zozname podporovaných kodekov je flac podporovaný ako pre encoding tak i pre decoding. Taktiež aj súborový formát je podporovaný.
Prevod flac do mp3
Ak by sme chceli hudbu previesť do formátu mp3 s 2 kanály, frekvencií 44100 a bitrate 192 kbit / sa súborový kontajner budeme chcieť mp3, tak príkaz bude vyzerať takto:
ffmpeg -i hudba.flac -c:a mp3 -b:a 192k -ar 44100 -ac 2 hudba1.mp3
Prevod flac do aac
Alebo ak by sme chceli previesť flac súbor do kodeku aac, opäť 2 kanálové stereo, bitrate 256 kbit / s, frekvencia 48000 a súborový kontajner aac, príkaz by bol nasledujúci:
ffmpeg -i hudba.flac -c:a aac -b:a 256k -ar 48000 -ac 2 hudba2.aac
výsledok:
Problémom môže byť opäť identifikácia správneho audio kodeku v
príkaze ffmpeg
. Opäť si pomôžeme príkazom pre výpis
podporovaných kodekov:
ffmpeg -codecs
Audio kodeky sa nachádzajú na konci výpisu. Pripomínam, že pre encoding
(zakódovanie) je nutný parameter E
. V ďalšom príklade si
vyberieme audio kodek, napr. Vorbis, jeho označenie je vorbis
.
DE
vo výpise označuje, že ho možno dekódovať (decode) /
kódovať (encode). Ak by sme ho chceli využiť, potom príkaz bude vyzerať
takto:
ffmpeg -i hudba.flac -c:a vorbis -strict -2 -b:a 256k -ar 48000 -ac 2 hudba3.ogg -hide_banner
Parameter -strict -2
sa používa u experimentálnych kodekov a
to vorbis
v mojej verzii ffmpeg je.
Pre príklad si uvedieme pár najrozšírenejších kodekov:
typ kodeku | FFmpeg parameter |
---|---|
Advanced audio Coding | aac |
G.722 ADPCM | adpcm_g722 |
FLAC (Free Lossless Audio Codec) | flac |
MP2 (MPEG audio layer 2) | mp2 |
MP3 (MPEG audio layer 3) | mp3 |
PCM 32-bit little-endian | pcm_f32le |
Windows Media audio 1 | wmav1 |
Opus (Opus interactive audio codec) | opus |
Získanie audio stopy z multimediálneho súboru
V niektorých prípadoch sa hodí získať alebo odstrániť stopy z multimediálneho súboru (audio, video, titulky). Použijeme k tomu nasledujúce parametre:
-an
- vypne čiže zakáže audio (audio no)-sn
- vypne čiže zakáže titulky (subtitle no)-vn
- vypne čiže zakáže video (video no)
Odstránenie video stopy
Napríklad ak sa rozhodneme z nášho vzorového príkladu odstrániť video stopu, tzn. prevedieme ho na audio súbor, príkaz bude nasledujúce:
ffmpeg -i video.mp4 -vn zvuk1.mp3
Ak by sme chceli odstrániť video stopu a zároveň chceli nastaviť kodek a kvalitu audio stopy, a výslednú audio stopu uložiť do mp3 súboru, tak príkaz vyzerá takto:
ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 zvuk2.mp3
Ak by sme chceli získať audio stopu od určitého časového okamihu k určitému časovému okamihu, potom by to vyzeralo takto:
ffmpeg -i video.mp4 -ss 00:00:05 -to 00:00:15 -vn -ar 44100 -ac 2 -ab 192 -f mp3 zvuk3.mp3
Získanie audio stopy bez re-Encoding
Vytiahnutie audio stopy môžeme vykonať tiež cez mapu bez re-Encoding:
ffmpeg -i video.mp4 -q:a 0 -map a zvuk1.mp3
Odstránenie stopy titulkov
Ak by sme sa chceli zbaviť titulkov v multimediálnom súbore, potom
parameter -vn
vymeníme za -sn
.
Odstránenie audio stopy
Ak by sme naopak chceli odstrániť audio stopu a nechať len nemé video, tak sa to robí takto:
ffmpeg -i video.mp4 -an -vcodec copy videoBezZvuku.mp4
Samozrejme nie je problém s ďalšími parametrami špecifikovať kvalitu videa.
Vloženie audio stopy do nemého videa
Tento variant je samozrejme úplne najjednoduchšie. V predchádzajúcich príkladoch sme si vytvorili samostatné súborové kontajnery s audio stopou a samostatnou video stúpa. V tomto príklade si ich spojíme znovu do seba:
ffmpeg -i zvuk1.mp3 -i videoBezZvuku.mp4 video.mpg
výsledok:
Samozrejme nie je problém si opäť definovať parametre výstupného súboru videa. Napríklad takto:
ffmpeg -i zvuk1.mp3 -i videoBezZvuku.mp4 -c:a aac -b:a 192k -ar 44100 -ac 2 -s 1280x720 -c:v libx265 -b:v 3000k videoSpoj1.mkv
Pridanie viacerých audio stôp do súborového kontajnera
Niekedy je vhodné mať vo videu viacerých zvukových stôp. Chceme mať napríklad český zvuk a anglický zvuk. Takže je nutné dodatočné zvukovej stopy pridať. V tomto prípade sa hodí používať pre viac rovnakých typov stôp mapy. My samozrejme dve hudobné skladby v iných jazykoch nemáme, tak použijeme to, čo máme. Proste pridáme rovnakú stopu dvakrát. A aby to nebolo úplne jednoduché, tak každú audio stopu nastavíme v inom kodeku:
ffmpeg -i videoBezZvuku.mp4 -i zvuk1.mp3 -i zvuk2.mp3 -s 1280x720 -map 0:0 -map 1:0 -map 2:0 -c:v libx265 -b:v 3000k -c:a:0 aac -b:a 192k -ar 44100 -ac 2 -c:a:1 mp3 -b:a 192k -ar 48000 -ac 2 video2audio.mkv
Keďže sme odovzdali viac parametrov, poďme si ich vysvetliť:
-i videoBezZvuku.mp4 -i zvuk1.mp3 -i zvuk2.mp3
- jedná sa o zdrojové súbory, ktoré majú byť spojené-s 1280x720
- nastavíme rozlíšenie HD720-map 0:0 -map 1:0 -map 2:0
- definícia mapy, prvé číslo nastavuje vstupný súbor a druhé číslo je stopa (stream) v súbore, ktorý budeme používať, v našom príklade jevideoBezZvuku.mp4
-map 0:0
azvuk1.mp3
je-map 1:0
-c:v libx265 -b:v 3000k
- nastavenie kodeku a bitrate u video stopy-c:a:0 aac -b:a 192k -ar 44100 -ac 2
- nastavenie kodeku a bitrate u prvej audio stopy-c:a:1 mp3 -b:a 192k -ar 48000 -ac 2
- nastavenie kodeku a bitrate u druhej audio stopyvideo2audio.mkv
- meno výstupného súboru
V ďalšej lekcii, Ffmpeg a transcoding - Obrázky , si povieme niečo o získanie obrázkov z filmu.
V ďalšej lekcii, Ffmpeg a transcoding - Obrázky , si povieme niečo o získanie obrázkov z filmu.