Portál AbcLinuxu, 2. května 2025 07:13

Zpracování digitálního videa pod linuxem

28.4.2009 19:27 | Přečteno: 1785× | Linux | Výběrový blog

Od kamery po Matrošku.

Co budeme potřebovat

Video capture

Pro začátek si představte situaci: máme na kameře nahrané video a potřebujeme ho zpracovat. První věc kterou musíme udělat je video dostat z kamery do počítače. Zdá se to jako krok jednoduchý, ale existuje spousta klikoidních programů které vám můžou přijít pod ruku a kterých byste se měli vyvarovat. Namátkou vyberu třeba kino, které je opravdu otřesné. Nám však postačí program který většina těchto "úžasných klikátek" stejně používá - dvgrab.

Pro začátek zkusíme připojit kameru k počítači pomocí firewire rozhraní. Po spuštění příkazu dmesg bysme měli na konci najít zhruba něco v tomto smyslu:

PM: Adding info for ieee1394:00008500001d79c0
PM: Adding info for No Bus:00008500001d79c0
ieee1394: Node added: ID:BUS[0-00:1023]  GUID[00008500001d79c0]
ieee1394: Node changed: 0-00:1023 -> 0-01:1023
PM: Adding info for ieee1394:00008500001d79c0-0
PM: Adding info for No Bus:00008500001d79c0-0

Kamera je tedy připojená a ti šťastnější z Vás s ní dokonce můžou pracovat. V tomto kroku přichází na řadu dvgrab.

dvgrab -a -f dv2 video.avi

Tento příkaz nám naháže video z kamery do souborů video001.avi - videoXXX.avi podle toho jak máme na pásce střihy. Pokud je na pásce volné misto, pokračuje aniž by zaznamenával a hledá další nahranou stopu až do konce kazety popřípadě do signálu ^C.

Stříhání

Zde už je možností víc, můžete použít primitivnější programy, nebo jako v našem případě nelineární střižnu Kdenlive, která je mírně nestabilní, ale když si na její ovládání zvyknete, tak vydrží být puštěná i několik minut (ukládat, ukládat, ukládat!!!).

Používání je v celku jednoduché, ve struktuře projektu pravým myšítkem vyvoláme kontextové menu, kde dáme Přidat klipy, najdeme si námi uložené video001.avi, označíme a dáme vložit. Klipy pak přeskládáme do pásu, vytvoříme přechody, vložíme titulky a můžeme se vrhnout na tlačítko Renderovat. Tady bych se pozastavil nad tím do jakého formátu renderovat můžete. Některým se totiž podařilo zprovoznit nekomprimované h264, nám co takové štěstí neměli bude stačit AVI DV PAL 4:3. Tvorba tohoto avi trvá jen několik málo minut. Pro 20 minut vide pak máme zhruba 4GB dat. Což se nám samozřejmě nelíbí. Také dostaneme zpravidla prokládaný obraz, což se nám taky na počítači líbit nebude.

Encodování

Zde přichází na řadu encodování. Slabší kusy (jako třeba já) mohou použít Avidemux, nebo v lepším případě vzít telefon a zavolat nějakému tomu Otaku ať se staví na pivo. Zpravidla z podobných sešlostí vyjde něco v tomto smyslu:

cat enc.sh 
#!/usr/bin/env bash
/usr/bin/x264 \
	--bframes 6 \
	--b-adapt 2 \
	--b-pyramid \
	--ref 6 \
	--crf 22 \
	--partitions all \
	--direct auto \
	--weightb \
	--me esa \
	--subme 9 \
	--psy-rd 1.10:0.25 \
	--mixed-refs \
	--8x8dct \
	--trellis 2 \
	--fps 25 \
	-o x.264 \
	fifo 720x576

a

cat men.sh 
#!/usr/bin/env bash
mencoder \
	-ovc raw \
	-of rawvideo \
	-nosound \
	-vf pp=li,format=yv12,swapuv \
	-o fifo \
	"$1"

