Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Archivace nahrávek z MythTV do MKV (h264+ogg) - mythtomkv.sh  (Přečteno 3357 krát)

Rincewind

  • Stálý člen
  • **
  • Příspěvků: 649
  • Na fórum jsem nezanevřel, jenom nestíhám....
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:

Kód: [Vybrat]
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
Kód: [Vybrat]
/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:

Kód: [Vybrat]
#!/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 :)
« Poslední změna: 24 Června 2008, 23:23:10 od Rincewind »

tobr

  • Návštěvník
  • Příspěvků: 64
Re: Archivace nahrávek z MythTV do MKV (h264+ogg) - mythtomkv.sh
« Odpověď #1 kdy: 18 Května 2008, 14:01:26 »
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 :-(
If you can't learn to do something well, learn to enjoy doing it poorly.
Ubuntu 10.04 32bit, Athlon II X4 635, M3N78-VM (nVidia 8200), 2x2GB, SATA WD640AAKS, TV Genius Video Wonder III

Rincewind

  • Stálý člen
  • **
  • Příspěvků: 649
  • Na fórum jsem nezanevřel, jenom nestíhám....
Re: Archivace nahrávek z MythTV do MKV (h264+ogg) - mythtomkv.sh
« Odpověď #2 kdy: 18 Května 2008, 14:12:02 »
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í :)

Rincewind

  • Stálý člen
  • **
  • Příspěvků: 649
  • Na fórum jsem nezanevřel, jenom nestíhám....
Re: Archivace nahrávek z MythTV do MKV (h264+ogg) - mythtomkv.sh
« Odpověď #3 kdy: 08 Června 2008, 15:40:27 »
Další skript, tentokráte pro převod do Ogg Theora formátu.

Kód: [Vybrat]

#!/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

Kód: [Vybrat]
/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.

 

Provoz zaštiťuje spolek OpenAlt.