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

Linux E X P R E S, Nahrávání televize

Nahrávání televize

V mém konzolovém podání ...


reklama

Situace

Hledal jsem možnost jak jednoduše nahrávat televizní pořady na jednom vzdáleném počítači. Moje požadavky byly takové, abych mohl nejlépe jedním (konzolovým) příkazem nastavit nahrání pořadu a až se mi to bude hodit, odnesl si výsledek např. ve formátu Xvid v co nejlepší kvalitě a nejmenší velikosti...

Skenování stanic a mplayer

Nejdřív jsem musel zjistit, které stanice jsou na jakých kanálech a kde je ten nejlepší signál. K nalezení stanic jsem použil nástroj scantv. Jednoduše stačí zadat tento příkaz a postupovat podle průvodce, tzn. zadat normu (0 - PAL) a tabulku používaných frekvencí (6 - europe-east). Program mi nicméně ve výchozím nastavení napsal

vbi: open failed [/dev/vbi]
open /dev/vbi: No such file or directory

což jsem opravil snadno nastavením parametru příkazu takto

scantv -C /dev/vbi0

Pokud se podaří najít stanici, pak program vypíše něco takového:

R6   (175.25 MHz): ???
[unknown (R6)]
channel = R6

zatímco u ostatních kanálů je hláška no station. Kanály se signálem jsou pro nás zajímavé, jejich obsah si přehrajeme zadáním příkazu

mplayer tv://R6 -tv driver=v4l2:device=/dev/video0:chanlist=europe-east:alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:volume=100:immediatemode=0:norm=PAL -af channels=2:2:0:0:0:1 -mc 0

ne všechny volby budou určitě nutné a zároveň se to může lišit v závislosti na vašem HW. Tak např. volbu

-af channels=2:2:0:0:0:1

můžete směle vypustit a používá se výlučně v kombinaci s televizí Nova, kdy vám tato volba zajistí, aby byly všechny pořady v češtině (Nova standardně posílá "více zvukových proudů" - správně řečeno, a pokud se nepletu, tak ve dvoukanálovém zvuku je jeden kanál pro originál a ten druhý pro český dabing)

Máme stanice, jdeme nahrávat

Skript pro nahrání televize může vypadat např. takto

#!/bin/bash

mencoder tv://R6 -tv driver=v4l2:device=/dev/video0:chanlist=europe-east:alsa:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio:volume=100:immediatemode=0:norm=PAL -mc 0 -oac pcm -ovc lavc -lavcopts vcodec=mjpeg -af channels=2:2:0:0:0:1 -o $1

Tzn. oproti klasickému přehrávání pomocí mplayer téměř žádná změna. Jen je třeba nastavit použitý kodek, do kterého se bude video ukládat. Tady jsem na doporučení ostatních použil mjpeg, který není náročný na CPU a tak zvládne ukládat bez zahozených snímků (to by způsobilo rozchod zvuku a obrazu) a přitom kvalita je téměř stejná jak u klasického přehrávání.

Soubor si pak můžete pojmenovat např. nahraj_nova a zavolat takto

nahraj_nova agent_007.avi

Skriptu se tedy předává parametr v podobě jména výsledného souboru. Bezprostředně po jeho spuštění pak dojde k nahrání pořadu a toto nahrávání je nutno ukončit stiskem klávesy CTRL + C.

Trocha té automatiky

Takhle by to sice šlo, ale s pohodlím nahrávání na videu to nemá nic společného, takže pojďme si to vylepšit. Nejsem úplný odborník na skriptování, takže jsem si nakonec udělal skripty dva a využil přitom předchozí skript. Nejdřív to jednodušší, skript nahrani_televize, který volám když chci nahrát nějaký pořad

#!/bin/bash

echo "/home/martin/bin/nahrani_televize2 $3 $4 $5 &>/dev/null" | at $1 $2

Skript se volá takto:

nahravani_televize 13:00 10.02.08 120 nova agent_007

Význam je téměř jasný, ve 13:00 dne 10.2.2008 mi nahraj film agent_007, který trvá 120 minut a dávají ho na televizi Nova. K tomu je ještě potřeba skript nahrani_televize2 (uložený v /home/martin/bin), který provede vlastní zapnutí/vypnutí nahrávání.

#!/bin/bash

/home/martin/bin/nahraj_$2 "/mnt/video/$3.avi"  &> /dev/null &

sudo renice -20 `echo $!`

sleep $1m

killall -g nahraj_$2

I když může skript působit záhadně, tak vlastně nedělá nic jiného, než že podle názvu stanice zavolá odpovídající skript (např. nahraj_nova, nahraj_prima, nahraj_ct1, atd...), nastaví mu tu nejvyšší prioritu (;-)), počká stanovený počet minut a pak spuštěný skript zabije (ukončí nahrávání). Výsledné video ukládá do /mnt/video ...

Fajn, výsledek máme, ale co ta velikost

Nejen velikost, ale i index tohoto souboru je poškozen (tzn. nelze se v získaném souboru posouvat vpřed). Jak jinak, než to spravit pomocí dalšího skriptu a naplánovat převod na automatické spuštění pomocí cronu.

Zadal jsem tedy

crontab -e

a do crontabu přidal řádek

0  4  *  *  *  /home/martin/bin/xvid_video2 >/dev/null 2>&1

