Portál AbcLinuxu, 31. října 2025 12:27
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é.
 Když to někdo vylepší, muže mi to poslat do diskuse, rád si to u sebe vylepším také.
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.
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    
 12.8.2007 23:39
Jardík             | skóre: 40
             | blog: jarda_bloguje
        12.8.2007 23:39
Jardík             | skóre: 40
             | blog: jarda_bloguje
            
         12.8.2007 23:54
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
        12.8.2007 23:54
Jiří Němec             | skóre: 22
             | blog: BluPix
             | Horní Smrčné
         13.8.2007 00:04
Jardík             | skóre: 40
             | blog: jarda_bloguje
        13.8.2007 00:04
Jardík             | skóre: 40
             | blog: jarda_bloguje
            
         
             13.8.2007 08:58
msk             | skóre: 27
             | blog: msk
        13.8.2007 08:58
msk             | skóre: 27
             | blog: msk
            
        
#!/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 18:38
Dalibor Smolík             | skóre: 54
             | blog: Postrehy_ze_zivota
             | 50°5'31.93"N,14°19'35.51"E
        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
        #! /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;
 13.8.2007 18:59
Jardík             | skóre: 40
             | blog: jarda_bloguje
        13.8.2007 18:59
Jardík             | skóre: 40
             | blog: jarda_bloguje
            
         
             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
        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
         14.8.2007 00:33
Jardík             | skóre: 40
             | blog: jarda_bloguje
        14.8.2007 00:33
Jardík             | skóre: 40
             | blog: jarda_bloguje
            
         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
        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
         . 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.
. 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.
             14.8.2007 00:35
Jardík             | skóre: 40
             | blog: jarda_bloguje
        14.8.2007 00:35
Jardík             | skóre: 40
             | blog: jarda_bloguje
            
        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í ...
 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
        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
         To by se mi teda nechtělo to pokaždé editovat..
 To by se mi teda nechtělo to pokaždé editovat..
            ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.