Dvb script gui/scriptcode: Unterschied zwischen den Versionen
Escho (Diskussion | Beiträge) (lauffähig) |
Escho (Diskussion | Beiträge) (Programmende verändert) |
||
| Zeile 9: | Zeile 9: | ||
#Name: dvb_script_gui_arbeitsscript | #Name: dvb_script_gui_arbeitsscript | ||
| − | #Version: 0.0. | + | #Version: 0.0.3 |
| − | #Erstellungsdatum: | + | #Erstellungsdatum: 15.10.2008 |
#Autor: escho (www.linux-club.de) | #Autor: escho (www.linux-club.de) | ||
#Benutzung auf eigene Gefahr | #Benutzung auf eigene Gefahr | ||
| Zeile 76: | Zeile 76: | ||
fenster1_mehr "" | fenster1_mehr "" | ||
fenster1_mehr "Ende" | fenster1_mehr "Ende" | ||
| − | kdialog --passivepopup "Programmende" | + | kdialog --passivepopup "Programmende" 1000 |
fenster1 "" | fenster1 "" | ||
exit | exit | ||
| Zeile 447: | Zeile 447: | ||
authoring_ohne_menue | authoring_ohne_menue | ||
screenshot | screenshot | ||
| − | brennen_video_dvd ;; | + | brennen_video_dvd |
| + | programmende ;; | ||
12) filmauswahl_dvd | 12) filmauswahl_dvd | ||
| Zeile 454: | Zeile 455: | ||
multiplexen | multiplexen | ||
authoring_ohne_menue | authoring_ohne_menue | ||
| − | sichern_dvd_struktur ;; | + | sichern_dvd_struktur |
| + | programmende ;; | ||
13) verzeichnisauswahl_dvd | 13) verzeichnisauswahl_dvd | ||
screenshot | screenshot | ||
| − | brennen_video_dvd ;; | + | brennen_video_dvd |
| + | programmende ;; | ||
esac | esac | ||
| Zeile 467: | Zeile 470: | ||
21) filmauswahl_ts | 21) filmauswahl_ts | ||
pjx_ts_gui | pjx_ts_gui | ||
| − | brennen_ts ;; | + | brennen_ts |
| + | programmende ;; | ||
22) filmauswahl_ts | 22) filmauswahl_ts | ||
pjx_ts_gui | pjx_ts_gui | ||
| − | sichern_ts ;; | + | sichern_ts |
| + | programmende ;; | ||
23) verzeichnisauswahl_ts | 23) verzeichnisauswahl_ts | ||
| − | brennen_ts ;; | + | brennen_ts |
| + | programmende ;; | ||
esac | esac | ||
| Zeile 484: | Zeile 490: | ||
pjx_demux_gui | pjx_demux_gui | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
32) filmauswahl_clip | 32) filmauswahl_clip | ||
| Zeile 490: | Zeile 497: | ||
ac3_behalten | ac3_behalten | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
33) filmauswahl_clip | 33) filmauswahl_clip | ||
| Zeile 496: | Zeile 504: | ||
mp2_behalten | mp2_behalten | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
34) filmauswahl | 34) filmauswahl | ||
mpeg1_input | mpeg1_input | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
37) filmauswahl_clip | 37) filmauswahl_clip | ||
| Zeile 508: | Zeile 518: | ||
normalisieren | normalisieren | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
38) filmauswahl | 38) filmauswahl | ||
| Zeile 514: | Zeile 525: | ||
normalisieren | normalisieren | ||
multiplexen | multiplexen | ||
| − | sichern_clip ;; | + | sichern_clip |
| + | programmende ;; | ||
esac | esac | ||
| Zeile 522: | Zeile 534: | ||
case $was_tun in | case $was_tun in | ||
| − | 81) oodraw -o $direktdruck_pfad/videodvd.odg ;; | + | 81) oodraw -o $direktdruck_pfad/videodvd.odg |
| − | 82) oodraw -o $direktdruck_pfad/datendvd.odg ;; | + | programmende ;; |
| + | |||
| + | 82) oodraw -o $direktdruck_pfad/datendvd.odg | ||
| + | programmende ;; | ||
esac | esac | ||
| − | |||
</pre> | </pre> | ||
Version vom 15. Oktober 2008, 18:14 Uhr
| Vom DVB zur DVD, die GUI: Anleitungen - Installation - GUI-Kommanderscript - Arbeitsscript - Dokumentation |
| Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist. |
#!/bin/bash
#was_tun=`echo @Self.item(0)`
was_tun=$1
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++BESCHREIBUNG ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#Name: dvb_script_gui_arbeitsscript
#Version: 0.0.3
#Erstellungsdatum: 15.10.2008
#Autor: escho (www.linux-club.de)
#Benutzung auf eigene Gefahr
#Dieses Shell Script automatisiert weitgehend die Vorgänge, die nötig sind, um aus einer DVB-Aufnahme
#eine abspielbare Video-DVD zu erzeugen. Es ist nur zusammen mit dem Installationsscript und dem GUI-Script lauffähig.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Funktionen++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Vorbereitung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
installation_erfolgt ()
{
if [ ! -s ~/.dvb_script_gui.ini/pfad_hauptverzeichnis ]
then
kdialog --error "Bitte zuerst Installation starten"
exit
fi
}
voreinstellungen ()
{
brenngeschwindigkeit=8 #maximale Brenngeschwindigkeit
maxgroesse=4600000000 #DVD-Größe (für das Requantisieren)
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Für's Austesten °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
stop ()
{
kdialog --msgbox "Programm unterbrochen"
exit
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Kommanderfenster °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
fenster1 ()
{
echo "$1" > ~/.dvb_script_gui.ini/fortschrittfenster
}
fenster1_mehr ()
{
echo "$1" >> ~/.dvb_script_gui.ini/fortschrittfenster
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Abbruch °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
benutzerabbruch ()
{
fenster1_mehr ""
fenster1_mehr "Abbruch durch den Benutzer."
programmende
}
funktionsabbruch ()
{
fenster1_mehr ""
fenster1_mehr "$1"
programmende
}
programmende ()
{
fenster1_mehr ""
fenster1_mehr "Ende"
kdialog --passivepopup "Programmende" 1000
fenster1 ""
exit
}
variablen ()
{
hauptverzeichnis=`cat ~/.dvb_script_gui.ini/pfad_hauptverzeichnis`
name[0]=mplex
name[1]=tcrequant
name[2]=dvdauthor
name[3]=ProjectX.jar
name[4]=normalize
name[5]=ffmpeg
name[6]=growisofs
name[7]=vlc
name[8]=mplayer
pfad[0]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[0]`
pfad[1]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[1]`
pfad[2]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[2]`
pfad[3]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[3]`
pfad[4]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[4]`
pfad[5]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[5]`
pfad[6]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[6]`
pfad[7]=`cat ~/.dvb_script_gui.ini/hilfsprogramme/pfad[7]`
mplex=${pfad[0]}/${name[0]}
tcrequant=${pfad[1]}/${name[1]}
dvdauthor=${pfad[2]}/${name[2]}
pjx=${pfad[3]}/${name[3]}
normalize=${pfad[4]}/${name[4]}
ffmpeg=${pfad[5]}/${name[5]}
growisofs=${pfad[6]}/${name[6]}
vlc=${pfad[7]}/${name[7]}
x_ini=~/.dvb_script_gui.ini/X.ini.film
tmp_pfad1=${hauptverzeichnis}/temp/tmp1
tmp_pfad2=${hauptverzeichnis}/temp/tmp2
dvdstruktur_pfad=${hauptverzeichnis}/temp/struktur
sicherungs_pfad=${hauptverzeichnis}/save
screenshot_pfad=${hauptverzeichnis}/screenshot
aufnahme_pfad=`cat ~/.dvb_script_gui.ini/aufnahmeordner`
direktdruck_pfad=`cat ~/.dvb_script_gui.ini/schablonenordner`
clip_pfad=`cat ~/.dvb_script_gui.ini/clipordner`
}
playlist_aktualisieren ()
{
find $clip_pfad/* > ~/.mplayer/playlist
}
loeschen_tmp ()
{
fenster1_mehr "Löschen tmp, kann etwas dauern ..."
rm -r ${hauptverzeichnis}/temp/tmp1/*
rm -r ${hauptverzeichnis}/temp/tmp2/*
rm -r ${hauptverzeichnis}/temp/struktur/*
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Auswahl der Eingangsdateien°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
filmauswahl_dvd ()
{
brenn_pfad=${dvdstruktur_pfad}
filmauswahl
}
filmauswahl_ts ()
{
brenn_pfad=${tmp_pfad1}
filmauswahl
}
filmauswahl_clip ()
{
filmauswahl
}
filmauswahl ()
{
fenster1_mehr "Quelldatei auswählen ..."
quelldatei=`kdialog --caption "Filmauswahl" --geometry 600x500-0+0 --getopenfilename "${aufnahme_pfad}"`
if [ $? != 0 ]
then
benutzerabbruch
fi
}
verzeichnisauswahl_dvd ()
{
verzeichnistyp="*_dvd"
verzeichnisauswahl
}
verzeichnisauswahl_ts ()
{
verzeichnistyp="*_ts"
verzeichnisauswahl
}
verzeichnisauswahl ()
{
fenster1_mehr "Quelldatei auswählem ..."
anzahl_der_sicherungen=`find $sicherungs_pfad/$verzeichnistyp -maxdepth 0 -type d | wc -l`
hilfsverzeichnis=`find $sicherungs_pfad/$verzeichnistyp -maxdepth 0 -type d`
case $anzahl_der_sicherungen in
0) funktionsabbruch "Es gibt nichts passendes zum Brennen. Das Script wird nun beendet." ;;
1) fenster1_mehr "Folgende Sicherung wird gebrannt: $hilfsverzeichnis"
verzeichnis=$hilfsverzeichnis ;;
*) verzeichnis=`kdialog --combobox "Welche Datei soll gebrannt werden?" $hilfsverzeichnis`
if [ $? != 0 ]
then
benutzerabbruch
fi ;;
esac
brenn_pfad=$verzeichnis
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Eingangsverarbeitung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
#-----Schneiden und Demultiplexen-----
pjx_demux_gui ()
{
fenster1_mehr "ProjectX: Schneiden und demultiplexen"
java -jar ${pjx} -demux -gui -ini $x_ini -out ${tmp_pfad1} -name film "$quelldatei"
}
#-----Schneiden und Wandeln nach TS-----
pjx_ts_gui ()
{
fenster1_mehr "ProjectX: Schneiden und demultiplexen"
java -jar ${pjx} -tots -gui -split 4300 -ini $x_ini -out ${tmp_pfad1} -name film "$quelldatei"
}
mpeg1_input ()
{
fenster1_mehr "ffmpeg: Decodierung Audio"
${ffmpeg} -i "${quelldatei}" ${tmp_pfad1}/film.mp2 -vcodec copy ${tmp_pfad1}/film.m1v
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Bearbeitung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
requantisieren ()
{
videogroesse=`du -bc ${tmp_pfad1}/*.m2v | cut -f1 | tail -n 1` #Berechnung des Requantisierungsfaktors
audio_summe=`du -bc ${tmp_pfad1}/*.ac3 ${tmp_pfad1}/*.mp2 | cut -f1 | tail -n 1`
audio_video_summe=`du -bc ${tmp_pfad1}/*.ac3 ${tmp_pfad1}/*.mp2 ${tmp_pfad1}/*.m2v | cut -f1 | tail -n 1`
requantisierungsfaktor=`echo "scale=8 ; ${videogroesse}/$((maxgroesse-audio_summe))*1.04" | bc`
if [ $audio_video_summe -ge $maxgroesse ] #Wenn der Film zu gross für eine einzige DVD ist, Requantisierung anstossen
then
fenster1_mehr "tcrequant: Requantisieren mit Faktor ${requantisierungsfaktor}"
${tcrequant} -d2 -i ${tmp_pfad1}/film.m2v -o ${tmp_pfad1}/film.requant -f ${requantisierungsfaktor}
mv ${tmp_pfad1}/film.requant ${tmp_pfad1}/film.m2v
fi
}
#........mp2-Ton auf einheitliche Lautstärke bringen (-12dBfs)..........
normalisieren ()
{
mv ${tmp_pfad1}/film.mp2 ${tmp_pfad2}
rm ${hauptverzeichnis}/initialisierung/temp/tmp1/*.mp2
fenster1_mehr "ffmpeg: Ton decodieren"
${ffmpeg} -i ${tmp_pfad2}/film.mp2 ${tmp_pfad2}/film.mp2.wav
fenster1_mehr "normalize: Ton normalisieren"
${normalize} ${tmp_pfad2}/film.mp2.wav 2>~/.DVB_Script/fenster/Konsolenausgabe
fenster1_mehr "ffmpeg: Ton encodieren"
${ffmpeg} -i ${tmp_pfad2}/film.mp2.wav -acodec mp2 -ab 192k ${tmp_pfad1}/film.mp2
rm ${hauptverzeichnis}/initialisierung/temp/tmp2/*
}
ac3_behalten ()
{
if [ ! -e ${hauptverzeichnis}/initialisierung/temp/tmp1/*.ac3 ]
then
funktionsabbruch "Der Clip enthält keinen AC3-Ton. Das Script wird nun beendet."
fi
rm ${hauptverzeichnis}/initialisierung/temp/tmp1/*.mp2
}
mp2_behalten ()
{
if [ ! -e ${hauptverzeichnis}/initialisierung/temp/tmp1/*.mp2 ]
then
funktionsabbruch "Der Clip enthält keinen mp2-Ton. Das Script wird nun beendet."
fi
rm ${hauptverzeichnis}/initialisierung/temp/tmp1/*.ac3
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Multiplexen, Codieren°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
multiplexen ()
{
fenster1_mehr "mplex: Multiplexen, kann etwas dauern ..."
mpeg1_video=
mpeg2_video=
mp2_audio=
ac3_audio=
mpeg1_video=`find ${tmp_pfad1} | grep "m1v"`
mpeg2_video=`find ${tmp_pfad1} | grep "m2v"`
mp2_audio=`find ${tmp_pfad1} | grep "mp2"`
ac3_audio=`find ${tmp_pfad1} | grep "ac3"`
${mplex} -v1 -f8 -o ${tmp_pfad1}/film.mpg ${mpeg1_video} ${mpeg2_video} ${ac3_audio} ${mp2_audio}
if [ ! -e ${tmp_pfad1}/film.mpg ]
then
funktionsabbruch "Es konnte keine Datei multiplext werden!"
fi
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Author'n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
authoring_ohne_menue ()
{
fenster1_mehr "dvdauthor: Erzeugen der DVD-Struktur"
${dvdauthor} -o ${dvdstruktur_pfad} -t ${tmp_pfad1}/film.mpg #VOBs und "Kapitel"-IFOs
${dvdauthor} -o ${dvdstruktur_pfad} -T #VIDEO_TS.BUP und VIDEO_TS.IFO
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Screenshots°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
screenshot ()
{
fenster1_mehr "vlc: Screenshot"
${vlc} --no-audio --snapshot-path ${screenshot_pfad} dvd://${brenn_pfad}
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Brennen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
#----------Video-DVD--------------
brennen_video_dvd ()
{
fenster1_mehr "growisofs: Video-DVD brennen"
video_dvd_bereit
fenster1_mehr "Brennen beginnt"
${growisofs} -speed=${brenngeschwindigkeit} -dvd-compat -Z /dev/dvd -dvd-video ${brenn_pfad}
funktionsabbruch "Brennen fertig. Programm beendet"
}
video_dvd_bereit ()
{
${growisofs} -dry-run -speed=${brenngeschwindigkeit} -dvd-compat -Z /dev/dvd -dvd-video ${brenn_pfad}
if [ $? = 0 ]
then
return
else
kdialog --warningcontinuecancel "DVD nicht bereit"
if [ $? = 0 ]
then
video_dvd_bereit
else
benutzerabbruch
fi
fi
}
#--------------Daten-DVD------------
brennen_ts ()
{
fenster1_mehr "growisofs: Daten-DVD brennen"
dvdzahl=`find ${brenn_pfad} -type f | wc -l`
fenster1_mehr ""
fenster1_mehr "Anzahl der notwendigen DVDs: ${dvdzahl}"
for((i=1; i<=${dvdzahl}; i++))
do
loop_brennen_ts
done
funktionsabbruch "Brennen fertig. Programm beendet"
}
loop_brennen_ts ()
{
daten_dvd_bereit
kdialog --msgbox "Bitte DVD Nr.: $i einlegen"
if [ $? = 0 ]
then
fenster_mehr ""
fenster_mehr "Brennvorgang gestartet"
${growisofs} -speed=${brenngeschwindigkeit} -Z /dev/dvd -allow-limited-size -R -J ${brenn_pfad}/"film($((i-1)))[remux].ts"
else
benutzerabbruch
fi
}
daten_dvd_bereit ()
{
${growisofs} -dry-run -speed=${brenngeschwindigkeit} -Z /dev/dvd -allow-limited-size -R -J ${brenn_pfad}/"film($((i-1)))[remux].ts"
if [ $? = 0 ]
then
return
else
kdialog --warningcontinuecancel "DVD nicht bereit"
if [ $? = 0 ]
then
loop_brennen_ts
else
benutzerabbruch
fi
fi
}
#°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Sichern°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
sichern_dvd_struktur ()
{
fenster1_mehr "Sichern der DVD-Stuktur"
sicherungsordner="$(date +%Y%m%d%H%M%S)_dvd"
mkdir ${sicherungs_pfad}/${sicherungsordner}
mv ${dvdstruktur_pfad}/* ${sicherungs_pfad}/${sicherungsordner}
funktionsabbruch "Datei gesichert nach ${sicherungs_pfad}/${sicherungsordner}. Programm beendet"
}
sichern_ts ()
{
fenster1_mehr "Sichern des TS-File"
sicherungsordner="$(date +%Y%m%d%H%M%S)_ts"
mkdir ${sicherungs_pfad}/${sicherungsordner}
mv ${tmp_pfad1}/*.ts ${sicherungs_pfad}/${sicherungsordner}
funktionsabbruch "Datei gesichert nach ${sicherungs_pfad}/${sicherungsordner}. Programm beendet"
}
sichern_clip ()
{
fenster1_mehr "Speichern des Videoclips"
clipspeicher=`kdialog --title "$quelldatei" --getsavefilename ${clip_pfad}`
if [ $? != 0 ]
then
benutzerabbruch
fi
mv ${tmp_pfad1}/film.mpg "${clipspeicher}"
playlist_aktualisieren
funktionsabbruch "Videoclip gespeichert: ${clipspeicher}"
}
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Hauptprogramm++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#-----Initialisierung-----
installation_erfolgt
exec 2> ~/.dvb_script_gui.ini/debugfenster
voreinstellungen
variablen
playlist_aktualisieren
loeschen_tmp
#-----untermenue_video_dvd-----
case $was_tun in
11) filmauswahl_dvd
pjx_demux_gui
requantisieren
multiplexen
authoring_ohne_menue
screenshot
brennen_video_dvd
programmende ;;
12) filmauswahl_dvd
pjx_demux_gui
requantisieren
multiplexen
authoring_ohne_menue
sichern_dvd_struktur
programmende ;;
13) verzeichnisauswahl_dvd
screenshot
brennen_video_dvd
programmende ;;
esac
#-----untermenue_ts-----
case $was_tun in
21) filmauswahl_ts
pjx_ts_gui
brennen_ts
programmende ;;
22) filmauswahl_ts
pjx_ts_gui
sichern_ts
programmende ;;
23) verzeichnisauswahl_ts
brennen_ts
programmende ;;
esac
#-----untermenue_videoclip-----
case $was_tun in
31) filmauswahl_clip
pjx_demux_gui
multiplexen
sichern_clip
programmende ;;
32) filmauswahl_clip
pjx_demux_gui
ac3_behalten
multiplexen
sichern_clip
programmende ;;
33) filmauswahl_clip
pjx_demux_gui
mp2_behalten
multiplexen
sichern_clip
programmende ;;
34) filmauswahl
mpeg1_input
multiplexen
sichern_clip
programmende ;;
37) filmauswahl_clip
pjx_demux_gui
mp2_behalten
normalisieren
multiplexen
sichern_clip
programmende ;;
38) filmauswahl
mpeg1_input
normalisieren
multiplexen
sichern_clip
programmende ;;
esac
#----untermenue_direktdruck
case $was_tun in
81) oodraw -o $direktdruck_pfad/videodvd.odg
programmende ;;
82) oodraw -o $direktdruck_pfad/datendvd.odg
programmende ;;
esac
