
Digitální video pod Linuxem III. - jednoduché manipulace
Minule jsme přenesli video do počítače, dnes ho budeme přehrávat, kopírovat zpět na
kazetu a provádět další primitivní operace. Použijeme k tomu opět
jednoduché utility, které jsou nenáročné na procesor i paměť.
Přehrávání videa ve formátu DV
Máme v počítači videodata z kamery a ani nevíme, jestli se to přeneslo správně. Takže
by to chtělo nějaký program na přehrávání DV. Takových aplikací je spousta, k řadě
z nich se ještě dostaneme. Ale úplně nejjednodušší volbou je využít to, co máme
v této chvíli určitě nainstalováno.
Programem volby tedy bude utilita playdv. Pochází z knihovního balíku libdv a umožňuje
jednoduché přehrávání videa kódovaného kodekem DV. Aplikace podporuje několik druhů
video a audio výstupů (zařízení) - blížší popis uvedu u přehledu parametrů. Program
playdv by měl být teoreticky schopen přehrát jakýkoli DV soubor, který lze zpracovávat kodekem
v libdv (i když ruku do ohně za to dát nemohu - balík je stále ve stadiu betaverze).
Spustí se takto:
playdv [argumenty] [soubor]
Soubor nemusí být zadán - pak se čtou data ze standardního vstupu. Nyní uvedu
nejdůležitější parametry (argumenty), které program přijímá:
-
--audio-device=zařízení - umožňuje zadat jiné zařízení jako audiovýstup.
Zvukové servery jako aRts nebo ESD nejsou přímo podporovány; kdo by je
chtěl použít, musí se uchýlit k příslušnému wrapperu.
-
--audio-file=soubor - zapíše dekódovaná zvuková data do určeného souboru.
To se může hodit, potřebujeme-li pracovat se zvukovými daty samostatně.
-
--audio-mix=(-16 .. 16) - toto uvádím spíše pro zajímavost, protože
praktické uplatnění není velké. DV může mít zaznamenán zvuk
dvojím způsobem: kvantizace 16 bitů se vzorkovacím kmitočtem 48 kHz (jedna
stereofonní stopa; toto je obvyklý způsob záznamu), a kvantizace 12 bitů
se vzorkovacím kmitočtem 32 kHz (dvě stereofonní stopy; vhodné jen pro
nižší požadavky, navíc většina kamer stejně umožňuje běžně zaznamenat jen jedinou
stopu). Máme-li zvuk zaznamenán druhým způsobem, tímto argumentem se
volí způsob (poměr) směšování zvuku ze stop. Výchozí hodnota je 0 (rovnoměrný
poměr).
-
-d, --display=(0|1|2|3) - nastavuje metodu výstupu videa. Výchozí hodnota je 0,
což znamená automatickou volbu nejvhodnější metody. Pokud to nefunguje,
můžeme ručně volit ze GTK, Xv a SDL.
-
--aspect=(n|w|normal|wide) - nastaví poměr stran (buď normální, tj. 4:3, nebo
široký, tedy 16:9). Funguje pouze pro výstup přes Xv.
-
-V, --video-system=(0|1|2|3) - v případě selhání autodetekce (0, výchozí hodnota)
umožňuje nastavit videosystém ručně. Bývá to nutné pouze zřídka, ale někdy se stává,
že je program tvrdošíjně přesvědčen, že používáme normu NTSC. Abychom mu vnutili
PAL, použijeme hodnotu 2 (také hodnota 3 je systém PAL, ale podle normy SMPTE 314 M;
my potřebujeme použít formát podle normy IEC 61834 používané naprostou většinou
"amatérských" kamer).
-
-q, --quality=(1|2|3) - umožňuje měnit nastavení kvality dekódování. Implicitně se
používá maximální úroveň (3), na pomalejších strojích ji můžeme snížit.
-
-f, --frequency=(0|1|2|3) - jak jsem se již zmínil o různých způsobech záznamu zvuku,
zde můžeme ručně nastavit kmitočet (výchozí je 0 = autodetekce). Kromě zmiňovaných
32 a 48 kHz zde lze nastavit i 44,1 kHz - tato frekvence se sice nepoužívá
v DV kamerách, ale můžeme se s ní setkat u souborů, kde se zvuk přidával později.
-
-Q, --quantization=(0|1|2) - viz předchozí parametr. Zde se však nastavuje příslušná
kvantizace, tedy 12 nebo 16 bitů (opět je výchozí 0, tedy autodetekce).
Možnosti programu jsou poměrně strohé, vyplývají však z jeho určení a proto nemůžeme
očekávat zázraky. To se týká i kvality obrazu a toho, že se neprovádí žádné odstraňování
řádkového prokladu (ten je u DV samozřejmý a logický - vyplývá to z "televizního" určení
DV a koneckonců i z využití klasických norem PAL a NTSC). Na lepší způsoby přehrávání se
podíváme příště.
Přenos videa zpět do kamery
Téměř stejně často jako z kamery do počítače, potřebujeme přenášet video opačným směrem.
Ať už je to za účelem archivace na kazetě nebo k následnému analogovému využití
(prohlížení na televizoru, kopírování na VHS apod.), máme nějaký DV soubor v počítači
a chceme ho přenést do kamery. Nebudeme-li tak činit pomocí nějaké komplexnější aplikace,
máme k dispozici utilitu dvconnect.
dvconnect je opět součástí balíku libdv a je proto vždy k dispozici. Umí přenášet videodata
oběma směry přes linuxové zařízení video1394 (viz minulý článek). Narozdíl od programu dvgrab
pracuje vždycky se surovými daty, na formáty DV1 a DV2 je třeba zapomenout - týká se to
obou směrů přenosu. Podobně jako playdv, i tento program pracuje jak s klasickými diskovými
soubory, tak přes standardní vstup/výstup. Příkazový řádek vypadá takto:
dvconnect [argumenty] <soubor>
Nahradíme-li název souboru řetězcem "-- -", použije se standardní výstup (pro přenos do počítače),
resp. standardní vstup (pro přenos do kamery). Z argumentů bych zdůraznil tyto:
-
-s, --send - říká, že směr přenosu je z počítače do kamery (implicitně je to z kamery do počítače)
-
-k, --kbuffers=číslo - počet bufferů pro video (implicitně 8). Tuto hodnotu je třeba změnit tehdy,
dochází-li k výpadkům při přenosu. Optimální nastavení se musí zjistit experimentálně.
-
--start-frame=číslo - počáteční snímek (výchozí hodnota je 0).
-
-e, --end-frame=číslo - poslední zpracovávaný snímek (implicitně bez omezení). Platí podobná pravidla
jako u programu dvgrab (viz minulý článek).
-
-b, --buffers=číslo - počet I/O bufferů (standardně 250). Běžně není třeba měnit, opět pouze při
výpadcích.
-
-u, --underrun-data=soubor - připravená data snímku pro případ podtečení bufferů a z toho vyplývající
ztráty snímku. Soubor by měl být ve formátu PPM.
-
-d, --device=soubor - speciální soubor, který je namapován na zařízení video1394 (viz minulý článek).
Při dodržení doporučeného postupu není potřeba používat, pouze pokud to má někdo z nějakého důvodu
jinak, nevyhne se tomuto nastavení.
Pro ovládání kamery opět použijeme např. utilitu dvcont (není mi známo, že by v aktuální verzi aplikace
dvconnect byla implementována tato funkcionalita) - při přenosu do kamery se uplatní příkaz
record. Znovu připomínám, že kamera musí být schopná nahrávat ze DV (IEEE 1394) vstupu.
Převod do formátu DV
Máme-li v počítači video z kamery nebo z programu, který pracuje přímo s formátem DV, je to jednoduché.
Při přenosu do kamery máme DV soubor a na jeho obsah pustíme program dvconnect. Mnohdy ale máme data
v jiném formátu. Pak nezbývá než překódování, ať už z jednoho souboru do druhého nebo skrz rouru
přímo do dvconnect (na výkonnějším počítači). Přestože existují mnohem pohodlnější a elegantnější
postupy (a o některých bude řeč už příště), nelze zcela opomenout program encodedv - opět, jak jinak,
z balíku libdv. Ten dokáže převést sérii snímků nebo videosoubor na DV data.
Protože schopnosti programu nejsou nijak velké, zmíním se o něm pouze ve stručnosti. Vstupní data
mohou být v podobě snímků ve formátu PPM nebo PGM, případně jako nekomprimované video. Snímky musí
být ve správném rozlišení (tedy 720x576 pro PAL). Máme-li snímky v jiném formátu, snadno je převedeme
pomocí příslušného konvertoru (např. tgatoppm, bmptoppm, xpmtoppm a mnoho dalších). Převodníky lze
samozřejmě zkombinovat, nemáme-li k dispozici ten správný. Zvuk lze v této fázi vynechat (viz dále)
nebo ho přidat z WAV souboru či DSP zařízení.
Syntaxi příkazové řádky ani popis argumentů uvádět nebudu - každý si je může najít v manuálu k programu.
Ještě dodám, že jediným výstupním formátem je DV RAW (DV1 ani DV2 není zatím k dispozici).
Přidání nové zvukové stopy
V přechozí části jsem se zmínil o vynechání zvuku. Ten totiž můžeme zvlášť přidat posledním z
představovaných programů z balíku libdv, a to utilitou dubdv. Jedná se o jednoúčelový program, který
prostě přidá určenou zvukovou stopu k existujícímu videu ve formátu DV.
Možnosti jsou velmi strohé, v podstatě jde o zvukovou podmnožinu funkcí programu encodedv. Zvuk lze
tedy opět přidávat z WAV souboru, přes ovladač zvukové karty DSP, případně zvuk zcela vynechat.
Program implicitně prodlužuje celkovou délku videa na délku zvukové stopy, je však i možnost oříznutí.
Lepší výsledky s lepším programem
Leckomu se asi tato kapitola bude zdát nezáživná - představuje programy s nevalnými schopnostmi, se
kterými toho příliš nezmůžeme. Příště už to snad bude lepší. Podíváme se totiž na dvojici programů
(lépe řečeno komplet, balík) mplayer/mencoder, konkrétně na jejich použití pro prohlížení a různé
převody digitálního videa. Celý článek bude zaměřen na praktické použití těchto programů pro
nejčastější operace s DV.
Další části seriálu:
|