Ubuntu HD VDR mittels Xine und VAAPI - Betriebssystem Rev2

Aus VDR Wiki
Version vom 20. Oktober 2013, 18:11 Uhr von Hulk (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

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

Links

  1. Ubuntu
  2. Putty