Portál AbcLinuxu, 29. dubna 2024 11:52

Skript pro vytvoření DVD-VIDEO obrazu

12.8.2007 23:27 | Přečteno: 2340× | Linux | Výběrový blog | poslední úprava: 13.8.2007 13:28

Dnes jsem si pro svou vlastní potřebu vytvořil skriptík, který mi vytvoří DVD-VIDEO ISO obraz ze složky obsahující strukturu DVD. Používá to zenity a mkisofs a je to určené převážně pro nautilus (plugin nautilus-actions). A protože nejsem hajzl, tak vám ho tu pěkně vystavím. Je to pod licencí MIT, takže si s tím dělejte, co uznáte za vhodné.

#!/bin/bash

if [ -z "$1" ]; then
	zenity --error --text="Zadejte název adresáře"
	exit 1
fi

DIR="`sed -e \"s/'//g\" <<<\"$1\"`"

if [ ! -d "${DIR}" ]; then
	zenity --error --text="Adresář neexistuje"
	exit 1
fi

if [ ! -d "${DIR}/AUDIO_TS" -o ! -d "${DIR}/VIDEO_TS" ]; then
	zenity --error --text="Adresář neobsahuje platnou strukturu DVD"
	exit 1
fi

DVD_NAME_HINT="`basename \"${DIR}\"`"
DVD_NAME="`zenity --entry --text=\"Zadejte název DVD\" --entry-text=\"${DVD_NAME_HINT}\"`"

if [ $? != 0 -o "${DVD_NAME}" = "" ]; then
	exit 1
fi

OUTPUT_DIR="`dirname \"${DIR}\"`"
OUTPUT_FILE="${OUTPUT_DIR}/${DVD_NAME}.iso"
LOG="${OUTPUT_DIR}/.${DVD_NAME}-mkdvdvideoiso.log"

mkisofs -dvd-video -V "$DVD_NAME" -o "${OUTPUT_FILE}" "${DIR}" >"${LOG}" 2>&1 &

MK_PID=$!

while true
do

	step="`tail -n1 \"${LOG}\" | grep % | cut -d '.' -f1`"
	echo $step

	if [ -n "`cat \"${LOG}\" | grep extents`" ]; then
		echo "100"
	fi
	sleep 0.5

done | zenity --progress --auto-close --title "Vytvářím obraz DVD ..." --text "Vytvářím obraz DVD ..."

if [ $? -eq 0 ]; then
	zenity --info --title "Vytváření obrazu dokončeno." --text "Vytváření obrazu dokončeno."
	wait ${MK_PID}
else
	kill ${MK_PID} >/dev/null 2>&1
fi

rm -f "${LOG}"

Skript uložte třeba jako /usr/bin/mkdvdvideoiso a přidejte mu právo pro spuštění (chmod +x /usr/bin/mkdvdvideoiso). Dále je potřeba nastavit nautilus-actions.

V gnome vlezte do "Systém-Volby-Konfigurace akcí nautilus" a klikněte na "Přidat". Jmenovku dejte třeba "Vytvořit obraz DVD", ikonu "gtk-cdrom", cesta "/usr/bin/mkdvdvideoiso", parametry "%d/%f" (parametry včetně uvozovek). Na kartě podmínky přepněte na "Pouze složky". Potvrďte, zavřete. A jak to funguje?

