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

ProjextX GUI

Ü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

Verweise auf aktuelle Seite