Portál AbcLinuxu, 6. května 2025 13:15
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é.
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:
#!/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" fiBez kontrol, titulkov a balastu okolo su to 4 commandy: mencoder, dvdauthor, dvdauthor -T, mkisofs.
#! /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;
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í ...
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.