přejít na obsah přejít na navigaci

Linux E X P R E S, VirtualDub v Linuxu

VirtualDub v Linuxu

VirtualDub je mezi uživateli OS Windows pracujícími s videem známým pojmem. Osobně jsem si ho kdysi oblíbil pro jeho snadné a efektivní ovládání, rychlost a hlavně vynikající schopnost udržení synchronizace zvuku s obrazem i při mnohačetných střizích. Když jsem pak přešel na Linux, nechtěl jsem se s touto zajímavou aplikací rozloučit a trn z paty mi tehdy vytrhl projekt Wine. Jestliže jste v Linuxu ještě nenašli vyhovující grafickou aplikaci pro jednoduchý střih videa, zde je kandidát.


Jak začít

VirtualDub je napsán pro operační systém Windows v jazyce Visual C++ a je vydán pod licencí GNU GPL. Verze pro Linux neexistuje a autor o jeho portaci na tuto platformu neuvažuje, k jeho provozu pod Linuxem budeme proto potřebovat nástroj Wine. Nemějte však obavy, tato oklika nijak negativně neovlivní rychlost VirtualDubu.

WINE (Wine Is Not an Emulator) je projekt, který umožňuje na UNIXových (a tedy i linuxových) systémech spouštět aplikace pro MS Windows. Jedná se o open-source implementaci Windows API (aplikačního programovacího rozhraní), Wine tedy není emulátorem Windows, ale vrstvou zprostředkovávající systémové požadavky windows aplikací.

Pokud jste Wine zrovna čerstvě nainstalovali, spusťte v konzoli příkaz wine, který ve vašem domovském adresáři vytvoří skrytý adresář .wine/ obsahující nezbytnou konfiguraci a adresáře. V něm najdete také adresář drive_c/, který obsahuje standardní strukturu systémového disku MS Windows. Zde vytvořte adresář např. install/, do kterého budete kopírovat instalační soubory windows aplikací.

Wine nevyžaduje pro své fungování Microsoft Windows, jde o svobodnou alternativu k Windows API a neobsahuje žádné části kódu firmy Microsoft. Proto se může stát (a hojně k tomu také dochází), že některé Windows aplikace běží pod Wine rychleji než v samotných Windows. Jak je to možné? Zkrátka API od Wine je mnohdy napsáno efektivněji než to od Microsoftu.

Z domovské stránky projektu VirtualDub stáhněte ZIP archiv obsahující binární soubory pro Windows. Osobně však doporučuji nějakou starší verzi, např. 1.4.10 (dvd.box.sk obsahuje solidní historii verzí), s nejnovějšími má Wine problémy. Obsah archivu rozbalte do adresáře drive_c/Program Files/VirtualDub. V tomto případě není potřeba nic instalovat. Ke spuštění zadejte v konzoli

wine "c:\Program Files\VirtualDub\VirtualDub.exe"

Objeví se úvodní okno s GNU GPL licencí, po jeho potvrzení pak ještě další úvodní okno. Poté již můžete začít pracovat s VirtualDubem. Záhy však zjistíte, že nemůžete otevírat téměř žádné video soubory (s výjimkou např. MJPEG). Nyní je nutné do Wine systému nainstalovat potřebné kodeky.

Wine se stále vyvíjí. Mnohé oblasti Windows API ještě nebyly důkladně prostudovány a naprogramovány (což ztěžuje licenční politika firmy Microsoft). Proto se nezřídka stává, že windows aplikace pod Wine nefungují spolehlivě, havarují či vůbec nejdou spustit. Na domovských stránkách projektu najdete databázi čítající tisíce windows aplikací s popisem, jak ve Wine fungují a s čím jsou problémy. Tuto databázi vytvářejí registrovaní uživatelé.

Z vlastní zkušenosti bych doporučil DivX412Codec.exe pro DivX4 a The-Codecs.exe obsahující celou řadu video a audio kodeků. Instalační exe soubor uložte do adresáře install/ a v něm zadejte v konzoli wine ./balicek_kodeku.exe. Rozběhne se klasická grafická instalace jako ve Windows. Po jejím ukončení by měly mít ostatní aplikace přes Wine k dispozici nově doinstalované kodeky. Spusťte znovu VirtualDub a můžeme se již pustit do práce.

VirtualDub 1.4.10 již obsahuje podporu ODML AVI (též OpenDML AVI či AVI 2.0), která umožňuje vytvářet AVI soubory větší než původní 2 GB. Tato vlastnost je pro mne velmi důležitá, protože VD používám k odstraňování reklam z TV záznamů ve formátu MJPEG ještě před samotným enkódováním do DivX (pomocí MEncoderu). Tyto zdrojové soubory nezřídka přesahují 5 GB a VirtualDub si s nimi lehce poradí.

