Ubuntu HD VDR mittels Xine und VAAPI - Betriebssystem Rev2
Vorbereiten der Installation
Die Ubuntu Installationsmedien können kostenfrei auf der Webseite http://www.ubuntu.com/ heruntergeladen werden.
Das Image für die DVD, CD oder den USB-Stick ist ubuntu-13.10-desktop-amd64.iso (Saucy Salamander), nicht schockiert sein wegen des AMD, den wir ja gar nicht haben...
Starten der Ubuntu Installation - Willkommen
Booten der Ubuntu CD und im darauf folgenden Bootmenü folgendes auswählen:
- Sprache wählen: Deutsch - Der VDR läuft natürlich auch in einer anderen Sprache
- danach "Ubuntu installieren" anklicken.
Installation von Ubuntu wird vorbereitet
- anwählen: Aktualisierungen während der Installation herunterladen
- anwählen: Drittanbieter-Software installieren
Festplattenspeicher zuweisen
Wir machen ein Experimentalsystem, wenn es schnell gehen soll, die gesamte Festplatte für Ubuntu nehmen.
Wenn Ihr doch partitionieren wollt/müsst, macht eine hinreichend große Root (/) Partition, da wir ja später auch Platz für Systemwerkzeuge und unseren selbst zu übersetzenden Code benötigen.
Richtwerte
- 50-100GB /
- 8 GB Swap
- Rest für Aufnahmen /video
Jetzt installieren
Sobald auf die Schaltfläche "Jetzt installieren" geklickt wird startet die Installation. Achtung! Ab diesem Zeitpunkt wird die Festplatte partitioniert und formatiert somit werden alle Daten auf der Festplatte gelöscht.
Wo befinden Sie sich?
- Zeitzone: Berlin
Tastenbelegung
- Tastaturbelegung: Deutschland
Wer sind Sie?
- Ihr name?: vdruser
- Name Ihres Rechners: vdr
- Wählen Sie einen Benutzernamen: vdruser
- Wählen Sie ein Passwort: hier ein Passwort vergeben
- Automatisch Anmelden: aktivieren
Remotezugriff auf die Konsole
- Anwendungen -> Zubehör -> Terminal ->
sudo apt-get install openssh-server
Der SSH Dämon versucht in der Normaleinstellung, IP Adressen in Namen umzusetzen. Wer in seinem lokalen Netz keine korrekte Rückwärtsauflösung der RFC1918 Adressen eingerichtet hat, kann den Login-Vorgang beschleunigen, wenn in
/etc/ssh/sshd_config
die Zusatzzeile
UseDNS no
eingetragen wird.
Remotezugriff mittels SSH client
Als Remoteclient kommt Putty zum Einsatz. Putty ist Freeware und kann kostenfrei auf der Webseite http://www.putty.org/ herunter geladenwerden. Nach dem starten von Putty kann auf die Linux Konsole zugegriffen werden:
Host name: 192.168.0.10
System auf aktuellen Stand bringen
- Anwendungen -> Zubehör -> Terminal ->
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
/data Verzeichnis für Benutzer vdruser vorbereiten
Die von der Installationsroutine angelegte Partition gehört Standardmäßig dem User root. Mit folgendem Befehl kann die Rechte Struktur für euren vdruser übernommen werden:
- Anwendungen -> Zubehör -> Terminal ->
sudo mkdir /data sudo chown -R vdruser:vdruser /data
Loginsound sowie Mute deaktivieren (Nur Desktop Version)
Dies ist auch eine gute Gelegenheit, die Funktion des Soundsystems zu prüfen. War der Startsound zu hören? Um das Soundsystem zu prüfen, ist ggfs. der Ausgabeweg zu verändern. In der Regel wird der Sound zusammen mit dem Videosignal über das HDMI Kabel laufen.
- Toneigenschaften (Lautsprechersymbol) -> Audio-Einstellungen...
abwählen: Stumm Hardware-Tab, Profil: Digital Stereo (HDMI) Output
Nach einem Neistart sollte uns das System mit Ton begrüßen, damit sind wir sicher, dass alles für später bereit ist.
Für VDR benötigte Systempakete installieren
- Anwendungen -> Zubehör -> Terminal ->
sudo apt-get install autoconf autopoint qt4-dev-tools qt4-qmake libqt4-dev linux-firmware-nonfree mercurial \ libtool libcdio-dev libvcdinfo-dev libavcodec-dev libpostproc-dev libcap-dev \ libncurses5-dev libncursesw5-dev lcdproc vim libssl-dev imagemagick libmagick++-dev \ unzip openntpd xfsprogs screen libpcre3-dev libtntnet-dev g++
Openbox: Ein schlanker Windowmanager
Der normalerweise laufende Gnome mit seinen grafischen Schnörkel compiz ist ein wenig überdimensioniert, wenn später 'nur' ein TV Vollbild anzuzeigen ist. Hier also, kopiert vom yavdr, die Variante mit Openbox. Also:
sudo apt-get install openbox
Ausloggen, beim einloggen können auf der unteren Bildschirmleiste die Fenstermanager gewählt werden. Nehmt ihr die Openbox, sitzt Ihr nach kurzer Zeit vor einem dunklen Bildschirm ohne schmückende Dekoration. Mit einem Rechtsklick lassen sich die wirklich wichtigen Dinge starten: Ein Terminal und ein Web-Browser.
Auch bei openbox wird bei Inaktivität der Bildschirm dunkel geschaltet, verantwortlich sind die Grundeinstellungen des X Servers. Das DPMS (Display Power Management Signaling) könnte in der ~/.config/openbox/autostart mit xset Kommandos abgeschaltet werden. Da die xorg.conf sowieso erstellen, um die Bildfrequenz einzustellen, steht die entsprechende Einstellung im folgenden Abschnitt als Teil der Monitorsektion.
Ganz ohne ~/.config/openbox/autostart geht es jedoch nicht, die Bildschhirmabschaltung muss zusätzlich noch mit
xset s off xsetroot -bg black
eingetragen sein.
Video
Die Anzeige wird in der Regel mit 60 Hz Wiederholrate betrieben, dies sollte auf 50 Hz Betrieb umgestellt werden. Vor- und nachher lohnt sich ein Blick auf die Ausgabe des Kommandos
xrandr
Damit werden die aktiven Einstellungen angezeigt und man erhält einen Hinweis, was gegenüber der folgenden Beispielkonfiguration noch zu verändern ist. Hier folgt ein Beispiel für einen 1080 Zeilen Monitor, anzupassen ist /etc/X11/xorg.conf.
Section "Device" Identifier "Device0" Driver "intel" VendorName "INTEL Corporation" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "HDMI2" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1920x1080@50p" "1920x1080@50i" "1920x1080@59.94p" "1920x1080@24p" "1920x1080@60p" EndSubSection EndSection Section "Monitor" Identifier "HDMI2" HorizSync 14.0 - 70.0 VertRefresh 24.0 - 62.0 Modeline "1920x1080@24p" 74.230 1920 2560 2604 2752 1080 1084 1089 1125 +hsync +vsync Modeline "1920x1080@50p" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync Modeline "1920x1080@50i" 74.25 1920 2448 2492 2640 1080 1084 1089 1125 interlace +hsync +vsync Modeline "1920x1080@59.94p" 148.352 1920 1960 2016 2200 1080 1082 1088 1125 +hsync +vsync Modeline "1920x1080@60p" 148.500 1920 2008 2056 2200 1080 1084 1089 1125 +hsync +vsync Option "DPMS" "off" EndSection
Mögliche Änderungen:
- Es könnte sich um einen 720 Zeilen Monitor handeln.
- Ein anderes Interface könnte in Verwendung sein.
VAAPI Videobeschleunigung bereitstellen
sudo adduser vdruser video sudo adduser vdruser audio sudo apt-get install libva1 vainfo i965-va-driver libva-glx1 libva-dev mesa-utils intel-gpu-tools
Prüfen wir, ob vaapi korrekt installiert ist. X muss laufen, am besten schon das oben erwähnte openbox. In einem Terminalfenster wird eingegeben
vainfo
Die Ausgabe sollte etwa so aussehen:
libva info: VA-API version 0.33.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_33 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.33 (libva 1.1.1) vainfo: Driver version: Intel i965 driver - 1.0.20 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointVLD
Schauen wir einmal, ob die X Treiber erfolgreich erneuert wurden.
glxinfo
In der Mitte sollten ein paar Zeilen wie diese zu finden sein:
OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Desktop OpenGL core profile version string: 3.1 (Core Profile) Mesa 9.2.1 OpenGL core profile shading language version string: 1.40
Und werfen wir jetzt (und später) einmal einen Blick auf die Aktivität unseres IGP:
sudo intel_gpu_top
Optional: Test mit dem mplayer
add-apt-repository ppa:sander-vangrieken/vaapi apt-get update apt-get install mplayer-vaapi mplayer -vo help
Zeigt jetzt vaapi als verfügbaren Videotreiber an. Dann versuchen wir jetzt einmal, einen vorhandenen Videostream darzustellen:
mplayer -vo vaapi -ao alsa:device=plughw=0.3 -fs Pfad_zur_Videodatei # HW Video mplayer -vo xv -ao alsa:device=plughw=0.3 -fs Pfad_zur_Videodatei # Soft Video
Wird das Video dargestellt, lohnt sich ein Blick auf die CPU mit top und eine Blick auf die GPU mit intel_gpu_top. Der in der GPU dekodierte Stream sollte wesentlich weniger CPU Verbrauch anzeigen, hier ein paar Beispielswerte:
XV SD 6% VAAPI SD 3% XV HD 40% VAAPI HD 10%
VAAPI Aktualisierung
Da vaapi derzeit heftig entwickelt wird, ist eine Aktualisierung gegenüber dem Auslieferungsstand von Ubuntu empfehlenswert. Im Systemstand von Saucy ist derzeit noch die VAAPI Funktionalität VPP (Video Preprocessing Pipeline) nicht enthalten, erst damit wird ein vollständiges Deinterlacing möglich.
cd /data git clone git://anongit.freedesktop.org/vaapi/libva cd libva ./autogen.sh --prefix=/usr/local make sudo make install cd /data git clone git://anongit.freedesktop.org/vaapi/intel-driver cd intel-driver ./autogen.sh --prefix=/usr/local make sudo make install
Siehe auch:
auf
Die Überprüfung ergibt eine aktualisierte VAAPI Umgebung, einige Bibliotheken und Programme befinden sich jetzt doppelt im System, wobei die jeweiligen /usr/local Varianten die Systemvarianten übersteuern sollten:
which vainfo /usr/local/bin/vainfo vainfo libva info: VA-API version 0.34.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_34 libva info: va_openDriver() returns 0 vainfo: VA-API version: 0.34 (libva 1.1.1) vainfo: Driver version: Intel i965 driver - 1.2.2.pre1 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264Baseline : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointVLD
Für volles Deinterlacing ist nach heutigem Stand auch noch ein neuerer Kernel erforderlich. Saucy wird gerade mit Version
uname -r 3.11.0-12-generic
ausgeliefert. Sinnvoll ist der letzte Linux Stable oder sogar die etwas experimentelle Version aus der Graphikentwicklung:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git git clone git://people.freedesktop.org/~danvet/drm-intel