Dvb wiki script/Script: Unterschied zwischen den Versionen
Escho (Diskussion | Beiträge) (überarbeitet für Script-Version 0.6.0) |
Escho (Diskussion | Beiträge) (Version 0.7.0) |
||
Zeile 9: | Zeile 9: | ||
#Name: DVB_Wiki_Buch_Script | #Name: DVB_Wiki_Buch_Script | ||
− | #Version: 0. | + | #Version: 0.7.0 |
− | #Erstellungsdatum: | + | #Erstellungsdatum: 29.8.2008 |
#Autor: escho (www.linux-club.de) | #Autor: escho (www.linux-club.de) | ||
#Benutzung auf eigene Gefahr | #Benutzung auf eigene Gefahr | ||
Zeile 139: | Zeile 139: | ||
screenshot_pfad=$basisverzeichnis/dvd_screenshot | screenshot_pfad=$basisverzeichnis/dvd_screenshot | ||
default_pfad=${basisverzeichnis}/dvd_default | default_pfad=${basisverzeichnis}/dvd_default | ||
− | clip_pfad=~/ | + | clip_pfad=~/Videoclips_mp2_ac3 |
} | } | ||
Zeile 167: | Zeile 167: | ||
} | } | ||
− | # | + | #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Verwaltung / Löschen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° |
loeschen_temporaere_arbeitsordner () | loeschen_temporaere_arbeitsordner () | ||
Zeile 179: | Zeile 179: | ||
echo "*** erledigt" ; echo | echo "*** erledigt" ; echo | ||
+ | } | ||
+ | |||
+ | loeschen_dvd_sicherung () | ||
+ | { | ||
+ | loeschordner="dvd_sicherung" | ||
+ | anzeige_was_wird_geloescht | ||
+ | wirklich | ||
+ | |||
+ | rm -r ${basisverzeichnis}/dvd_sicherung/* | ||
+ | } | ||
+ | |||
+ | loeschen_dvd_screenshot () | ||
+ | { | ||
+ | loeschordner="dvd_screenshot" | ||
+ | anzeige_was_wird_geloescht | ||
+ | wirklich | ||
+ | |||
+ | rm $basisverzeichnis/dvd_screenshot/* | ||
+ | } | ||
+ | |||
+ | basisverzeichnis_aendern () | ||
+ | { | ||
+ | kdialog --msgbox "Es wird folgende Datei gelöscht: | ||
+ | |||
+ | ~/.dvb_wiki_script_arbeitsverzeichnis.txt | ||
+ | |||
+ | Beim nächsten Scriptstart wird sie neu angelegt. | ||
+ | Dann muß ein neues Arbeitsverzeichnis gewählt werden | ||
+ | " | ||
+ | wirklich | ||
+ | |||
+ | rm ~/.dvb_wiki_script_arbeitsverzeichnis.txt | ||
+ | } | ||
+ | |||
+ | deinstallation () | ||
+ | { | ||
+ | kdialog --msgbox "Es werden folgende Dateien gelöscht: | ||
+ | |||
+ | ~/.dvb_wiki_script_arbeitsverzeichnis.txt | ||
+ | ${basisverzeichnis} | ||
+ | |||
+ | DEINSTALLATION DES SCRIPTS | ||
+ | Alle Scriptordner werden gelöscht. | ||
+ | Das Aufnahmeverzeichnis wird gelöscht. | ||
+ | " | ||
+ | wirklich | ||
+ | rm ~/.dvb_wiki_script_arbeitsverzeichnis.txt | ||
+ | rm -r ${basisverzeichnis}/* | ||
+ | rmdir ${basisverzeichnis} | ||
+ | } | ||
+ | |||
+ | anzeige_was_wird_geloescht () | ||
+ | { | ||
+ | cd ~/dvb_wiki_script_basisordner/$loeschordner | ||
+ | ordnerinhalt=`ls -d1 * ` | ||
+ | |||
+ | kdialog --msgbox "$loeschordner enthält folgende Dateien: | ||
+ | |||
+ | $ordnerinhalt" | ||
+ | } | ||
+ | |||
+ | |||
+ | wirklich () | ||
+ | { | ||
+ | kdialog --yesno "??? WIRKLICH LÖSCHEN ???" | ||
+ | if [ $? != 0 ] | ||
+ | then | ||
+ | kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 | ||
+ | exit | ||
+ | fi | ||
} | } | ||
Zeile 188: | Zeile 258: | ||
1 "VIDEO-DVD" on \ | 1 "VIDEO-DVD" on \ | ||
2 "TS-Stream" off \ | 2 "TS-Stream" off \ | ||
− | 3 "Videoclips" off` | + | 3 "Videoclips" off \ |
+ | 9 "Verwaltung" off` | ||
if [ $? != 0 ] | if [ $? != 0 ] | ||
then | then | ||
Zeile 231: | Zeile 302: | ||
33 "Videoclip............ Schneiden und speichern (Ton: MP2 normalisiert)" off \ | 33 "Videoclip............ Schneiden und speichern (Ton: MP2 normalisiert)" off \ | ||
34 "Mpeg1-Clip............Schneiden und speichern (Ton: MP2 normalisiert)" off` | 34 "Mpeg1-Clip............Schneiden und speichern (Ton: MP2 normalisiert)" off` | ||
+ | if [ $? != 0 ] | ||
+ | then | ||
+ | kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 | ||
+ | exit | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | untermenue_verwaltung () | ||
+ | { | ||
+ | was_tun=`kdialog --caption "Verwaltung" --geometry 600x250+400+400 --radiolist "Was also soll genau getan werden?" \ | ||
+ | 91 "Inhalte löschen...... Temporäre Arbeitsordner" on \ | ||
+ | 92 "Inhalte löschen...... gesicherte Aufnahmen (dvd_sicherung)" off \ | ||
+ | 93 "Inhalte löschen...... Screenshots (dvd_screenshot)" off \ | ||
+ | 94 "Basisverzeichnis..... ändern" off \ | ||
+ | 95 "Deinstallation" off` | ||
if [ $? != 0 ] | if [ $? != 0 ] | ||
then | then | ||
Zeile 345: | Zeile 431: | ||
normalisieren () | normalisieren () | ||
{ | { | ||
− | mv ${basisverzeichnis}/dvd_tmp/film.mp2 ${basisverzeichnis}/dvd_tmp1 | + | mv ${basisverzeichnis}/dvd_tmp/film.mp2 ${basisverzeichnis}/dvd_tmp1 2>/dev/null |
− | rm ${basisverzeichnis}/dvd_tmp/*.mp2 | + | rm ${basisverzeichnis}/dvd_tmp/*.mp2 2>/dev/null |
echo "*** Ton decodieren ***" | echo "*** Ton decodieren ***" | ||
− | ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2 ${basisverzeichnis}/dvd_tmp1/film.mp2.wav | + | ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2 ${basisverzeichnis}/dvd_tmp1/film.mp2.wav 2>/dev/null |
echo "*** Ton normalisieren ***" | echo "*** Ton normalisieren ***" | ||
− | ${normalize} | + | ${normalize} ${basisverzeichnis}/dvd_tmp1/film.mp2.wav |
echo "*** Ton encodieren ***" | echo "*** Ton encodieren ***" | ||
− | ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2.wav -acodec mp2 -ab 192k ${tmp_pfad}/film.mp2 2> | + | ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2.wav -acodec mp2 -ab 192k ${tmp_pfad}/film.mp2 2>/dev/null |
rm ${basisverzeichnis}/dvd_tmp1/* | rm ${basisverzeichnis}/dvd_tmp1/* | ||
Zeile 417: | Zeile 503: | ||
{ | { | ||
echo "*** Authoring der DVD ***" | echo "*** Authoring der DVD ***" | ||
− | ${dvdauthor} -o ${dvdstruktur_pfad} -t ${tmp_pfad}/film.mpg | + | ${dvdauthor} -o ${dvdstruktur_pfad} -t ${tmp_pfad}/film.mpg #VOBs und "Kapitel"-IFOs |
${dvdauthor} -o ${dvdstruktur_pfad} -T #VIDEO_TS.BUP und VIDEO_TS.IFO | ${dvdauthor} -o ${dvdstruktur_pfad} -T #VIDEO_TS.BUP und VIDEO_TS.IFO | ||
echo "*** erledigt" ; echo | echo "*** erledigt" ; echo | ||
Zeile 443: | Zeile 529: | ||
echo "*** Video-DVD brennen ***" | echo "*** Video-DVD brennen ***" | ||
kdialog --msgbox "Bitte leere DVD einlegen" | kdialog --msgbox "Bitte leere DVD einlegen" | ||
− | ${growisofs} -speed=${brenngeschwindigkeit} -dvd-compat -Z /dev/dvd -dvd-video ${brenn_pfad} | + | ${growisofs} -speed=${brenngeschwindigkeit} -dvd-compat -Z /dev/dvd -dvd-video ${brenn_pfad} |
kdialog --msgbox "Bitte DVD entnehmen" | kdialog --msgbox "Bitte DVD entnehmen" | ||
echo "*** erledigt" ; echo | echo "*** erledigt" ; echo | ||
Zeile 457: | Zeile 543: | ||
do | do | ||
kdialog --msgbox "Bitte DVD Nr.: $i einlegen" | kdialog --msgbox "Bitte DVD Nr.: $i einlegen" | ||
− | ${growisofs} -speed=${brenngeschwindigkeit} -Z /dev/dvd -allow-limited-size -R -J ${brenn_pfad}/"film($((i-1)))"* | + | ${growisofs} -speed=${brenngeschwindigkeit} -Z /dev/dvd -allow-limited-size -R -J ${brenn_pfad}/"film($((i-1)))"* |
kdialog --msgbox "Bitte DVD entnehmen" | kdialog --msgbox "Bitte DVD entnehmen" | ||
done | done | ||
Zeile 511: | Zeile 597: | ||
2) untermenue_ts ;; | 2) untermenue_ts ;; | ||
3) untermenue_videoclip ;; | 3) untermenue_videoclip ;; | ||
− | + | 9) untermenue_verwaltung ;; | |
esac | esac | ||
Zeile 584: | Zeile 670: | ||
esac | esac | ||
+ | #-----untermenue_verwaltung----- | ||
+ | |||
+ | case $was_tun in | ||
+ | |||
+ | 91) loeschen_temporaere_arbeitsordner | ||
+ | wirklich ;; | ||
+ | 92) loeschen_dvd_sicherung ;; | ||
+ | 93) loeschen_dvd_screenshot ;; | ||
+ | 94) basisverzeichnis_aendern ;; | ||
+ | 95) deinstallation ;; | ||
+ | esac | ||
+ | |||
+ | kdialog --passivepopup "Bearbeitung beendet." 3 | ||
exit | exit | ||
+ | |||
Version vom 30. August 2008, 19:07 Uhr
Vom DVB zur DVD, ein Wikibuch: Übersicht - Der Weg - Die Helferprogramme - Das Script - Installation - Bedienungsanleitung - Programmieranleitung |
Bitte die Installationsanleitung beachten!
#!/bin/bash #++++++++++++++++++++++++++++++++++++++++++++++++++++++++BESCHREIBUNG ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #Name: DVB_Wiki_Buch_Script #Version: 0.7.0 #Erstellungsdatum: 29.8.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 #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Funktionen++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++# #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Für's Austesten°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° stop () { kdialog --msgbox "Programm unterbrochen" } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Initialisierung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° #-----Basisverzeichnis festlegen beim ersten Scriptaufruf----- basisverzeichnis_festlegen () { echo "*** Festlegen des Basisverzeichnisses ***" if [ ! -e ~/.dvb_wiki_script_arbeitsverzeichnis.txt ] then hilfsverzeichnis=`kdialog --caption "Name des Arbeitsverzeichnisses" --inputbox ~/ dvb_wiki_script` if [ $? = 0 ] then basisverzeichnis=~/`echo $hilfsverzeichnis | tr -d " "` if [ -e ${basisverzeichnis} ] then kdialog --passivepopup "Verzeichnis existiert schon! Bitte neu wählen" 3 basisverzeichnis_festlegen else kdialog --passivepopup "Die Verzeichnisstruktur wird in folgendem Arbeitsverzeichnis erstellt: ${basisverzeichnis}" 3 echo ${basisverzeichnis} > ~/.dvb_wiki_script_arbeitsverzeichnis.txt fi else kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi fi echo "*** erledigt" ; echo } #-----Basisverzeichnis und Arbeitsverzeichnisse anlegen----- arbeitsverzeichnisse_erstellen () { basisverzeichnis=`cat ~/.dvb_wiki_script_arbeitsverzeichnis.txt` if [ ! -e ${basisverzeichnis} ] ; then mkdir ${basisverzeichnis} ; fi if [ ! -e ${basisverzeichnis}/dvd_aufnahme ] ; then mkdir ${basisverzeichnis}/dvd_aufnahme ; fi if [ ! -e ${basisverzeichnis}/dvd_tmp ] ; then mkdir ${basisverzeichnis}/dvd_tmp ; fi if [ ! -e ${basisverzeichnis}/dvd_tmp1 ] ; then mkdir ${basisverzeichnis}/dvd_tmp1 ; fi if [ ! -e ${basisverzeichnis}/dvd_struktur ] ; then mkdir ${basisverzeichnis}/dvd_struktur ; fi if [ ! -e ${basisverzeichnis}/dvd_sicherung ] ; then mkdir ${basisverzeichnis}/dvd_sicherung ; fi if [ ! -e ${basisverzeichnis}/dvd_default ] ; then mkdir ${basisverzeichnis}/dvd_default ; fi if [ ! -e ${basisverzeichnis}/dvd_screenshot ] ; then mkdir ${basisverzeichnis}/dvd_screenshot ; fi } programmerkennung () { echo "*** Programmerkennung ***" name[0]=mplex name[1]=tcrequant name[2]=dvdauthor name[3]=ProjectX.jar name[4]=normalize name[5]=ffmpeg name[6]=growisofs name[7]=kdialog name[8]=kaffeine for ((i=0 ; i<9 ; i++)) do touch $basisverzeichnis/dvd_default/pfad[$i].txt pfad[i]=`cat $basisverzeichnis/dvd_default/pfad[$i].txt` if [ ! -e ${pfad[i]}/${name[i]} ] then echo "${name[i]}: Datei wird gesucht" gefundene_pfade=`find /bin /home /opt /usr -type f -name ${name[i]} -printf "%h " 2>/dev/null` pfadanzahl=`echo "$gefundene_pfade" | wc -w` case "$pfadanzahl" in 0) kdialog --passivepopup "Das Programm wurde nicht gefunden. Bitte installieren." 3 exit ;; 1) echo "${name[i]}: Datei gefunden" ; echo echo $gefundene_pfade > $basisverzeichnis/dvd_default/pfad[$i].txt ;; *) auswahl_gefundene_pfade=`kdialog --caption "${name[i]}" --combobox "Bitte Pfad auswählen" $gefundene_pfade --default $gefundene_pfade` if [ $? = 0 ] then echo ${auswahl_gefundene_pfade} > $basisverzeichnis/dvd_default/pfad[$i].txt else kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi echo "${name[i]}: Datei gefunden" ; echo ;; esac fi done echo "*** erledigt" ; echo } #-----Variablenzuweisungen zur besseren Lesbarkeit des Scriptes----- variablenzuweisungen () { 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]} kdialog=${pfad[7]}/${name[7]} kaffeine=${pfad[8]}/${name[8]} aufnahme_pfad=${basisverzeichnis}/dvd_aufnahme tmp_pfad=${basisverzeichnis}/dvd_tmp dvdstruktur_pfad=${basisverzeichnis}/dvd_struktur sicherungs_pfad=${basisverzeichnis}/dvd_sicherung screenshot_pfad=$basisverzeichnis/dvd_screenshot default_pfad=${basisverzeichnis}/dvd_default clip_pfad=~/Videoclips_mp2_ac3 } #-----Vorbereiten der X.ini's für ProjectX---- konfiguration () { #---X.ini für Filmbearbeitung--- echo \ "# Application Application.Agreement=1 Application.Language=de # WindowPosition WindowPosition.Main.Height=670 WindowPosition.Main.Width=866 WindowPosition.Main.X=500 WindowPosition.Main.Y=0 # OptionPanel OptionPanel.NormalLog=0 OptionPanel.closeOnEnd=1" > ${default_pfad}/X.ini.film #---Voreinstellungen--- brenngeschwindigkeit=8 #maximale Brenngeschwindigkeit maxgroesse=4600000000 #für DVD5 } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Verwaltung / Löschen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° loeschen_temporaere_arbeitsordner () { echo "*** Löschen der temporären Arbeitsordner (kann etwas dauern)***" rm ${basisverzeichnis}/dvd_tmp/* 2>/dev/null rm ${basisverzeichnis}/dvd_tmp1/* 2>/dev/null rm -r ${basisverzeichnis}/dvd_struktur/* 2>/dev/null rmdir ${basisverzeichnis}/dvd_struktur/* 2>/dev/null echo "*** erledigt" ; echo } loeschen_dvd_sicherung () { loeschordner="dvd_sicherung" anzeige_was_wird_geloescht wirklich rm -r ${basisverzeichnis}/dvd_sicherung/* } loeschen_dvd_screenshot () { loeschordner="dvd_screenshot" anzeige_was_wird_geloescht wirklich rm $basisverzeichnis/dvd_screenshot/* } basisverzeichnis_aendern () { kdialog --msgbox "Es wird folgende Datei gelöscht: ~/.dvb_wiki_script_arbeitsverzeichnis.txt Beim nächsten Scriptstart wird sie neu angelegt. Dann muß ein neues Arbeitsverzeichnis gewählt werden " wirklich rm ~/.dvb_wiki_script_arbeitsverzeichnis.txt } deinstallation () { kdialog --msgbox "Es werden folgende Dateien gelöscht: ~/.dvb_wiki_script_arbeitsverzeichnis.txt ${basisverzeichnis} DEINSTALLATION DES SCRIPTS Alle Scriptordner werden gelöscht. Das Aufnahmeverzeichnis wird gelöscht. " wirklich rm ~/.dvb_wiki_script_arbeitsverzeichnis.txt rm -r ${basisverzeichnis}/* rmdir ${basisverzeichnis} } anzeige_was_wird_geloescht () { cd ~/dvb_wiki_script_basisordner/$loeschordner ordnerinhalt=`ls -d1 * ` kdialog --msgbox "$loeschordner enthält folgende Dateien: $ordnerinhalt" } wirklich () { kdialog --yesno "??? WIRKLICH LÖSCHEN ???" if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Aufgabenmenues°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° hauptmenue () { auswahl_hauptmenue=`kdialog --caption "Hauptmenue" --geometry 200x250+500+400 --radiolist "Bitte einen Aufgabenbereich wählen" \ 1 "VIDEO-DVD" on \ 2 "TS-Stream" off \ 3 "Videoclips" off \ 9 "Verwaltung" off` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } untermenue_video_dvd () { brenn_pfad=${dvdstruktur_pfad} was_tun=`kdialog --caption "Video_DVD" --geometry 600x250+400+400 --radiolist "Was also soll genau getan werden?" \ 11 "VIDEO-DVD........Fernsehaufnahme schneiden --> als Video-DVD brennen" on \ 12 "VIDEO-DVD........Fernsehaufnahme schneiden --> DVD-Struktur in Datei sichern" off \ 13 "VIDEO-DVD........Sicherung brennen" off` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } untermenue_ts () { was_tun=`kdialog --caption "Daten-DVD" --geometry 600x250+400+400 --radiolist "Was also soll genau getan werden?" \ 21 "TS-Stream..........Fernsehaufnahme schneiden --> TS als Daten-DVD brennen" on \ 22 "TS-Stream..........Fernsehaufnahme schneiden --> TS sichern" off \ 23 "TS-Stream..........Sicherung als Daten-DVD brennen" off` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } untermenue_videoclip () { was_tun=`kdialog --caption "Videoclips" --geometry 600x250+400+400 --radiolist "Was also soll genau getan werden?" \ 31 "Videoclip.............Schneiden und speichern (Ton: MP2 normalisiert + AC3)" on \ 32 "Videoclip............ Schneiden und speichern (Ton: AC3)" off \ 33 "Videoclip............ Schneiden und speichern (Ton: MP2 normalisiert)" off \ 34 "Mpeg1-Clip............Schneiden und speichern (Ton: MP2 normalisiert)" off` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } untermenue_verwaltung () { was_tun=`kdialog --caption "Verwaltung" --geometry 600x250+400+400 --radiolist "Was also soll genau getan werden?" \ 91 "Inhalte löschen...... Temporäre Arbeitsordner" on \ 92 "Inhalte löschen...... gesicherte Aufnahmen (dvd_sicherung)" off \ 93 "Inhalte löschen...... Screenshots (dvd_screenshot)" off \ 94 "Basisverzeichnis..... ändern" off \ 95 "Deinstallation" off` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Auswahl der Eingangsdateien°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° filmauswahl_dvd () { brenn_pfad=${dvdstruktur_pfad} filmauswahl } filmauswahl_ts () { brenn_pfad=${tmp_pfad} filmauswahl } filmauswahl_clip () { filmauswahl } filmauswahl () { quelldatei=`kdialog --caption "Filmauswahl" --geometry 600x500-0+0 --getopenfilename ${aufnahme_pfad}` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi } verzeichnisauswahl_dvd () { verzeichnistyp="*_dvd" verzeichnisauswahl } verzeichnisauswahl_ts () { verzeichnistyp="*_ts" verzeichnisauswahl } verzeichnisauswahl () { 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) kdialog --passivepopup "Es gibt nichts passendes zum Brennen. Das Script wird nun beendet." 3 exit ;; 1) kdialog --passivepopup "Folgende Sicherung wird gebrannt: $hilfsverzeichnis" 3 verzeichnis=$hilfsverzeichnis ;; *) verzeichnis=`kdialog --combobox "Welche Datei soll gebrannt werden?" $hilfsverzeichnis` if [ $? != 0 ] then kdialog --passivepopup "Abbruch durch den Benutzer. Das Script wird nun beendet." 3 exit fi ;; esac brenn_pfad=$verzeichnis } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Eingangsverarbeitung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° #-----Schneiden und Demultiplexen----- pjx_demux_gui () { echo "*** DVB mit PJX ***" java -jar ${pjx} -demux -gui -ini ${default_pfad}/X.ini.film -out ${tmp_pfad} -name film "$quelldatei" 1>/dev/null echo "*** erledigt" ; echo } #-----Schneiden und Wandeln nach TS----- pjx_ts_gui () { echo "*** TS mit PJX ***" java -jar ${pjx} -tots -gui -split 4300 -ini ${default_pfad}/X.ini.film -out ${tmp_pfad} -name film "$quelldatei" 1>/dev/null echo "*** erledigt" ; echo } mpeg1_input () { echo "*** mpeg1 demultiplexen ( Video copy, Ton --> wav) ***" ${ffmpeg} -i "${quelldatei}" ${tmp_pfad}/film.mp2 -vcodec copy ${tmp_pfad}/film.m1v echo "*** erledigt" ; echo } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Bearbeitung°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° requantisieren () { videogroesse=`du -bc ${tmp_pfad}/*.m2v | cut -f1 | tail -n 1` #Berechnung des Requantisierungsfaktors audio_summe=`du -bc ${tmp_pfad}/*.ac3 ${tmp_pfad}/*.mp2 | cut -f1 | tail -n 1` audio_video_summe=`du -bc ${tmp_pfad}/*.ac3 ${tmp_pfad}/*.mp2 ${tmp_pfad}/*.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 echo "*** Requantisieren ***" kdialog --passivepopup "Es wird mit folgendem Faktor requantifiziert: ${requantisierungsfaktor}" 3 ${tcrequant} -d2 -i ${tmp_pfad}/film.m2v -o ${tmp_pfad}/film.requant -f ${requantisierungsfaktor} mv ${tmp_pfad}/film.requant ${tmp_pfad}/film.m2v echo "*** erledigt" ; echo fi } #........mp2-Ton auf einheitliche Lautstärke bringen (-12dBfs).......... normalisieren () { mv ${basisverzeichnis}/dvd_tmp/film.mp2 ${basisverzeichnis}/dvd_tmp1 2>/dev/null rm ${basisverzeichnis}/dvd_tmp/*.mp2 2>/dev/null echo "*** Ton decodieren ***" ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2 ${basisverzeichnis}/dvd_tmp1/film.mp2.wav 2>/dev/null echo "*** Ton normalisieren ***" ${normalize} ${basisverzeichnis}/dvd_tmp1/film.mp2.wav echo "*** Ton encodieren ***" ${ffmpeg} -i ${basisverzeichnis}/dvd_tmp1/film.mp2.wav -acodec mp2 -ab 192k ${tmp_pfad}/film.mp2 2>/dev/null rm ${basisverzeichnis}/dvd_tmp1/* echo "*** erledigt" ; echo } ac3_behalten () { if [ ! -e ${basisverzeichnis}/dvd_tmp/*.ac3 ] then kdialog --passivepopup "Der Clip enthält keinen AC3-Ton. Das Script wird nun beendet." 3 exit fi rm ${basisverzeichnis}/dvd_tmp/*.mp2 } mp2_behalten () { if [ ! -e ${basisverzeichnis}/dvd_tmp/*.mp2 ] then kdialog --passivepopup "Der Clip enthält keinen mp2-Ton. Das Script wird nun beendet." 3 exit fi rm ${basisverzeichnis}/dvd_tmp/*.ac3 } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Multiplexen, Codieren°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° multiplexen () { echo "*** Multiplexen ***" echo "***Bearbeitung läuft - kann etwas dauern" mpeg1_video= mpeg2_video= mp2_audio= ac3_audio= mpeg1_video=`find ${tmp_pfad} | grep "m1v"` mpeg2_video=`find ${tmp_pfad} | grep "m2v"` mp2_audio=`find ${tmp_pfad} | grep "mp2"` ac3_audio=`find ${tmp_pfad} | grep "ac3"` ${mplex} -v1 -f8 -o ${tmp_pfad}/film.mpg ${mpeg1_video} ${mpeg2_video} ${mp2_audio} ${ac3_audio} 2>/dev/null if [ ! -e ${tmp_pfad}/film.mpg ] then echo "*** Fehler *** Error ***Fehler ***" kdialog --error "Es konnte keine Datei multiplext werden!" exit fi echo "*** erledigt" ; echo } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Author'n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° authoring_ohne_menue () { echo "*** Authoring der DVD ***" ${dvdauthor} -o ${dvdstruktur_pfad} -t ${tmp_pfad}/film.mpg #VOBs und "Kapitel"-IFOs ${dvdauthor} -o ${dvdstruktur_pfad} -T #VIDEO_TS.BUP und VIDEO_TS.IFO echo "*** erledigt" ; echo } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Ergebniskontrolle°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° abspielen () { echo "*** Abspielen ***" echo echo "*****************************************" echo "*** Screenshot mit Strg + s ***" echo "*** Weiter mit Strg + q ***" echo "*****************************************" echo $kaffeine -nofork --geometry 600x500-0+0 ${brenn_pfad} echo "*** erledigt" ; echo } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Brennen°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° brennen_video_dvd () { echo "*** Video-DVD brennen ***" kdialog --msgbox "Bitte leere DVD einlegen" ${growisofs} -speed=${brenngeschwindigkeit} -dvd-compat -Z /dev/dvd -dvd-video ${brenn_pfad} kdialog --msgbox "Bitte DVD entnehmen" echo "*** erledigt" ; echo } brennen_ts () { echo "*** Daten-DVD brennen ***" dvdzahl=`find ${brenn_pfad} -type f | wc -l` kdialog --msgbox "Anzahl der notwendigen DVDs: ${dvdzahl}" for((i=1; i<=${dvdzahl}; i++)) do kdialog --msgbox "Bitte DVD Nr.: $i einlegen" ${growisofs} -speed=${brenngeschwindigkeit} -Z /dev/dvd -allow-limited-size -R -J ${brenn_pfad}/"film($((i-1)))"* kdialog --msgbox "Bitte DVD entnehmen" done kdialog --msgbox "fertig" echo "*** erledigt" ; echo } #°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°Sichern°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° sichern_dvd_struktur () { echo "*** DVD-Struktur sichern ***" sicherungsordner="$(date +%Y%m%d%H%M%S)_dvd" mkdir ${sicherungs_pfad}/${sicherungsordner} mv ${dvdstruktur_pfad}/* ${sicherungs_pfad}/${sicherungsordner} kdialog --msgbox "Datei gesichert nach "${sicherungs_pfad}/${sicherungsordner} echo "*** erledigt" ; echo } sichern_ts () { echo "*** TS sichern ***" sicherungsordner="$(date +%Y%m%d%H%M%S)_ts" mkdir ${sicherungs_pfad}/${sicherungsordner} mv ${tmp_pfad}/*.ts ${sicherungs_pfad}/${sicherungsordner} kdialog --msgbox "Datei gesichert nach "${sicherungs_pfad}/${sicherungsordner} echo "*** erledigt" ; echo } sichern_clip () { clipspeicher=`kdialog --title "$quelldatei" --getsavefilename ${clip_pfad}` mv ${tmp_pfad}/film.mpg "${clipspeicher}" } #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Hauptprogramm++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #-----Initialisierung----- basisverzeichnis_festlegen arbeitsverzeichnisse_erstellen programmerkennung variablenzuweisungen konfiguration loeschen_temporaere_arbeitsordner #-----Hauptmenue----- hauptmenue case $auswahl_hauptmenue in 1) untermenue_video_dvd ;; 2) untermenue_ts ;; 3) untermenue_videoclip ;; 9) untermenue_verwaltung ;; esac #-----untermenue_video_dvd----- case $was_tun in 11) filmauswahl_dvd #Fernsehaufnahme schneiden und als Video-DVD brennen pjx_demux_gui requantisieren multiplexen authoring_ohne_menue abspielen brennen_video_dvd ;; 12) filmauswahl_dvd #Fernsehaufnahme schneiden und DVD-Struktur in Datei sichern pjx_demux_gui requantisieren multiplexen authoring_ohne_menue abspielen sichern_dvd_struktur ;; 13) verzeichnisauswahl_dvd #DVD-Struktur brennen abspielen brennen_video_dvd ;; esac #-----untermenue_ts----- case $was_tun in 21) filmauswahl_ts #Fernsehaufnahme schneiden, TS als Daten-DVD brennen pjx_ts_gui brennen_ts ;; 22) filmauswahl_ts #Fernsehaufnahme schneiden, TS und sichern pjx_ts_gui sichern_ts ;; 23) verzeichnisauswahl_ts #gesichertes TS-file als Daten-DVD brennen brennen_ts ;; esac #-----untermenue_videoclip----- case $was_tun in 31) filmauswahl_clip #DVB-Clip: Schneiden und speichern (Ton: MP2 normalisiert + AC3) pjx_demux_gui normalisieren multiplexen sichern_clip ;; 32) filmauswahl_clip #DVB-Clip: Schneiden und speichern (Ton: AC3) pjx_demux_gui ac3_behalten multiplexen sichern_clip ;; 33) filmauswahl_clip #DVB-Clip: Schneiden und speichern (Ton: MP2 normalisiert) pjx_demux_gui mp2_behalten multiplexen sichern_clip ;; 34) filmauswahl #Mpeg1-Clip: Schneiden und speichern (Ton: MP2 normalisiert) mpeg1_input normalisieren multiplexen sichern_clip ;; esac #-----untermenue_verwaltung----- case $was_tun in 91) loeschen_temporaere_arbeitsordner wirklich ;; 92) loeschen_dvd_sicherung ;; 93) loeschen_dvd_screenshot ;; 94) basisverzeichnis_aendern ;; 95) deinstallation ;; esac kdialog --passivepopup "Bearbeitung beendet." 3 exit
Vom DVB zur DVD, ein Wikibuch: Übersicht - Der Weg - Die Helferprogramme - Das Script - Installation - Bedienungsanleitung - Programmieranleitung |