Práce ve VirtualDubu

Pomocí [Ctrl+o] otevřete video soubor. Nejprve je nutné šipkou vpravo "nastartovat" obraz. VirtualDub obsahuje dva panely pro video - v jednom se zobrazuje originální obraz, ve druhém pak finální obraz po aplikaci filtrů. Jejich rozmístění lze měnit pomocí Options-Swap input/output panes a Options-Vertical Display. Často je vhodné panel výsledného obrazu vypnout přepínačem Options-Display output video (klávesa [F10]), čímž se výrazně sníží výpočetní nároky na procesor při posunu videem.

Obrázek: Hlavní okno VirtualDubu s nabídkou Options

Pod panely pro video je časová osa s posuvníkem a pod ní ovládací prvky. Výhodou VirtualDubu je možnost jeho ovládání pomocí klávesnice - tolik typické pro Linux. Záhy zjistíte, že je to velmi praktické. Posun vpřed po jednotlivých snímcích pomocí šipky vpravo je svižný, naproti tomu posun zpět může být velice pomalý - zde záleží na formátu otevřeného video souboru.

Úspora datového toku při kódování videa je mj. založena na tom, že v plném rozsahu jsou uloženy jen některé tzv. klíčové snímky (key-frames), snímky po nich následující (tzv. rozdílové/delta snímky) jsou popsány pouze pomocí rozdílů v obraze. Pokud se tedy posunujeme o snímek zpět, je nutné propočítat všechny delta snímky od nejbližšího klíčového snímku zpět. V případě, že je každý snímek klíčový (jako např. u MotionJPEG), pak je posun zpět v obraze stejně rychlý jako posun dopředu.

Z toho vyplývá, že mnohem rychlejší (avšak méně přesný) je posun po klíčových snímcích. K tomu nám VirtualDub nabízí klávesy [Shift+šipka vpravo/vlevo]. Napravo od ovládacích prvků dole je informativní text týkající se aktuálního snímku - Frame 38583 (0:25:43.320) [K] - oznamující, že se právě nacházíme na snímku 38583 časově odpovídajícímu poloze 25 minut 43,32 sekund a že tento snímek je klíčový [K]. Ponecháte-li déle kurzor nad tímto textem, objeví se informativní popisek.

Pokud se potřebujete v obraze posouvat ještě rychleji, uchopte kurzorem posuvník a posunujte jím v požadovaném směru. Je ovšem potřeba čekat, až procesor stihne dopočítat vámi nově nastavenou pozici v obraze. V položce menu Edit naleznete seznam klávesových zkratek použitelných pro editaci obrazu.

Pomocí kláves [Home] a [End] nastavíte začátek a konec bloku, který se zvýrazní na časové ose a lze jej vymazat klávesou [Delete] či samostatně uložit. Zde opět vstupuje do hry logika klíčových snímků - nelze smazat klíčový snímek a ponechat za ním jeho rozdílové snímky osamoceně.

Správně označený blok k vymazání je tedy takový, který buď obsahuje jen rozdílové snímky mezi dvěma sousedními klíčovými, nebo blok obsahující klíčové snímky, který začíná libovolným snímkem (klíčovým či rozdílovým) a končí rozdílovým snímkem, po kterém bezprostředně následuje klíčový snímek (nebo už žádný). Z tohoto vyplývá, že video je lepší stříhat před konečným enkódováním, tedy v surové podobě, kdy je každý snímek klíčový.

Jakmile jsou ze záznamu odstraněny všechny nežádoucí pasáže, můžeme přistoupit k uložení výsledku. Nyní je potřeba se rozhodnout, zda uložíme obraz a zvuk pouze sestříhaný v nezměněném formátu a další zpracování necháme na jiných nástrojích, nebo využijeme širokých možností VirtualDubu.

Pokud zvolíte první variantu, pak nastavte Video-Direct stream copy a Audio-Direct stream copy a následně File-Save as AVI... Vyberte umístění a název souboru a začne ukládání, které maximálně vytíží disk. Pokud byl zdrojový soubor v pořádku, pak v tom výsledném, sestříhaném, nenarazíte na problémy se synchronizací obrazu a zvuku, ať už jste stříhali, jak stříhali. Toto je silná stránka VirtualDubu, pro kterou si mě jednoznačně získal. U jiných nástrojů jsem se totiž často potýkal s problémy A-V synchronizace.

