Tag Archives: Archlinux

Using mplayer with ATI UVD hardware acceleration to play h264 videos and the open source mesa driver under Linux

Since version 9.2.0-1 the open source Mesa driver supports ATIs UVD hardware video acceleration for h264 videos.

If it was enabled correctly your boot log should contain something like this:

Aug 31 18:55:22 main kernel: [drm] UVD initialized successfully.

You can easily check this with:

# journalctl -b | grep UVD

Now if you want to play a video with mplayer and make use of the new feature, you should append following parameter:

-vc ffh264vdpau

If everything went well you should see something like:

Starting playback...
[VD_FFMPEG] Trying pixfmt=0.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vdpau] 1280x720 => 1280x720 H.264 VDPAU acceleration

after mplayer has started.

And it’s really worth it! Without hardware acceleration the average CPU usage of mplayer was around 20% and it dropped to 1.7%!
This is how I watch dvb-c with mplayer:

mplayer dvb://Das\ Erste\ HD -vc ffh264vdpau -demuxer lavf -ao alsa:device=hw=1.0 -cache 8192

See a earlier post of mine about this subject: klick

Used source: klick

channels.conf für Kabel BW mit neuen Sendefrequenzen für mplayer DVB-C

Seit dem 4.6.2013 hat Kabel BW die Sendefrequenzen geändert, weshalb man die Sender neu suchen muss.

Erstellt habe ich die channels.conf folgendermaßen:

$ scan de-Kabel_BW > .mplayer/channels.conf

Wobei de-Kabel_BW aus /usr/share/dvb/dvb-c/de-Kabel_BW des Pakets linuxtv-dvb-apps stammt.
Diese Datei ist leider noch für die alten Sendefrequenzen gedachte, weshalb sie etwas erweitert werden muss, damit der Tuner eine Einstiegsfrequenz findet (glaube ich zumindest):

# freq sr fec mod
C 122000000 6900000 NONE QAM64
C 362000000 6900000 NONE QAM64
C 362000000 6900000 NONE QAM256

Hat man den Sendersuchlauf durchgeführt, kann man mit dem mplayer die HD-Sender folgendermaßen abspielen:

$ mplayer dvb://ZDF\ HD -demuxer lavf -ao alsa:device=hw=1.0 -cache 8192

Die Angabe des ALSA-Devices kann man natürlich weglassen.
Falls man das -demuxer lavf weglässt bleibt der mplayer einfach bei folgender Ausgabe stehen und es erscheint kein Bild:
TS file format detected.
VIDEO MPEG2(pid=6110) AUDIO MPA(pid=6120) NO SUBS (yet)! PROGRAM N. 0

Falls man den großen Cachewert weglässt, ist – zumindest bei mir – das Bild und der Ton nicht synchron und es entstehen Aussetzer.
Kleine Vorwarnung: Die HD-Wiedergabe erzeugt bei mir 25% Prozessorlast!

Hier jetzt meine channels.conf die man mit mplayer verwenden kann, aus den Sendernamen sollten man teilweise noch die * entfernen, falls sich jemand die Mühe macht einfach mir zukommen lassen, ich aktualisiere das hier dann:
Solltet ihr in eurer channels.conf in den Namen der Sender viele *-Zeichen haben, kann man das mit sed herausfiltern:

$ sed s/*//g .mplayer/channels.conf >> /tmp/channels.conf
$ mv /tmp/channels.conf .mplayer/channels.conf

Die Liste gib’s nach dem “More”
Continue reading channels.conf für Kabel BW mit neuen Sendefrequenzen für mplayer DVB-C

Webcam für Unterkirnach im Schwarzwald

Für meinen Raspberry Pi habe ich jetzt endlich eine sinnvolle Aufgabe als Webcam-Server gefunden.

Unter http://www.unterkirna.ch ist ab jetzt immer ein aktuelles Bild des Wildpflanzenparks samt Talsee zu sehen. 🙂

Systemaufbau ist wie folgt:

  • Auf dem Pi läuft Arch Linux ARM
  • Die Bilder werden mit dem kleinen c-Programm fswebcam in einer leicht angepassten Version gemacht
  • Webcam ist eine Logitech C270
  • Ein Cronjob schießt alle fünf Minuten ein Bild und schiebt es per scp auf den Server
  • Die Webcam wird über ein aktiven USB-Hub mit Strom versorgt, da der Pi maximal 150mA über die USB-Ports liefert
  • Zwischen 23.00Uhr und 4.00Uhr werden keine Bilder geschossen

Die Webcam könnte maximal Bilder mit einer Auflösung von 1280×960 Pixeln schießen, da hier der Traffic des Webservers etwas stark leiden würde, habe ich die Auflösung auf 960×720 verringert.

How To: 1080p Videos mit dem Raspberry Pi abspielen

In diesem Artikel wird erklärt, wie mit dem Raspberry Pi h264-codierte Videos mit einer Auflösung von 1920×1080 Pixeln (aka. FullHD / 1080p) abgespielt werden können.

“Installation” von Archlinux

Da ich inzwischen auf dem Laptop Archlinux einsetze und dort relativ zufrieden bin, habe ich mich gegen Debian entschieden und verwende stattdessen lieber die Archlinux Distribution für den Pi. Das Image kann man auf der offiziellen Downloadseite per Torrent oder http herunterladen. Anschließend kopiert man das Image einfach auf eine SD-Karte. Hierfür habe ich eine einfache 2GB SD-Karte verwendet. Kopiert wird mittels dd:

# dd if=archlinuxarm-29-04-2012.img of=/dev/sdX bs=4M oflag=sync

Wobei X der dem Buchstaben des Blockdevices unter dem die SD-Karte erreichbar ist entspricht. Falls man sich bezüglich des Buchstabens unsicher ist, kann nachdem die SD-Karte an den Computer angeschlosse wurde mit $ dmesg der Nachrichtenbuffer des Kernels ausgegeben werden. Hier sollte am Ende der Ausgabe etwas wie:
[ 2700.131623] sd 10:0:0:0: [sdf] 3862528 512-byte logical blocks: (1.97 GB/1.84 GiB)
[ 2700.132608] sd 10:0:0:0: [sdf] Assuming drive cache: write through
[ 2700.134458] sd 10:0:0:0: [sdf] Assuming drive cache: write through
[ 2700.134462] sdf: sdf1 sdf2
[ 2700.406247] EXT4-fs (sdf2): mounted filesystem with ordered data mode

zu finden sein. In diesem Falle wäre X also f. Zur weiteren Kontrolle kann mit $ mount noch kontrolliert werden, ob /dev/sdf1 wirklich der ersten Partition der SD-Karte entspricht. Bevor man mit dd das Image auf die Karte schiebt müssen alle gemounteten Partition der SD-Karte geunmounted werden (z.B. # umount /dev/sdf1), da sonst dd ansonsten mit einer Fehlermeldung beendet.
Auf die Option oflag=sync möchte ich hier noch mit einem Satz eingehen, da ich sie erst vor kurzem in einem von Gambarus tollen Beiträgen entdeckt habe: Sie bewirkt, dass jeder Block mit Nullen aufgefüllt wird, wenn er nicht komplett mit Daten beschrieben werden kann.
Nachdem das Image auf der SD-Karte ist, kann man die SD-Karte und alle notwendigen Kabel (HDMI, LAN, evtl. Maus und Tastatur und am Schluss Strom) in den Pi stecken, der daraufhin startet.
Anschließend kann entweder per SSH oder direkt am Pi gearbeitet werden.

Installation des omxplayers

Anstatt des mplayers oder vlc sollte man den omxplayer verwenden, da dieser die GPU des Pis ausnutzt! Der omxplayer wurde freundlicherweise von spenning aus dem Raspberry Pi Forum schon crosscompiliert, was die Sache relativ einfach macht. Wer selbst compiliert, kann sich unter Debian/Ubuntu das Paket gcc-arm-linux-gnueabi installieren, um den passenden Compiler zu bekommen. Dieses Paket ist für ältere Ubuntu/Debian-Versionen wie z.B. der letzten LTS Version 10.04 nur über ein separates PPA-Repository zu erhalten.

Folgende Befehle werden auf dem Pi ausgeführt:
Herunterladen:

# wget http://seyrsnys.myzen.co.uk/rpi/omxplayer-bin.tar.xz

Entpacken:

# tar -xf omxplayer-bin.tar.xz

Nach dem Entpacken sollte der Ordner usr aus dem entstandenen Verzeichnis omxplayer nach / kopiert werden. Hierdurch kopiert man die Binaries und Dokumentation an die richtige Stelle.

# cp -r omxplayer/usr/ /

Der omxplayer benötigt das Paket libva um richtig zu funktionieren. Um dies zu installieren reicht ein einfaches:

# pacman -S libva

Sollte die Installation fehlschlagen (wie bei mir), empfiehlt es sich erst ein Upgrade auszuführen:

# pacman -Syu

Wichtig: Falls man gefragt wird, ob zuerst pacman geupgraded werden soll, dies mit Nein beantworten, da ansonsten das Update nicht richtig durchläuft.

Wiedergabetest

Als Testfilm habe ich den freien Kurzfilm Big Buck Bunny verwendet, den man sich mit

# wget http://mirrorblender.top-ix.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov

herunterladen kann (ca. 700MB).
Anschließen kann man den Film mit

# omxplayer -o hdmi big_buck_bunny_1080p_h264.mov

ruckelfrei und mit Ton über HDMI abspielen. Wird die Option -o hdmi nicht mit angegeben, wird der Ton über die 3,5mm Klinkenbuchse auf dem Board ausgegeben.
Der omxplayer besitzt zwar keine Man-Page aber eine kleine Dokumentation unter /usr/share/doc/omxplayer/README