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í.

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:

Analýza flac hudobného súboru pomocou ffprobe - Úprava audio a video súborov pomocou frameworku FFmpeg

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:

analyza AAC - Úprava audio a video súborov pomocou frameworku FFmpeg

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
Môžete sa tiež pozrieť na zoznam určitých súborových formátov (kontajnerov) a ich podporovaných audio kodekov.

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:

výpis spojeného - Úprava audio a video súborov pomocou frameworku FFmpeg

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 je videoBezZvuku.mp4 -map 0:0 a zvuk1.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 stopy
  • video2audio.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.


 

Predchádzajúci článok
Ffmpeg a transcoding - Strihanie, skladanie, výrezy
Všetky články v sekcii
Úprava audio a video súborov pomocou frameworku FFmpeg
Preskočiť článok
(neodporúčame)
Ffmpeg a transcoding - Obrázky
Článok pre vás napísal Robert Michalovič
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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