Jestliže se rozhodnete pomocí VirtualDubu enkódovat, pak musíte mít nejprve nainstalované požadované video a audio kodeky, což je záležitost Wine. Pokud je toto splněno, je ve VD potřeba nastavit Full processing mode v Audio a Video menu. Tím se aktivuje položka Compression... (opět jak v Audio tak Video menu). Pomocí ní již pak můžete nastavit parametry jednotlivých audio a video kodeků.

Po instalaci některých kodeků přestalo fungovat otevírání souborů v MJPEG (MotionJPEG). Problém vyřešila odinstalace problematického kodeku z Wine. Velmi také záleží na verzi Wine, kterou máte nainstalovánu. Doporučuji tu nejnovější, i když to také vždy nemusí být nejlepší - občas se stává, že aplikace, která dříve ve Wine běžela bez problémů, v nové verzi Wine běží hůře či vůbec. Jde o tzv. regresi a občas k ní dochází kvůli neustálému vývoji Wine. Máte možnost tyto problémy nahlásit vývojářskému týmu.

Obrázek: Seznam dostupných kodeků při volbě Video-Compression

Konkrétní výběr a nastavení jednotlivých audio a video kodeků přesahuje cíle tohoto článku. Kodeky jsou záležitostí systému; to, co VirtualDub sám nabízí navíc, je sada filtrů, které lze aplikovat na obraz. Najdete je ve Video-Filters... Namátkou jmenujme změnu velikosti obrazu, ořezání, vyhlazení, zostření, změnu jasu a kontrastu a další. K dispozici je také změna snímkové frekvence a barevné hloubky obrazu či změna hlasitosti nebo vzorkovací frekvence zvuku. Jakmile máte vše nastaveno, zvolte opět File-Save as AVI...

Podle nastavení kodeků, zvolených filtrů a výkonnosti počítače již nyní bude proces zpracování videa znatelně pomalejší oproti pouhému přeuložení. Teď již bude na 100 % vytížen procesor. V informačním okně máte proto možnost snížit prioritu procesu enkódování a umožnit tak plynulejší práci v jiných aplikacích. Rovněž je zde možnost vypnutí zobrazování vstupního/výstupního obrazu, což o něco zrychlí enkódování.

Obrázek: Informativní okno při ukládání videa

VirtualDub nabízí ještě další funkce. Můžete úspěšně spojovat více video souborů (které však musí mít shodné rozměry a bitrate a stejné audio a video kodeky, což platí obecně), uložit jen zvukovou stopu jako WAV, připojit k videu jiný zvuk (opět WAV formátu) a další. Funkce zachytávání videa (např. z TV karty) není přes Wine podporována a způsobí pád VirtualDubu.

Problémy a tipy

Nejvíce problémů nám bude působit Wine. Často dochází k neúplnému překreslování grafických prvků. V tom případě pomůže okno s VirtualDubem minimalizovat do panelu a opět ho vyvolat. Rovněž malé fonty v hlavním okně můžou být pro mnohé nečitelné, bohužel tento problém se mi nijak nepodařilo vyřešit. Wine sice umožňuje zvýšit v registrech DPI pro fonty, avšak toto se bohužel neprojeví v hlavním okně spouštěné aplikace, ale jen v dialogových oknech.

Občas se může stát, že se po otevření souboru "nechytne" obraz - zmáčknete [šipku vpravo] a místo korektního obrazu se objeví změť čtverců. V takovém případě otevřete soubor znovu a nyní zkuste [Shift+šipka vpravo]. Pokud je problém stejný, zase otevřete soubor a zkuste se hned pomocí [Ctrl+šipka vpravo] přesunout na konec souboru a následně stiskněte [šipku vlevo]. Případně ještě můžete hned po otevření souboru vyzkoušet tlačítko Scene forward či kliknout někde do časové osy. Tento problém je zřejmě způsoben kodekem, který VirtualDub použije pro daný typ souboru.

Problémy s Wine mohou nastat kdykoli, proto obecně nedoporučuji "trápit" windows aplikace na maximum, ale držet se jen nutných úkonů. Například tlačítko Input playback u některých audio/video formátů spolehlivě způsobí pád celé aplikace, resp. Wine. Bohužel také nefunguje Help.

Velmi praktické je mít spuštěn nějaký nástroj na sledování systému (např. gkrellm), kde vidíte, jestli aplikace chvíli nereaguje kvůli náročným výpočtům (např. při opakovaném posunu o snímek zpět), kdy je procesor vytížen na 100 %, nebo jestli zkrátka "zamrzla".