Máme třeba adresář "/Users/Jarda/Filmy/Tarzan 2" a v něm strukturu DVD (AUDIO_TS a VIDEO_TS/*). Pravým myšítkem klikněte na adresář "/Users/Jarda/Filmy/Tarzan 2" a zvolte "Vytvořit obraz DVD". Zeptá se to na jmenovku disku (např "Tarzan 2" a v adresáři /Users/Jarda/Filmy to vytvoří soubor "Tarzan 2.iso". Proces vytváření indikuje progressbar zenity. Po skončení je zobrazena zpráva.

Má to určitě pár chybek a neměli byste spouštět více procesů v jednom adresáři, jinak se budou mlátit dočasné soubory :-) Když to někdo vylepší, muže mi to poslat do diskuse, rád si to u sebe vylepším také.

Update

Trošičku jsem upravil ten skript, takže by teď mělo být možné výcenásobné spuštění v jednom adresáři.

       

Hodnocení: 60 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Jardík avatar 12.8.2007 23:39 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Odpovědět | Sbalit | Link | Blokovat | Admin
A aby nikdo nenadával na ten první sed, tak je tam kvůli tomu, že mi nautilus předá třeba '/Users/Jarda/Filmy'/'Tarzan 2'.
Věřím v jednoho Boha.
Jiří Němec avatar 12.8.2007 23:54 Jiří Němec | skóre: 22 | blog: BluPix | Horní Smrčné
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Odpovědět | Sbalit | Link | Blokovat | Admin
My uživatelé KDE a k3b jsme opravdu rádi, že nic takového nemusíme řešit.
Spock: "Logic, logic, logic. Logic is the beginning of wisdom, not the end.
Jardík avatar 13.8.2007 00:04 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Kdybych nebyl línej si nainstalovat nejakej jinej pálící program než nautilus-burn, tak to také řešit nemusím :-)
Věřím v jednoho Boha.
msk avatar 13.8.2007 08:58 msk | skóre: 27 | blog: msk
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
A bez gnome:
#!/bin/bash

# definitions

CHAPTER_SEC_SIZE=300
MAX_VIDEO_SEC_SIZE=36000

# usage:
# anyToDvd [ -p ] video.avi [subtitles.srt]

TMP_MPEG=".dvd_mpeg_file.$$.mpg"
TMP_DVD=".dvd.$$"


# check existence of utilities
        FAIL=0
        if ! which mplayer; then
                echo "Missing mplayer"
                let FAIL+=1
        fi
        if ! which mencoder; then
                echo "Missing mencoder"
                let FAIL+=1
        fi
        if ! which dvdauthor; then
                echo "Missing dvdauthor"
                let FAIL+=1
        fi
        if ! which mkisofs; then
                echo "Missing mkisofs"
                let FAIL+=1
        fi
        if [ "$FAIL" != "0" ]; then
                exit 1
        fi


# parse args
        if [ "$1" == "-p" ]; then
                SRC=$2
                SUB=$3
        else
                SRC=$1
                SUB=$2
        fi


# if asked for play, do it, else encode video to dvd
if [ "$1" == "-p" ]; then

        mplayer $SRC $SUB

# else encode
else

        # copy cp1250 subtitles
        # using subtitles?
                if [ "$SUB" != "" ] && [ -e $SUB ]; then
                        mkdir -p ~/.mplayer/font/
                        cp /usr/share/mplayer/font/cp1250/arial-18/* /home/msk/.mplayer/font/
                        if [ "$?" != "0" ]; then
                                echo "Edit script and specify correct font to copy"
                                exit 1
                        fi
                fi

        # encode video
                # base switches
                MENCODER="mencoder -oac lavc -ovc lavc -of mpeg "
                MENCODER="$MENCODER -mpegopts format=dvd -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192:aspect=16/9 "
                # using subtitles?
                if [ "$SUB" != "" ] && [ -e $SUB ]; then
                        MENCODER="$MENCODER -sub $SUB "
                fi
                # closing options
                MENCODER="$MENCODER -ofps 25 -o $TMP_MPEG $SRC"

                # do it
                $MENCODER

        # create long chapter time list for dvdauthor
                LTL="0"
                for i in $(seq $CHAPTER_SEC_SIZE $CHAPTER_SEC_SIZE $MAX_VIDEO_SEC_SIZE); do
                        LTL="$LTL,$i"
                done

        # author dvd
                dvdauthor -o $TMP_DVD -c $LTL $TMP_MPEG
                dvdauthor -T -o $TMP_DVD

        # make image
                mkisofs -dvd-video -o $SRC.iso $TMP_DVD

        # remove temp files
               rm -rf $TMP_DVD $TMP_MPEG

        # done
                echo "Output created as $SRC.iso"


fi

Bez kontrol, titulkov a balastu okolo su to 4 commandy: mencoder, dvdauthor, dvdauthor -T, mkisofs.
13.8.2007 14:09 Fëannatar | skóre: 19 | blog: Annals of Taurelador
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
My uživatelé Gnome a Brasera také ne. Dokonce i chráněná DVD už umí od verze 0.6 zkopírovat (při použití libdvdcss)...
Your freedom ends where others' begins. It's the same with software => promote LGPL.
Dalibor Smolík avatar 13.8.2007 18:38 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Odpovědět | Sbalit | Link | Blokovat | Admin
No, já mám na to jednoduché skripty:
1) převod DVD do iso obrazu
#! /bin/sh
# toto vytvori iso obraz, nutno upravit nazev filmu
ISOFILE="navrat_krale_1.iso"
cd /home/uzivatel/filmyiso;
mkisofs -dvd-video -udf -o $ISOFILE /home/dalibor/isoobrazy;
2) vypálení na DVD
# toto vypali iso obraz, nutno upravit nazev filmu
ISOFILE="navrat_krale_1.iso"
cd /home/uzivatel/filmyiso;
growisofs -speed=1 -Z /dev/cdrom=$ISOFILE;
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
Jardík avatar 13.8.2007 18:59 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
speed=1? To jako hodinu vypaluješ jeden film? To bych se z toho asi pos*al :-)
Věřím v jednoho Boha.
Dalibor Smolík avatar 13.8.2007 19:03 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Ale kdepak, tak dlouho to netrvá. Za to na některém DVD stolním přehrávači mám problémy, když tam tu hodnotu 1 neuvedu. Raději počkám deset minut, než mít nekvalitní DVD. A pokud jde o převod mpg nebo avi souboru na DVD, používám mandvd, podporuje i české titulky a různá menu.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
Jardík avatar 14.8.2007 00:33 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Rychlost 1x je 1350 kB/s. U plného DVD (4589843,75 kB) to tedy dělá 3399 s, tedy Přes 56,5 minuty = skoro hodina.
Věřím v jednoho Boha.
Dalibor Smolík avatar 14.8.2007 00:56 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
dobrá, změřím si čas :-). Spíš mi to v logu ukazuje jako zápis 2,5x (nikoliv 1), což odpovídá těm odhadnutým 20 - 25 minutám. Ale tato rychlost mi vyhovuje, takže proč to nepálí zadanou rychlostí 1 nijak neřeším.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
Jardík avatar 14.8.2007 00:35 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
A pokud jde o převod mpg nebo avi souboru na DVD, používám mandvd, podporuje i české titulky a různá menu.

Ale o tom můj zápis není ...

Věřím v jednoho Boha.
Dalibor Smolík avatar 14.8.2007 00:57 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Vím to. Tuto informaci jsem předal jen pro úplnost.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
14.8.2007 00:51 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: Skript pro vytvoření DVD-VIDEO obrazu
Proč mu raději jméno toho souboru nepředáváš jako argument? :-) To by se mi teda nechtělo to pokaždé editovat..

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.