Fórum Ubuntu CZ/SK
Ostatní => Tipy a triky pro Linux => Téma založeno: Rincewind 18 Května 2008, 12:43:06
-
Pokud máte někdo zájem, napsal jsem kraťoučký skriptík, který převede libovolnou nahrávku z MythTV do formátu MKV s audiostoupou ogg a videostoupou buď h264 nebo mp4 a nakopíruje ji do určeného adresáře, přičemž název odpovídá názvu pořadu (nikoli mythtv číselný kód).
Funguje asi takto:
1) převede nahrávku mencoderem (dvouprůchodově, mencoder proto, že má dle mých zkušeností velmi dobrou schopnost zachovat synchronizaci zvuku a videa) do zvoleného obrazového formátu se zvukovou stopou MP2 (můžete si to změnit, ale PCM zabírá přece jen dost místa a FLAC nenačte ffmpeg2theora)
2) mplayerem vytáhne zvukovou stopu
3) pomocí ffmpeg2theora převede do ogg (on to sice umí už mplayer, ale jen do avi a výsledek pak nenačte mkvmerge)
4) slepí je pomocí mkvmerge do jednoho
Přičemž pomocí sedu očeše z jejich názvu nevhodné znaky a pro odlišení nahrávek stejného jména (susediia na markíze třeba) přidá jako rozlišení PID procesu.
Jak nastavit
0) nainstalovat potřebné programy: mplayer, mencoder, ffmpeg2theora, mkvtoolnix
1) nastavit si v tom skriptíku správné cesty, kam vám ukládá mythtv nahrávky a kam chcete, aby se to předělávalo, dále jestli se jedná o 4:3 nebo 16:9 materiál a jestli h264 nebo mp4 - kromě cest vše přidáváním a odebíráním znaků # :) standartně je to 4:3 h264. Je praktické jej tam mít dvakrát, jednou třeba jako mythtomkv-16_9.sh a jednou jako mythomkv-4_3.sh.
2) nakopírovat do /usr/bin a přidat spustitelný příznak (chmod +x nebo v nautilu "povolit spouštět jako program" ve vlastnostech.
3) nejlépe pomocí mythwebu (nastavení - mythtv) nastavit jako "user job" takto:
LC_ALL=cs_CZ.UTF-8 /usr/bin/mythtomkv.sh "%FILE%" "%TITLE% - %SUBTITLE%"
to lc_all je tam proto, že jinak mythtv ten skript spustí s nějakým jiným locale a výsledné názvy jsou useknuté u prního diakritického znaménka
3a) pojmenovat (též pomocí mythwebu - nastavení, mythtv) ten user job třeba Mythtomkv, fantazii se meze nekladou
4) restartovat mythbackend
/etc/init.d/mythbackend stop
/etc/init.d/mythbackend start
(možná je na to i ikonka někde v menu :) )
5) v menu sledování nahrávek v mythfrontendu dát "i" (info) na pokusnou nahrávku, potom "volby úlohy" a vybrat objevivší se Mythtomkv
Tady je:
#!/bin/sh
# mythtomkv.sh 0.01
# gnu/gpl v3
# http://mythnotes.blogspot.com
# ------------------
# adresare
RECORDINGS=/mnt/myth/nahravky
OUTPUT=/home/mythtv/video
# definice promennych
SOUND="-oac lavc -lavcopts acodec=mp2"
PICTURE=dummy
#ASPECTRATIO="-aspect 16:9"
ASPECTRATIO="-aspect 4:3"
TEMPORARY=/tmp/mythtomkv-temp-$$
SOUNDFILE=/tmp/mythtomkv-sound-$$
OGGFILE=/tmp/mythtomkv-ogg-$$
PASSLOGFILE=/tmp/mythtomkv-pass1-$$
#OUTFILE=/home/mythtv/video/$2-$$.mkv
TEXTFILE=/tmp/mythtomkv-text-$$
SED=/usr/bin/sed
# lokace programu:
MENCODER="/usr/bin/nice -n10 /usr/bin/mencoder"
MPLAYER="/usr/bin/nice -n10 /usr/bin/mplayer"
FFMPEG2THEORA="/usr/bin/nice -n10 /usr/bin/ffmpeg2theora"
MKVMERGE="/usr/bin/nice -n10 /usr/bin/mkvmerge"
cd /tmp
# nazev souboru
echo $* | $SED "s/$1//g" | $SED 's/\//-/g' | $SED 's/^[ \t]*//' | $SED 's/\"//' | $SED 's/:/-/g' | $SED 's/</-/g' | $SED 's/>/-/g' | $SED 's/?/-/g' | $SED 's/@/at/g' | $SED 's/^[ ]*$/-/' > $TEXTFILE # vypise parametry posle je sedu ktery odstrani nazev souboru pak odstrani lomitka a nakonec pripadne mezery na zacatku
OUTPUTNAME=`cat "${TEXTFILE}"` # vypise shora ziskany nazev do promenne outputname
# PASS 1
# MP4
#$MENCODER $RECORDINGS/$1 $SOUND -ovc xvid -xvidencopts pass=1 -vf lavcdeint,scale=384:288 $ASPECTRATIO -passlogfile $PASSLOGFILE -o "/dev/null"
# x264
$MENCODER $RECORDINGS/$1 $SOUND -ovc x264 -x264encopts turbo=1:subq=1:frameref=1:bframes=2:pass=1 $ASPECTRATIO -passlogfile $PASSLOGFILE -o "/dev/null"
# PASS 2
# MP4
#$MENCODER $RECORDINGS/$1 $SOUND -ovc xvid -xvidencopts pass=2:bitrate=500:chroma_opt:vhq=4:bvhq=1:quant_type=mpeg -vf lavcdeint,scale=384:288 $ASPECTRATIO -passlogfile $PASSLOGFILE -o "$TEMPORARY"
# x264
$MENCODER $RECORDINGS/$1 $SOUND -ovc x264 -x264encopts bitrate=926:subq=7:8x8dct:me=umh:frameref=5:b_adapt:bframes=3:b_pyramid:weight_b:trellis=2:brdo:bime:nofast_pskip $ASPECTRATIO -passlogfile $PASSLOGFILE -o "$TEMPORARY"
# EXTRAKCE ZVUKU
$MPLAYER -nolirc -dumpaudio $TEMPORARY -dumpfile $SOUNDFILE
# OGG
$FFMPEG2THEORA $SOUNDFILE -o $OGGFILE
# MKV
cd $OUTPUT
$MKVMERGE --noaudio $TEMPORARY --novideo $OGGFILE -o "${OUTPUTNAME}".$$.mkv
# UKLID
cd /tmp
rm $TEMPORARY
rm $SOUNDFILE
rm $OGGFILE
rm $PASSLOGFILE
rm $TEXTFILE
Poznámky
*K dosažení obdobného cíle jsou i jiné skripty
- na stánkách wiki mythtv umístěný skript v perlu, též tvoří mkv, ale je na můj vkus moc složitý a dlouhý, tekže se mi parametry konverze těžko upravují k obrazu svému, navíc má spoustu závislostí
- skript to264.sh Jaye Sprenkela - výstup jen do avi, a licence "kdykoli můžu odvolat cokoli" (proto je v tom mém vzhledem k rozsahu a komplikovanosti asi směšný odkaz na GPLv3), jeho výhoda je ale to, že umí vytáhnout z mythtv databáze i střih. Používal jsem ho až donedávna, a dost se jím inspriruji.
*Provozuji to na OpenSuSE, kde mám nahrávací server. Nevidím ale důvod, proč by to nejelo i jinde, tedy na Ubuntu :)
-
Skvele, pujdu to nekdy zkusit. Az budes mit zase neco dobreho, tak se podel :-) Ja jedu na MythBuntu 8.04 a musim ho fakt pochvalit, jede jako hodinky.
btw, pouzivas pro MythTV porad TVxb na parabole nebo jsi presel na stahovani tech uz pripravenych XMLTV dat primo z webu, jak jsem to tu nekde asi pred 3 tydny videl? Ja jsem porad na parabole, ale ty 4 dny dopredu je fakt malo :-(
-
Zatím jedu na tvxb - idnes.cz [14 dní dopředu] (je to v některém z threadů, ve kterých jsem to tu řešil), až vypadne, zkusím to přímé xmltv. DVB programy ale tahám z EIT - je tam víc informací :)
-
Další skript, tentokráte pro převod do Ogg Theora formátu.
#!/bin/sh
#
# mythtotheora.sh 0.02
#
# GNU GPLv3
#
# ------------------
# adresare
RECORDINGS=/mnt/myth/nahravky
OUTPUT=/home/mythtv/video
# definice promennych
SOUND="-a 0"
PICTURE="-x 512 -y 384 -v 5"
#PICTURE="-x 384 -y 288 -v 5"
#ASPECTRATIO="--aspect 16:9"
ASPECTRATIO="--aspect 4:3"
TEXTFILE=/tmp/mythtotheora-text-$$
DAY=`date +%g-%j-%H%M`
DATUM=`date +%F`
# lokace programu
FFMPEG2THEORA="/usr/bin/nice -n10 /usr/bin/ffmpeg2theora"
SED=/usr/bin/sed
cd /tmp
# nazev souboru
echo $* | $SED "s/$1//g" | $SED 's/\//-/g' | $SED 's/^[ \t]*//' | $SED 's/\"//' | $SED 's/:/-/g' | $SED 's/</-/g' | $SED 's/>/-/g' | $SED 's/?/-/g' | $SED 's/@/at/g' | $SED 's/^[ ]*$/-/' > $TEXTFILE
OUTPUTNAME=`cat "${TEXTFILE}"` # vypise shora ziskany nazev do promenne outputname
# KONVERZE
cd $OUTPUT
$FFMPEG2THEORA --sync --optimize $PICTURE $ASPECTRATIO $SOUND --title "${OUTPUTNAME}" --location "$1" --artist "MythTV" --date "${DATUM}" -o "${OUTPUTNAME}"."${DAY}".ogv $RECORDINGS/$1
# UKLID
cd /tmp
rm $TEXTFILE
Jak nastavit
0) nainstalovat ffmpeg2theoru
1) nastavit si v tom skriptíku správné cesty, kam vám ukládá mythtv nahrávky a kam chcete, aby se to předělávalo, dále jestli se jedná o 4:3 nebo 16:9 materiál a kvalitu zvuku a videa (parametry -a a -v, hodnoty od 0 /nejhorší/ do 10 /nejlepší) - kromě cest vše přidáváním a odebíráním znaků.
2) nakopírovat do /usr/bin a přidat spustitelný příznak (chmod +x nebo v nautilu "povolit spouštět jako program" ve vlastnostech.
3) nejlépe pomocí mythwebu (nastavení - mythtv) nastavit jako "user job" takto:
4) restartovat mythbackend
/etc/init.d/mythbackend stop
/etc/init.d/mythbackend start
(možná je na to i ikonka někde v menu :) )
5) v menu sledování nahrávek v mythfrontendu dát "i" (info) na pokusnou nahrávku, potom "volby úlohy" a vybrat objevivší se mythtotheora skript.