Jestliže budete provádět střih, kdy potřebujete, aby sousední snímky na sebe perfektně navazovaly (např. při odstraňování reklam z TV záznamů), pak lze využít obou obrazových panelů. Nejprve nechte v Options aktivní položku Display input video a vypněte Display output video, nastavte obraz na pozici posledního snímku před reklamou, poté v Options tyto dvě položky přehoďte, posuňte se o jeden snímek doprava na první snímek reklamy a označte jej jako začátek bloku pomocí [Home].

Nyní se posuňte za reklamu a hledejte snímek, který plynule navazuje na ten, který vám zůstal staticky zobrazen v panelu pro input video. Až ho najdete, vraťte se o jeden snímek zpět, označte konec bloku klávesou [End] a vymažte označené snímky pomocí [Delete]. Pokud stříháte video obsahující rozdílové snímky, pamatujte, co jsme si říkali o mazání klíčových snímků.

Konkurence

Ze současných aplikací dostupných v Linuxu je VirtualDubu nejvíce podobný Avidemux. Od nové verze 2.1.0 (pozor na "předverze", např. step3) již z mého pohledu přestavuje solidní náhradu. Podporuje OpenDML AVI, synchronizace obrazu a zvuku je bezchybná u audia s konstantním datovým tokem (CBR - Constant Bit Rate), korektně načítá video se zvukem o proměnlivém datovém toku (VBR), ačkoli po sestříhání a přeuložení se obraz a zvuk "rozjedou", což však je problém většiny podobných aplikací u audio VBR (jestliže však zvuk uložíte jako CBR, dopadne A-V synchronizace na výbornou). Avidemux má ve srovnání s VirtualDubem rychlejší pohyb videem, a to i když se vracíte po jednotlivých snímcích zpět. Dokáže stříhat DivX i po jednotlivých snímcích bez ohledu na klíčové snímky (pokud klíčový snímek vystřihnete, při ukládání z něj funkce Smart Copy dopočte ponechané rozdílové snímky), což VirtualDub neumí. Má však znatelně horší ovládání pomocí klávesnice. Avidemux je vybaven také širokou škálou kodeků a filtrů (nejen vlastních ale např. i z MPlayeru).

Pokud jde o enkódování videa pomocí VirtualDubu, tuto práci bych raději přenechal jiným nástrojům, kterých máme v Linuxu dostatek a které využívají vyspělejší kodeky a filtry, jako např. zmíněný Avidemux (pro mě však v enkódování nadále zůstává jedničkou MEncoder). VirtualDub však stále využívám pro snadný, jednoduchý a velmi rychlý lineární střih videa, ačkoli s postupujícím vývojem zřejmě brzy přesedlám na Avidemux.

Nahoru

Odkazy

Příspěvky

Re: VirtualDub v Linuxu
16. 04. 2007, 02:59:20
Odpovědět  Odkaz 
portace do lin neexistuje ..
a proc taky ??
uz davno existuje AVIDEMUX ..
jsem s nim spokojen vic nez s virtualdubem ..
otevre skoro vsechno (vcetne MPEG-TS z DVBT), umi vystup i do MPEG2, kalkulacku mel v sobe davno ..
je to delnik, kterym kazdodenne xviduji svoje nahravky z DVBT ...
umi nejen joby ale i davky z shellu ..
myslim, ze provozovat virtualdub pod wine je zbytecne trapeni .. avidemux rulez :-)
Re: VirtualDub v Linuxu
16. 04. 2007, 03:05:37
Odpovědět  Odkaz 
jeee .. sorry, mne se nejak schoval konec clanku s tim avidemuxem .. :-)
no uzivam avidemux uz skoro rok od verze 2.2 a nejak si nemuzu stezovat na spatne ovladani :-)
s 2.3 pribyly templates, co vic si prat ..
2.4 uz konecne poradne oddelila gui od cmd ..
Uz jste presedlal ?? :-D
Tomáš Hanusek VirtualDub v Linuxu
Tomáš Hanusek 7. 09. 2007, 17:39:22
Odpovědět  Odkaz 
VirtualDub stále používám ke střihu mnohagigových AVI s MJPEG a PCM, protože mnou používaný avidemux2.2.0 s nimi má problémy. Ale jinak už jedu v Avidemuxu.

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Tomáš Hanusek

Tomáš Hanusek

Vystudoval VŠE v Praze, obor Hospodářská politika. Linux používá od počátku třetího tisíciletí a to hlavně kvůli jeho volnosti, variabilitě a komunitě uživatelů. V Linuxu se zajímá o multimédia a programování v Perlu. K dalším zájmům patří pasivně motorismus a aktivně přátelé.


  • Distribuce: Mandriva Linux

| proč linux | blog