Jedná se o video 4:3, které je prokládané (zrušíme použitím deinterlaceru v mencoderu pp=li). Výsledné video bude mít 25 snímků za sekundu a rozlišení 720x576 (PAL). Předtím než skripty spustíme musíme si vytvořit pojmenovanou pipu fifo v adresáři kde budeme skripty spouštět.

mkfifo fifo

Jakmile máme vytvoře spustíme v jednom terminálu (silně doporučuji, zvláště u delších videí pouštět ve screenu!!!) ./enc.sh a hned poté ./men.sh kterému předhodíme jako parametr název sestříhaného videa. Ve výsledku dostaneme soubor x.264 (pojmenovat můžeme jakkoliv) což je pouze video bez kontejneru (a bez zvuku) v h264.

Pro encodování zvuku do ogg vorbis nám poslouží následující dva příkazy. První z nich pustíme na pozadí. Výsledný soubor bude x.ogg.

oggenc -o x.ogg --quiet --quality 3 fifo &
mplayer -vo null -ao pcm:file=fifo video.avi

Kontejner

Tak a teď můžeme vzíc celý počítač i s kamerou a vyhodit ho do konejneru. A nebo taky ne. Abychom spojili zvuk s videem poslouží nám program mkvmerge z balíku mkvtoolnix.

mkvmerge --title "Nejaky title" --aspect-ratio 0:4/3 -o nami_pozadovany_nazev.mkv x.264 x.ogg 

Konec

Tak a jsme na konci. Netvrdím o tomto postupu, že je jediný správný, a mnoho věcí tady nevysvětluje -> zájemce o větší hloubku bych v tomto případě odkázal na google popřípadě na manuál, ale je to relativně rychlá cesta (popravdě encodovaní asi třicetiminutového videa u mě zabere něco kolem 500 minut, ale to bych svaloval spíše na HW). Prostě je to taková jednoduchá ukázka, že se dá zpracovávat video i jinak, než v Pinnaclu ;-). Jo a neberte všechno co sem napsal vážně/úplně doslova, hraju si s tím asi třetí den. Konec

       

Hodnocení: 92 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

28.4.2009 19:35 marek_hb
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem
Odpovědět | Sbalit | Link | Blokovat | Admin

pokud dv kamera po připojení do firewire nedělá nic, zřemě chybí zařízení RAW1394

takže: modprobe raw1394 a modprobe video1394

pak už jen dát uživatele do skupiny disk, nebo jinak vyřešit práva pro přístup k zařízení raw1394

pools avatar 28.4.2009 19:37 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem

nn tam byl jinej problém, a to kamera která není v linuxu vůbec podporována. sem tam se tu mrchu podařilo alespoň rozběhnout ale většinou to končilo segfaultem nebo podobnou legráckou, jednou dokonce sundala celej kernel ;-)

Vivre libre ou mourir!
28.4.2009 19:43 Mandarinka
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem
Odpovědět | Sbalit | Link | Blokovat | Admin

"--me esa" není o moc lepší než "--me umh" a je o dost pomalejší. Prakticky vždy se doporučuje používat --me umh (uneven multi-hexagon search) , protože je značně lepší než --me hex, a vyšší módy jsou neúměrně pomalé k malému zlepšení, které nabízejí. (ESA je v podstatě optimalizovaný exhaustive search, i když s nějak upravený, takže to není úplně hrubá síla.)

Nikde tam nevidím adaptive quantization, to by měla být nutnost, jinak vám to naprosto zlikviduje oblasti s nízkm jasem nebo kontrastem (hnus!): "--aq-strength 0.8" (tipoval bych že patřičné číslo bude 0.6 - 1.1).

pools avatar 28.4.2009 19:48 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem

s tou esa to bude tím, že razíme heslo "encoduješ jen jednou" takže čas nehraje roli, a co je dobré může být vždycky lepší, jinak na tu quantization se mrknu jestli bude nějaký rozdíl, encodoval sem s tím několik takřka stejných videí z posledního Mistrovství ČR ve squashi kde je jas akorát a kontrast taky ;-)

Vivre libre ou mourir!
28.4.2009 22:59 Mandarinka
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem

No jo, ale vtip je v tom, že místo esa by pravděpodobně víc pomohly jiné žravé možnosti. Zvýšit počet referenčních snímků, třeba na deset (maximum je 16). To sice pomáhá hlavně s anime, ale myslím (tipuju), že třeba --ref 10 by mělo pomoct víc než ESA vždycky.

Mimochodem existuje i --me tesa (používá SATD/hadamard místo SAD, blabla), když už opravdu nejde o rychlost., ale to bych asi opravdu zvolil až když budu mít všecko na max (teda asi kromě --merange, to asi nemá smysl víc jak 32 ani na fullhd videu, 24 je zřejmě jen neznatelně lepší než 16).

pools avatar 29.4.2009 10:11 pools | skóre: 19 | blog: Svědek Damdogův | Opava/Praha
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem

jeste k tomu aq-strengt - pry je v x264 automaticky nastaveny na 1

Vivre libre ou mourir!
29.4.2009 13:37 Kvakor
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem
Odpovědět | Sbalit | Link | Blokovat | Admin
Jen pro přenost - enkodování videa je tak "složité" jen v případě, že je cílem kontejnér Matroška, videokodek H264 a audiokodek Ogg Vorbis. Pokud ale chcete páchat video pro jinou platformu (např. DVD či MP3 přehrávač, co umí jen MPEG1/2 a DivX/XVid), bude nejspíš stačit jediný průchod mencoderem, případně se může použít přímů výstup z GUI střihadla.

29.4.2009 14:58 Mandarinka
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem

Ještě bych podotkl, že vážní zájemci by si měli bezpodmínečně zprovoznit avisynth pod wine (prý to jede velmi dobře, nevím; chce to pak nástroj avs2yuv a rouru do kodeku myslím), neboť prostě nemá ve filtrování konkurenci. O takových věcech, jako je možnost porovnávání zdroje a výsledného videa snímek po snímku (funkce interleave) a možnostech skriptování (třeba s různými maskami) ani nemluvě.

Pokud vím, tak jsou tam taky k dispozici lepší filtry než v mencoderu/mplayer - třeba pro to odstranění prokládání.

 

Dalibor Smolík avatar 29.4.2009 16:20 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Zpracování digitálního videa pod linuxem
Odpovědět | Sbalit | Link | Blokovat | Admin

Já mám kameru SONY Handycam, není nad USB rozhraní, mass storage :-) a soubory z kamery jednoduše překopíruji do počítače


Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
30.4.2009 14:28 Espinosa | skóre: 24 | blog: Espblog | London
Rozbalit Rozbalit vše Re: Proč tak složitě
Odpovědět | Sbalit | Link | Blokovat | Admin

Vy se ty uživatel linuxu snad snažítě vážně odradit ;-)

Zeditoval jsem už hodně videa, ale za poslední roky jsem nepotřeboval nic jiného než trojici GUI programů: Kino, Avidemux, Kdenlive.

Nagrabovat v aplikaci Kino. Má hezkou detekci kamery v GUI.

Kdenlive umí celou řadu exportních formátů, je to vysoce konfigurovatelné a řada hotových výstupních profilů je přímo v aplikaci. Mělo by to podporovat vše co umí ffmpeg a mencoder není nic jiného než nadstavba ffmpegu čili co dokáže mencoder musí umět i kdenlive. Bohužel názvy a použití parametrů se může lišit, kdenlive profily používají notaci ffmpegu.

Opravdu jste testoval že Kdenlive nezvládá Matrosku?

 

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.