Adobe Flash mit DRM nutzen
Viele Webseiten und Videoportale setzen (leider) auf das proprietäre Adobe Flash und dabei gerne auch auf das mitgelieferte Digital Rights Management (DRM) um die Aufnahme von Video-Streams zu verhindern. Leider führt dies bei Linux-Benutzern teilweise dazu, dass das Angebot gar nicht mehr genutzt werden kann...
Als überzeugter Linux-Benutzer ist man üblicherweise kein Freund von proprietärer Software und dem sogenannten "Digital Rights Management" (DRM) - und um so ärgerlicher ist es dann, wenn der leider schlecht vermeidbare proprietäre Flash-Player aus dem Hause Adobe Systems, Inc. bei einigen Webseiten oder Video-Portalen einfach nicht funktioniert. Bei DRM handelt es sich um eine digitale Rechteverwaltung, womit die Nutzung bzw. Verbreitung digitaler Medien kontrolliert werden soll. Im Bezug auf das vorherige Beispiel geht letztendlich darum, zu verhindern, dass Benutzer einen Video-Stream aufzeichnen können. Rein technisch möchte ich an dieser Stelle anmerken, dass sich das sowieso nur erschweren, aber nicht völlig verhindern lässt. Doch zurück zum Thema: Der Adobe Flash-Player setzt für das digitale Rechtemanagement unter Linux auf den sogenannten Hardware Abstraction Layer (HAL) - wobei es sich übrigens um eine freie Open Source Software handelt. Erwähnenswert ist noch, dass die Entwicklung von HAL bereits im Jahr 2009 generell eingestellt worden ist und HAL daher von vielen führenden Linux-Distributionen als veraltete Software bewertet und daher nach und nach entfernt bzw. durch nicht binärkompatible Alternativen ersetzt wird.
Die erste und häufigste Problematik mit dem Adobe Flash-Player ist der Einsatz eines 64 Bit-Browsers, da der Flash-Player für Linux lange nur in 32 Bit verfügbar war und selbst heute die 64 Bit-Variante nicht ganz schmerzbefreit ist, wenn man einschlägige Quellen konsultiert. Dies hat sich mit dem nspluginwrapper (auch bekannt als npviewer.bin) lösen lassen; so konnte man mit einem 64 Bit-Browser wie Mozilla Firefox das 32 Bit-Plugin, den Flash-Player, nahezu immer funktionierend betreiben. Bis man an dieser Stelle war, waren jedoch oftmals Handarbeit und Erfahrung notwendig, da sich die Entwickler bei Adobe offensichtlich nie über das saubere Erstellen von DEB- oder RPM-Paketen für die unterschiedlichen Hardware-Architekturen bzw. Linux-Distributionen irgendwelche Gedanken gemacht haben. Ein Beispiel aus der Realität:
robert@tux:~ > rpm -qp --requires flash-plugin-11.2.202.243-release.i386.rpm
glibc >= 2.4
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
robert@tux:~ >
Erfahrene Linux-Anwender können hier nur verzweifelt mit dem Kopf schütteln - eine Multimedia-Software hängt in den allermeisten Fällen von deutlich mehr Software-Komponenten und vor allem Bibliotheken ab, als nur von der GNU C-Bibliothek und einer Shell. Und tatsächlich benötigt der Adobe Flash-Player weitere Software-Komponenten, die im DEB- oder RPM-Paket gar nicht als Abhängigkeit genannt werden.
Das Hilfe-Portal von Adobe verweist bei Problemen mit dem Flash-Player und DRM unter Linux generell darauf, den Hardware Abstraction Layer (HAL) nachzuinstallieren und die Flash-internen Anwendungsdaten im Home-Verzeichnis des Benutzers zu löschen - technische Hinweise zur intensive Fehlersuche fehlen jedoch gänzlich. Unter der Haube lädt der Adobe Flash-Player die sogenannte "Flash Access Library" vom Server xsdownload.adobe.com nach. Dabei handelt es sich um eine Bibliothek, die sowohl vom Betriebssystem, als auch von der Hardware-Architektur abhängt und z.B. libadobecp-301806-0.so heißt. Abgelegt wird diese im Home-Verzeichnis des jeweiligen Benutzers mit dem der Browser gestartet worden ist. Wichtig zu wissen ist, dass exakt diese nachträglich heruntergeladene Bibliothek die Abhängigkeit zum Hardware Abstraction Layer (HAL) einführt! Und ist HAL nicht installiert oder kann nicht verwendet werden, so hängt entweder der Download der "Flash Access Library" bei 100%, das Flash-Plugin stürzt einfach nur ab oder man erhält im (seltenen) Idealfall sogar Meldungen wie "Error #3344 [MissingAdobeCPModule]" oder "Updating AdobeCP module...". Jegliche Art von hilfreicher Fehlerbehandlung im Problemfall scheint innerhalb des Flash-Players vergessen worden zu sein.
Im konkreten Problemfall mit DRM (wenn also der Adobe Flash-Player generell funktioniert, DRM-geschützte Videos jedoch nicht) empfiehlt sich nachfolgendes Vorgehen, das - abweichend zur verkürzten Hilfestellung von Adobe - eigentlich immer zum Erfolg führen sollte:
- Aktualisierung des Adobe Flash-Players auf die neueste verfügbare Version (z.B. mit yum update flash-plugin wenn das Yum-Repository verwendet wird)
- Bei 64 Bit-Betriebssystemen sollte geprüft werden, ob ein 32 Bit- oder 64 Bit-Browser verwendet wird und ob der Flash-Player in 32 Bit oder 64 Bit installiert ist
- Installation des passenden Hardware Abstraction Layers (HAL) in Abhängigkeit zum vorhandenen Flash-Player, d.h. bei einem 64 Bit-Browser und einem Flash-Player in 32 Bit wird ein 32 Bit-HAL benötigt, also z.B. yum install hal-libs.i686; oder apt-get install hal
- Ausführen von killall -9 npviewer.bin gefolgt von rm -rf $HOME/.adobe/Flash_Player
- Ein Neustart des Browsers ist nicht zwingend erforderlich, hilft aber in einigen selteneren Fällen
Bitte beachten Sie unbedingt, dass die in diesem Artikel beschriebene DRM-Problematik unter Linux unabhängig vom verwendeten Browser ist und damit Mozilla Firefox, Opera, Konqueror und Google Chrome betrifft, die Auswirkungen sich aber in den verschiedenen Browsern unterschiedlich darstellen können.
Funktioniert es anschließend weiterhin nicht, so sollten Sie die Testseite http://drmtest2.adobe.com:8080/SVP/SampleVideoPlayer_FP.html besuchen. Setzen Sie dort den Haken bei "Show DRM Events", fügen Sie im vorhergehenden Eingabefeld die Adresse "http://drmtest2.adobe.com:8080/Content/anonymous.f4v" ein und klicken Sie auf "Play" am unteren Bildschirmrand. Auf der rechten Seite werden verschiedene Informationen zur Ursachen- und Fehlersuche angezeigt, die einem erfahreneren Benutzer teilweise bereits zielführend weiterhelfen können.
Häufigstes Problem ist und bleibt der Einsatz eines 64 Bit-Betriebssystems mit einem 64 Bit-Browser, während der Flash-Player in 32 Bit installiert ist! Standardmäßig ist dann nämlich nur ein Hardware Abstraction Layer (HAL) in 64 Bit installiert, während die 32 Bit-Variante zusätzlich benötigt wird. Ob Ihr Adobe Flash-Player in 32 Bit oder 64 Bit installiert wurde, können Sie z.B. an der Kommandozeile folgendermaßen ermitteln:
robert@tux:~ > file /usr/lib/flash-plugin/libflashplayer.so
/usr/lib/flash-plugin/libflashplayer.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
robert@tux:~ >
Falls jemals ein Adobe-Entwickler diese Webseite liest, so würde ich gerne per E-Mail eine Antwort auf nachfolgende Frage erhalten: Warum werden nachfolgende wenige triviale Zeilen nicht in die *.spec-Datei des Adobe Flash-Players eingefügt, die das Problem lösen und damit ein sauberes RPM-Paket erzeugen würden?
# ...
%if 0%{?rhel}%{?fedora}
%ifarch %{ix86}
Requires: hal-libs(x86-32)
%endif
%ifarch x86_64
Requires: hal-libs(x86-64)
%endif
%endif
# ...
Ich befürchte allerdings, dass ich auf diese Frage vermutlich niemals bis zum Ende der Produktlebenszeit des Adobe Flash-Players unter Linux eine technisch qualifizierte Antwort von einem Adobe-Entwickler erhalten werde, der sich dem Problem dann auch ernsthaft annimmt...