tzn., ve 4 hodiny ráno (každý den) spusť skript xvid_video2, přitom výstup tohoto skriptu mě nezajímá (tím se vyhnete otravným zprávám v případě, že jste nic nenahrávali, atd ..). Pojďme se podívat co je obsahem souboru xvid_video2 ...

#!/bin/bash

cd /mnt/video

for i in *.avi
do
mencoder -ovc xvid -oac mp3lame -lameopts abr:br=128  -xvidencopts bitrate=1500 -forceidx -ofps 25 -vf scale=512:384,denoise3d=10:3:3 -o hotovo/$i $i
rm $i
done;

V podstatě triviální skript, který vstoupí do adresáře s videem, převede všechny soubory končící na .avi a uloží do podadresáře hotovo, přitom původní soubor odstraní, aby se příště nepřeváděl znovu.

Funguje to

Víc se asi říct nedá. Skripty jsou mé výroby (okopírované "z netu") a celé to běží tak jak chci já, zadám jeden příkaz co, kdy a kde se má nahrát a přitom neřeším zbytek. Jak se to nahraje a kdo to převede mi je jedno, další den, nebo později, si pouze zkopíruju výsledek, na který se pak podívám na počítači, nebo si ho pro změnu převedu pro přehrání do mobilu..

Tímto zápiskem, jsem se nechtěl chlubit, jen ukázat jedno z mnoha možných řešení. ;-)

Nahoru

(Jako ve škole)
 

Top články z OpenOffice.cz

Příspěvky

Vlastimil Ott Nahrávání televize
Vlastimil Ott 6. 12. 2008, 22:37:29
Odpovědět  Odkaz 
Dobré, díky! Že bych si to [konečně] zprovoznil na Povaleči, na němž je TV karta a slouží občas jako TV? :-)

Předpokládám, že během nahrávání nelze TV sledovat (spustit třeba TVTime), protože je zařízení používáno. Pletu se?
Martin Šín Re:Nahrávání televize
Martin Šín 7. 12. 2008, 14:57:13
Odpovědět  Odkaz 
No, u počítače v době nahrávání nesedím, tak jsem to ještě nezkoušel... Teď jsem si ale vzpomněl na okamžik, kdy jsem sledoval televizi a přitom pustil nástroj scantv a na televizi mi samozřejmě začal ukazovat výstup z jiných kanálů - takže bych myslel, že to bude fungovat jako klasické video - ten kanál, který nahrávám mohu i sledovat, jediné co nemohu - přeladit na kanál jiný (sledovat/nahrávat víc kanálů najednou).

Problém "Zařízení je používáno" tedy myslím nenastane, zařízení je to jako každé jiné a bez speciálního zámku, tak z něj mohu číst vícekrát. Jediný problém, který nastává tak je "výkon počítače" (viz, třeba: http://www.abclinuxu.cz/poradna/linux/show/127060;jsessionid=1pcadid7r45mu)
Martin Šín Re:Re:Nahrávání televize
Martin Šín 8. 12. 2008, 07:47:34
Odpovědět  Odkaz 
Aha, podle reakce a odzkoušení v praxi se pletu. "Zařízení je používáno" a nelze se na něj znovu připojit. ;-)

Náhradní řešení - spustit nahrávání a zároveň spustit přehrávání právě ukládaného souboru, zvládne-li to počítač. :)
Tomáš Hanusek Re:Nahrávání televize
Tomáš Hanusek 8. 12. 2008, 12:09:49
Odpovědět  Odkaz 
MPlayer, resp. MEncoder tohle neumí - vyhradí si zařízení pro sebe. xawdecode to údajně umí, ale zatím jsem nezkoušel.
http://rapidshare.com/files/145055574/mapa4.part2.rar
Nahrávánzí televize
CIJOML 8. 12. 2008, 00:47:07
Odpovědět  Odkaz 
Timto zpusobem nelze nahravat vice programu z jednoho muxu nebo najednou nahravat a sledovat ten samy mux. Lepsi je pouzit treba kaffeine, ktery ma take nahravani a navic umi demultiplexovat a pritom nahravat demux stream jako vic souboru. Zase se to nehodi na server.
Lukáš Zapletal Nahrávání televize
zapletal 8. 12. 2008, 17:58:11
Odpovědět  Odkaz 
Tohle jsem vyřešil takto:

http://www.tvdigitalne.cz/index.php?&detail=568

Má to i webové rozhraní :-)

Přidat názor

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



 
 

Martin Šín

Martin Šín

Martin Šín (*1980) vystudoval pedagogickou fakultu a nyní pracuje jako učitel matematiky a výpočetní techniky na střední škole. Ve volném čase překládá a také hraje hry (ani jedno mu příliš nejde). V práci se snaží prosazovat open-source programy.


  • Distribuce: Debian
  • Hodnocení autora: **

| proč linux



Public Relations

QNAP uvedl novou modelovou řadu NAS TVS-x82T

Společnost QNAP uvedla na trh novou modelovou řadu NAS TVS-x82T, kterou tvoří tři různé modely (TVS-1282T, TVS-882T a TVS-682T). Nová řada je založena na vícejádrových procesorech Intel Core aktuální generace se 14nm výrobním procesem. Díky nim mohou nové NASy nabídnout dostatek výkonu i pro aplikace náročné na CPU.

Pokračování ...


CIO Agenda 2016