1. diel - Framework FFmpeg - Predstavenie a nastavenie
Cieľom tohto kurzu je objasniť a predviesť ako za pomoci programu (frameworku) FFmpeg vykonávať úpravu vašich video a audio súborov. FFmpeg je zadarmo a podporuje širokú škálu operačných systémov aj formátov. Nutné znalosti k úspešnému pracovanie so súbormi médií je len vedieť FFmpeg stiahnuť a spustiť a používať príkazový riadok. V článku si tiež zjednodušene objasníme ako fungujú súbory multimédií, aby ste boli schopní si úpravy sami vykonávať podľa svojich požiadaviek a potrieb.
Framework FFmpeg
Projekt FFmpeg je skupina programov a knižníc (framework), ktorý vám umožní spracovávať / upravovať / prehrávať vaše multimediálne súbory. FFmpeg je vyvíjaný pre najrozšírenejšie OS na planéte (napr. Windows, Linux, Mac OS). Je zadarmo pri dodržaní podmienok LGPL verzie 2.1. Prakticky ho možno použiť pre domáce i podnikateľské účely bezplatne. Nevýhodou je, že nemá český manuál, čo sa budem v tomto kurze snažiť napraviť. Framework FFmpeg nemá grafickú nadstavbu, takže sa ovláda cez príkazový riadok, však na internete možno nájsť rôzne projekty, ktoré sa o grafickú nadstavbu úspešne aj neúspešne pokúšali.
Podpora dekódovanie
Čo sa týka dekódovanie videa, je rozsah frameworku skutočné obrovský. Tu je zoznam podporovaných video kodekov (viď ďalej). Takéto množstvo podporovaných kodekov je skutočne výnimočné v porovnaní aj s platenými alternatívami.
Podpora kódovania
Podpora kódovania je znateľne menšie, ale čo je hlavné je, že sú podporované najznámejšie kodeky, ktoré pravdepodobne podporujú vaše domáce zariadenia ako napr .:
- H.263,
- H.264,
- H.265 (HVEC),
- MPEG1,
- MPEG2,
- MPEG4,
- FLV,
- VP8,
- VP9,
- ...
Tu je zoznam podporovaných audio kodekov, ale o úprave audia sa budem zmieňovať v kurze len okrajovo.
Úvod do multimédií
Kedysi dávno v 90. rokoch za éry 286, 386, 486 a Pentia I sa video / audio súbory na počítačoch typu PC moc nepoužívali. Pravdepodobne to bolo spôsobené chýbajúce inštrukčnou sadou (MMX), ktorá sa objavila koncom éry Pentia I (rok + - 1997). Dovtedy sa síce video / audio súbory na počítačoch objavovali, ale zaberali veľkú kapacitu na disku a mali veľké požiadavky na výkon procesora. Príchodom inštrukčnej sady MMX v procesoroch Pentium MMX, Pentium II sa teda umožnil pokles náročnosti na procesor na dostatočnú úroveň pri spracovaní komprimačných / dekompresor algoritmov, ktoré sú známe ako kodeky.
Kodeky
Kodeky nie sú prakticky nič iné ako komprimačný / dekompresor algoritmy pre dáta (streamy, stopy), v ktorých je uložené video (obraz) alebo audio (zvuk). Samozrejme svoj vplyv tu zohrali aj veľkosti pevných diskov a rozšírenie CD, ktoré v čase blížiaceho sa konca tisícročia už mali dostatočnú kapacitu pre uloženie filmov.
Súbory multimédií
Tzv. súbory multimédií sú prakticky obyčajné (binárne) súbory, v ktorých sú uložené video alebo audio stopy (streamy). Vo väčšine prípadov to funguje tak, že napr. V súbore videa je jedna stopa pre video (obraz) a jedna alebo viac audio stôp (napr. CZ, SK, ENG, ...) + niekedy stopa titulkov. V multimediálnych súboroch môžu byť aj iné stopy, napr. Ikony, obrázky a pod.
Formáty súborov
Týmto typom multimediálnych súborov sa hovorí súborový kontajner alebo tiež súborový formát (v angličtine file format). Tie sa delia na video a audio súborové kontajnery.
Kontajnerové súbory videí majú väčšinou video + audio stopy a súbory audio majú väčšinou len audio (zvuk) stopu. Súborové kontajnery sa identifikujú podľa prípony súboru.
Videoformáty
Existuje veľa typov video súborových kontajnerov, napr. * .Avi, * .mkv, * .mpeg, * .ogg, * .mp4 pod.
Audioformáty
Rovnako tak existujú aj audio súborové kontajnery, napr .: * .mp3, * .flac, * .wma, * .wav pod.
Každý tento súborový kontajner (formát), či už ide o video alebo audio, disponuje svojou špecifikáciou (štandardom), ako napr. Tento typ * .mkv (Matroska). Problémom je, že niektoré tieto súborové kontajnery sú vyvinuté rôznymi spoločnosťami a tie za ich používanie chcú licenčné poplatky. To je dôvod, prečo nemusí byť vždy podporované.
Typy kodekov
Ako som uviedol, každý multimediálny súbor je kontajnerom, ktorý obsahuje video (obrazové) / audio (zvukovej) stopy. Tieto stopy bývajú väčšinou zakódované kodekom. Zopakujem to ešte raz, kodeky sú iba komprimačný algoritmy, ktorý majú jediný účel a to zmenšiť veľkosť súboru.
Opäť existujú rôzne video alebo audio kodeky (niekedy pomenované ako video / audio kompresné formáty). U video kodekov to sú napr. Xvid, DivX, h264, H265, mpeg2, mpeg4 pod. Au audio kodekov napr. Aac, Vorbis, mp3, Opus, či audio kodeky známe z VoIP typu G.711, G.722 pod.
Funkcie FFmpeg
FFmpeg zastrešuje tieto činnosti:
- Encode (kódovanie) - Dáta predstavujúce multimediálny obsah zakóduje do definovaného kodeku (kompresného algoritmu)
- Decode (dekódovanie) - Dáta predstavujúce multimediálny obsah zakódovaného kompresným algoritmom dekóduje tak, aby sa dala používať
- Transcode (prekódovanie) - prevádzanie multimediálnych súborov do iného súborového kontajnera, do iného kodeku, iné snímkovacie frekvencie (framerate), apod.
- Mux (spájanie stôp) - kombinovanie dvoch a viac stôp do jedného súborového kontajnera. Napr. video stopa + audio stopa 1 + audio stopa 2 + stopa titulkov
- Demux (odstraňovanie stôp) - opak Muxu, odstraňovanie alebo rozdelenie multimediálneho kontajnera (súboru) na viac stôp (súborov)
- Streaming (vysielanie na sieť) - umožňuje multimediálny obsah (súbor) vysielať vo forme prúdu (streamu) po sieti (LAN / MAN / WAN). Viac info prípadne na https://trac.ffmpeg.org/...reamingGuide
- Filtering (úprava cez filtre) - umožňuje vykonať vami nadefinované filtre na multimediálne súbory
- Play (prehrávanie) - áno, FFmpeg umožňuje aj danej multimediálne súbory prehrávať
Stiahnutia a inštalácie
Takže to je pre úvod všetko. FFmpeg si stiahneme tu. Zídeme na ikonu Windows (prípadne inú, ak máte iný OS), a pod ňou sa nám objaví text Windows Builds, na ktorý klikneme:
Presmeruje nás to na stránku s buildy. My si vyberieme poslednú stabilnú verziu (je označená číslom verzie), potom typ architektúry (win64 či Win32) au linkingu si vyberieme shared (zdieľanú). Potom zvolíme priamo Download Build. Daná variant bude mať menej ako 30 MB a bude skomprimované v * .zip.
Daný súbor si rozbaľte kam chcete (napr. Do
C:\Program Files\FFmpeg\
) a nakopírujte (program sa neinštaluje).
V prípade, že sa ho budete chcieť zbaviť, stačí ho len zmazať, nie je
nutná odinštalácie. V adresári doc/
nájdete dokumentáciu a v
bin/
nájdete naše programy, ktoré budeme využívať.
Nastavenie PATH
Teraz je nutné nastaviť systémovú premennú
PATH
tak, aby sme pri práci s FFmpeg nemuseli stále
znovu a znovu vypisovať cestu k daným programom. Vo Windows (v mojom prípade
vo Windows 10) si nájdeme Ovládací panel a budeme postupovať takto (je
nutné mať práva administrátora vo Windows): Ovládací panel -> Systém
-> Rozšírené nastavenia systému -> Rozšírené -> Prostredie
premenných -> vyberieme PATH a zvolíme upraviť -> a tu vyberieme Nový
a vy len nastavte cestu tak, aby viedla k programom umiestneným v adresári
bin/
, napr. C:\Program Files\FFmpeg\bin\
. A
reštartujte PC.
Programy FFmpeg umiestnené v
bin/
Na koniec úvodnej lekcie sa pozrime aké programy máme vo frameworku vlastne k dispozícii:
FFprobe.exe
- program, ktorý vypisuje metainformácie (rozlíšenie, framerate, typ kodeku atď.) U multimediálnych súborovFFmpeg.exe
- program, ktorý vykonáva úpravy multimediálnych súborovFFplay.exe
- program, ktorý umožňuje prehrávanie multimediálnych súborov
Hardvérové požiadavky
Čo sa týka hardvérových požiadaviek, program je plne viacvláknové (multithreaded). Pri kódovanie / dekódovanie plne využíva všetky logická jadra. V skratke sa dá povedať, čím viac logických jadier, tým rýchlejšie kódovanie / dekódovanie prebieha a približne s priamou úmerou (4 jadrá sú približne 2x rýchlejšie ako 2 jadrá, 16 jadier je 4x rýchlejší než 4 jadrá). Pod FFmpeg existuje aj podpora hardvérovej akcelerácie cez grafické karty. Avšak to som ešte neskúšal. Čo sa týka pevných diskov, pri kódovaní / dekódovaní sa neprenáša moc rýchlo dáta, takže nie je podstatné, či máte SSD alebo štandardný grilovacie disk (zn. HDD). To isté platí aj o operačných pamätiach. Rýchlosť a veľkosť nie je moc podstatná. Ale min 4GB RAM by ste mali mať. Takže záverom u FFmpeg zásadným spôsobom ovplyvňuje rýchlosť kódovanie / dekódovanie iba počet jadier vr. hyper-threading.
V budúcej lekcii, FFprobe - Analýza multimediálnych súborov , sa budeme venovať prvému zo spomínaných nástrojov, teda analýze multimediálnych súborov.