Linux: DVB-T mit Kaffeine, ProjectX und mplex
Vorbereitungen
1. Das dvb-apps
Paket für das scan
Tool mit aptitude install dvb-apps
herunterladen.
2. Das dvbt-scanaid
Archiv herunterladen, in ~/.dvbt-scanaid entpacken und abändern:
mkdir ~/.dvbt-scanaid cd ~/.dvbt-scanaid tar -xjf /pfad/dvbt-scanaid-version.tar.bz2 mv dvbt-scanaid-version/* . rmdir dvbt-scanaid-version/
- Create_Scanning_Table
#!/bin/sh ändern in: #!/bin/bash CHANNELTABLE="Channel_Frequency.txt" ändern in: CHANNELTABLE="./Channel_Frequency.txt"
3. Das w_scan Archiv von der w_scan Homepage herunterladen und w_scan
in ~/.dvbt-scanaid entpacken oder zunächst selbst kompilieren und installieren:
tar -xjf w_scan-version.tar.bz2 cd w_scan-version ./configure make sudo make install
Frequenzliste anlegen
mit dvbt-scanaid
~/.dvbt-scanaid$ ./Create_Scanning_Table Do you want to try every possible bandwidth/FEC combination possible? [n] y Do you want all channels to be scanned? [n] y (...) Thank you very much for using dvbt-scanaid. A list of channels you may feed to 'scan' has been generated in the file Scanlist.txt.
mit w_scan
~/.dvbt-scanaid$ w_scan -ft -c DE -x > Scanlist.txt
Die Scanlist.txt
Datei entspricht der de-Ruhrgebiet
Datei aus dem dvb-apps Paket in /usr/share/dvb/dvb-t/.
Kanaliste anlegen
für mplayer
~/.dvbt-scanaid$ scan ./Scanlist.txt > channels_out.conf
oder
~/.dvbt-scanaid$ w_scan -I ./Scanlist.txt -X > channels_out.conf
~/.dvbt-scanaid$ sort ./channels_out.conf | uniq > channels.conf
In der fertigen channels.conf Kanalliste können nachträglich alle Sendernamen vereinfach werden, wie z. B. „EinsFestival“ in „1FESTIVAL“. Danach wird sie mplayer zugänglich gemacht:
~/.dvbt-scanaid$ mv channels.conf ~/.mplayer/
für Kaffeine
Den Inhalt der erzeugten Scanlist.txt mit einem Texteditor in die /usr/share/kde4/apps/kaffeine/scanfile.dvb Datei unter „[dvb-t/de-Ruhrgebiet]“ kopieren, in den Fernseh-Einstellungen für das DVB-T Gerät de-Ruhrgebiet als Quelle auswählen und über die Fensehen-Leiste → Kanäle einen Sendersuchlauf durchführen.
Im Geräte Fenster der Fernseh-Einstellungen muss bereits der Name des DVB-T Tuner Chips bzw. Kernelmoduls erscheinen. Andernfalls sind die nötigen DVB-T Kernelmodule noch nicht geladen.
Hier ein Beispiel für meinen AVerMedia AverTV DVB-T USB 2.0 (A800) Empfänger:
lsmod | grep dvb dib3000mc 22898 2 dvb_usb_dibusb_common dvb_core 90602 1 dvb_usb dvb_pll 18165 1 dvb_usb 23658 2 dvb_usb_a800,dvb_usb_dibusb_common dvb_usb_a800 12910 0 dvb_usb_dibusb_common 14918 1 dvb_usb_a800 rc_core 21636 2 ir_lirc_codec,dvb_usb
für Xine
~/.dvbt-scanaid$ mv channels.conf ~/.xine/
Sender sehen
mit mplayer
mplayer dvb://SENDER
mit Kaffeine
Nach dem Start von Kaffeine klickt man den Digitales Fernsehen Button an und wählt in der Kanalliste den enstprechenden Sender aus:
Über den zweiten Button von links unter der Kanalliste gelangt man in den Kanal-Editor, wo neben einem Suchlauf auch die Sendernamen editiert werden können.
Sender aufnehmen
mit Kaffeine
Mit Kaffeine kann man Aufnahmen programmieren, indem über den Programmführer (EPG) die entsprechende Sendung selektiert und als „Programm zur Aufnahme plant“. Kaffeine legt eine Aufnahme als name_der_sendung.m2t
MPEG Transportstream ab, die mit ProjectX und mplex in eine MPEG Datei konvertiert wird. Die MPEG Datei kann ggf. mit ffmpeg, Winff usw. in weitere Formate bzw. Codecs konvertiert werden.
mit mplayer
mencoder dvb://SENDER -dumpstream -dumpfile /pfad/beitrag.ts
Verarbeitung
Hierfür zunächst das ProjectX ZIP-Archiv in der Version >= 0.91 von der ProjectX Homepage herunterladen, kompilieren und installieren.
sudo aptitude install sun-javaN-jdk unzip ProjectX_version.zip cd Project-X_version chmod 750 ./build.sh ./build.sh sudo mkdir -p /opt/projectx/lib sudo cp ./ProjectX.jar /opt/projectx/ sudo cp lib/*.jar /opt/projectx/lib/
Installation für den Benutzer:
mkdir ~/.java cp projectx.desktop ~/.local/share/applications/
Anschließend im K-Menü Editor den Befehl auf java -jar /opt/projectx/ProjectX.jar ändern und /home/benutzer/.java als Arbeitsverzeichnis eintragen.
Schneiden mit ProjectX
Über den Schieberegler unterhalb des Bildausschnitts und die Player Buttons zur Stelle springen, an die der zu erhaltende Ausschnitt einsetzen soll und dafür mit + Button die Startmarke setzen. Danach weiter bis zur Stelle springen, an die der zu erhaltende Ausschnitt enden soll und dafür wieder mit + Button die Endmarke setzen. Mit dem - Button können Start- und Endmarken wieder entfernt werden. Den gleichen Vorgang für alle Ausschnitte wiederholen, die erhalten bleiben sollen.
De-Multiplexing mit ProjectX
Die geschnittene aufnahme.m2t Datei wird anschließend mit ProjectX in eine Videoausgabedatei (aufnahme.m2v) und ein oder zwei Audioausgabedateien (aufnahme.mp2 und aufnahme-02.mp2) zerlegt („Demultiplexing“), die miteinander synchronisiert wurden. Bei der Ausgabe von zwei Audiodateien muss man die Dateien zum Test anspielen, weil sich in einer der Dateien eine Mono, Joint-Stereo, fremdsprachige oder für sehbehinderte Menschen kommentierte Fassung befinden kann.
Dazu in ProjectX entweder auf den QuickStart Button klicken, über den anpassen Button demultiplex
auswählen und auf den Start Button klicken oder – wenn nicht geschnitten werden muss – das Demultiplexing sofort mit der aufnahme.m2t Datei durchführen:
$ cd /opt/ProjectX && java -jar ProjectX.jar -demux ./aufnahme.m2t
Vor dem Export der Dateien auf folgende Einstellungen in ProjectX achten:
Voreinstellungen | ||
---|---|---|
Video | Videokorrekturen | composite.display.flag unwirksam machen |
Video | 1. H-Aufl. | wenn < > 352|704|720 Auflösung 352, 704 oder 720 in Drop-down Liste |
Multiplexing
Anschließend müssen die ProjectX Ausgabedateien wieder mit mplex
zusammengefügt („Multiplexing“) werden:
sudo aptitude install mjpegtools
mplex -f 3 -o film.mpg ./aufnahme.mp2 ./aufnahme.m2v
-f 0 -b videobuffer -V vbr [-r bitrate] | erzeugt MPEG1 Videodatei |
-f 3 | erzeugt MPEG2 Videodatei |
-f 8 | erzeugt DVD mit Navigation |
mplex Skripte
Skript, um mehrere Aufnahmen hintereinander mit mplex zusammenzufügen
#!/bin/sh # Ausgabeverzeichnis von ProjectX: moviedir="/pfad/movies" for f in $(find $moviedir -type f -name '*.m2t'); do movie=$(basename "$f" \.m2t) mplex -f 3 -o $moviedir/$movie.mpg $moviedir/$movie.mp2 $moviedir/$movie.m2v && \ rm $moviedir/$movie.m2t $moviedir/$movie.mp2 $moviedir/$movie.m2v moviedir/"$movie"_log.txt if [ -f "$moviedir/$movie-02.mp2" ]; then rm "$moviedir/$movie-02.mp2" ; else echo "Keine zweite Audiodatei vorhanden" fi done exit 0
Skript, um eine Aufnahme mit mplex zusammenzufügen:
#!/bin/sh # Ausgabeverzeichnis von ProjectX: moviedir="/pfad/movies" fls () { find "$1" -maxdepth 1 -type f | sort | xargs -n1 basename ; } cd $moviedir echo "" echo "Filmliste:" fls . | grep m2t echo "" echo "" printf "Dateiname: " "$moviename" read moviename movie=$(basename "$moviename" \.m2t) mplex -f 3 -o $moviedir/$movie.mpg $moviedir/$movie.mp2 $moviedir/$movie.m2v && \ rm $moviedir/$movie.m2t $moviedir/$movie.mp2 $moviedir/$movie.m2v $moviedir/"$movie"_log.txt if [ -f "$moviedir/$movie-02.mp2" ]; then rm "$moviedir/$movie-02.mp2" ; else echo "Keine zweite Audiodatei vorhanden" fi exit 0