Adobe-Flash ist unter Linux leider schon immer ein ziemlicher Pain-in-the-ass gewesen. In vielen Fällen funktionert das Browser-Plugin zwar ok, doch viele Bugs sind schon seit Ewigkeiten offen und alles Bitten und Betteln hilft nichts, Adobe weigert sich die Probleme zu fixen. Adobe hat mittlerweile wohl auch erkannt, dass Flash unter Linux wohl nie so richtig hinbekommen wird und hat mit Adobe Flash 11.2 das „letzte“ Adobe Flash für Linux veröffentlicht. Demnächst wird es Flash nur noch über die Pepper-API geben, die bislang nur Chrome implementiert hat. Wer in Zukunft also unter Linux Flash-Elemente nutzen möchte, der muss auf die Flash-Alternativen Lightspark, Gnash und Co. setzen oder eben auf Chrome umsteigen.
Nach der langen Einleitung versuche ich nun wieder die Kurve zum eigentlichen Inhalt des Beitrags zu kommen: Flash und seine Probleme mit einem Dual-Monitor-System. Nach längere Zeit nutze ich an meinem Desktop-Rechner wieder fest zwei Monitor und muss mich daher zwangsläufig dem Thema mal wieder widmen, Anlass ist auch die Fußball-EM, deren Streams von ARD und ZDF nur über Flash laufen.
Update 29.09.2014: Adobe hat die Unterstützung für Systeme mit mehr als einem Monitor in den aktuellen Versionen des Browser-Plugins deutlich verbessert. Allerdings spendierte Adobe die Neuerung lediglich der Pepper-Flash-Variante des Plugins. Wer mit Firefox arbeitet, sollte daher in Erwägung ziehen auf einen Browser wie Chrome oder Chromium mit PPAPI-Support umzusteigen, oder mit dem experimentellen Pepper-Flash-Wrapper zu arbeiten. Sämtlich Informationen zum Stand zu Flash unter Ubuntu 14.04 und neuer findet ihr hier… Adobe Flash für Firefox, Opera, Chromium und Chrome unter Ubuntu 14.04 und 14.10 installieren.
Die Probleme
Nun also mal zu den Wehwehchen von Adobe Flash auf einem Linux-System mit zwei Monitoren. Wer so ein Setup nutzt, der wird über kurz oder lang ein paar nervige Probleme feststellen können, die sich leider nicht so einfach beheben lassen.
- Im Vollbild erscheinen Flash-Videos nicht auf dem Schirm, wo auch das Browser-Fenster liegt, sondern poppen immer auf dem primären Monitor auf.
- YouTube lassen sich zwar auf beiden Monitoren maximieren, allerdings wird das Video nicht auf die volle Breite des Displays aufgezogen und die Bedienelemente sind klitzeklein.
- Vollbild-Videos schnappen zurück ins Browser-Fenster, sobald man auf dem zweiten Display irgendein anderes Fenster anklickt und ihm so den Fokus gibt.
Alle Probleme zusammengenommen machen Flash-Videos auf einem Dual-Screen-System zu einer nervigen Sache. Eigentlich könnte man bequem auf einem Monitor arbeiten und am zweiten die EM schauen, doch weder funktioniert der Vollbild-Modus ordentlich, noch bleibt er lange erhalten.
Lösungen gefragt!
Im Netz tummeln sich bezüglich dieser Bugs zahlreiche Threads in Foren und unzähliche Blog-Artikel geben Tipps und Tipps, doch leider haben sich bei mir leider keine dieser Tipps bewährt. Ich habe weder für das verschwinden des Fullscreen-Bildes bei einem Mausklick auf dem zweiten Monitor, noch für das Vollbild auf dem falschen Monitor eine Lösung gefunden. Für beide Issues gibt bzw. eher gab es schon Jahre alte Fehlermeldungen im Bug-Trucker von Adobe, allerdings ist jetzt nur noch der Falscher-Monitor-Bug dort zu finden… und zwar als gelöst.
Was mich noch interessieren würde, was YouTube anders macht, als bspw. Vimeo oder die Mediatheken von ARD und ZDF. YouTube-Flash-Videos maximieren sehr wohl auf das „richtige“ Display, während eben das Vollbild von Vimeo, ARD und ZDF immer auf dem primären Monitor landet. Es muss also noch einen Trick der YouTubler geben, den die anderen Web-Entwickler nicht kennen.
Fullscreen-YouTube-Bug
Was sich mit relativ erträglichem Aufwand und auch mit bleibenden Erfolg reparieren lässt, ist das Problem mit dem Vollbild bei YouTube-Videos. Bilder erklären hier die Lage sicherlich deutlich besser als viele Worte, von daher zeige Ich einfach wo der Schug drückt.
Auf den folgenden Bildern seht Ihr ein Dual-Screen-System mit Ubuntu 12.04 und der GNOME-Shell. Auf dem rechten Screen läuft ein YouTube-Video im vermeintlichen Vollbild. Flash schafft es nicht das Bild auf die volle Breite zu strecken und die Bedienelemente sind klitzeklein. Im zweiten Bild seht Ihr wie das Ganze eigentlich aussehen sollte, das Video ist so breit wie der Bildschirm und die Buttons für Play und Co. sind normal groß.
Schuld daran ist das Verfahren wie Flash die Displaygröße ermittelt. Auf Al’s Website ist die Zustandekommen dieses Problems klasse erklärt, daher erspare ich mir an dieser Stelle weitere Details, allerdings lässt er uns nicht nur mit mehr Wissen um die Problematik zurück, sondern liefert auch gleich einen Patch, der das Problem in der Tat komplett behebt.
Den Patch müsst Ihr leider selber runterladen und kompilieren, was aber jetzt auch kein riesen Unterfangen ist, im Archiv sind ausführliche Instruktionen hinterlegt, die ich hier im Rahmen des Artikels noch ein bisschen erläutern möchte. Getestet habe ich den Patch mit Ubuntu 12.04 64-Bit, aber auch ältere Ubuntus und andere Linux-Distrubutionen sollte funktionieren, dort müsst Ihr euch eben die genannten Abhängigkeiten mit dem Paketmanager eurer Distro holen.
Als Vorbereitung ladet Ihr euch bitte die aktuelle Version des YouTube-Fullscreen-Hacks herunter und packt das Archiv bspw. in /tmp aus, merkt euch bitte den Pfad und wechselt in einem Terminal dort hin. Anschließend braucht Ihr noch ein Paar Pakete, um den Hack bauen zu können, auf 64-Bit Systemen braucht es auch die Build-Abhängigkeiten des NsPluginWrappers.
$ sudo apt-get install build-essential libx11-dev $ sudo apt-get build-dep nspluginwrapper # Bei 64-Bit Systemen
64-Bit Linuxer müssen anschließend auch noch das Makefile in einem Editor ihrer Wahl öffnen und dort die erste Zeile von BITS=32
in BITS=64
ändern, so dass dar Hack auch ordentlich für ein 64-Bit System gebaut wird. Danach wird mit einem simplen make
der komplette Hack in wenigen Momenten gebaut, ein make test
überprüft hinterher, ob das mit dem Bauen und der Erkennung der Auflösung auch geklappt hat.
$ make $ make test echo running without the hack... running without the hack... ./tester XGetGeometry reports width=3200 height=1200 echo running with the hack... running with the hack... LD_PRELOAD=./libfullscreenhack.so ./tester fullscreen hack loaded... XGetGeometry reports width=1920 height=1200
Interessant sind hier die beiden Zeilen mit XGetGeometry reports
, sie zeigen an welche Bildschirm-Dimension dem Flash-Plugin mit und ohne dem Hack übermittelt wird. Wichtig ist, dass in der letzten Zeile die reale Auflösung eures primären Schirms steht. Stimmt hier alles, könnt Ihr den Hack als Bibliothek nach /usr/lib/
in euer System kopieren.
$ sudo cp libfullscreenhack.so /usr/lib/libfullscreenhack.so
Anschließend könnt Ihr den Hack nun erstmals richtig testen. Beendet dazu bitte euren Browser vollständig (Beachtet bitte bei Chrome, dass der Browser im Hintergrund als „Schnellstarter“ weiterläuft) und ruft dann euren Browser mit einem vorangestellten LD_PRELOAD=/usr/lib/libfullscreenhack.so
auf, so dass eure Bibliothek zusammen mit dem Browser geladen wird.
$ LD_PRELOAD=/usr/lib/libfullscreenhack.so firefox $ LD_PRELOAD=/usr/lib/libfullscreenhack.so /opt/google/chrome/chrome $ LD_PRELOAD=/usr/lib/libfullscreenhack.so euerbrowser
Stimmt das Vollbild bei einem YouTube-Video nun ist der Drops nun eigentlich schon gelutscht, allerdings ist es nicht gerade bequem nun den Browser immer aus dem Terminal heraus zu starten. Ich würde daher ein kleines Shell-Skript mit dem selben Namen, wie das Binary eures Browser unter /usr/local/bin
anlegen, das euren Browser mit dem LD_PRELOAD-Vorspann lädt. Da /usr/local/bin
im $PATH weit vorne steht, wird automatisch euer Skript geladen und das Flash-Problem bei YouTube behoben.
Anhand des Firefox-Browser zeige ich euch kurz das Anlegen dieses SKripts. Erzeugt dazu eine Datei /usr/local/bin/firefox
mit touch, weißt Ihr die passenden Rechte mit chmod zu und öffnet Sie abschließend in den Browser eurer Wahl, hier wäre das gedit
, der mit Root-Rechten aufgerufen wird.
$ sudo touch /usr/local/bin/firefox $ sudo chmod +x /usr/local/bin/firefox $ sudo gedit /usr/local/bin/firefox
Dort fügt Ihr dann in einem aller, aber auch wirklich aller letzten Schritt die folgenden Zeilen ein. Sie bewirken dass euer Firefox beim Klick ins Menü eurer Desktopumgebung ganz normal geladen wird, allerdings wird immer das LD_PRELOAD davorgesetzt.
#!/bin/bash LD_PRELOAD=/usr/lib/libfullscreenhack.so firefox $@
Die restlichen beiden Probleme sind und werden wohl auch in Zukunft nicht mehr bei Adobe-Flash behoben werden. Das Verschwinden des Vollbilds beim Klick auf den zweiten Screen ist – wenn ich mich richtig erinnere angeblich ein Feature und kein Bug, und das Vollbild auf dem falschen Screen lässt sich einfach nicht auf den richtigen Bildschirm schieben.
HTML5 für YouTube und Vimeo
Die wohl einzig vernünftige Lösung ist es Adobe-Flash im Video-Bereich den Stiefel zu geben und auf HTML5 umzusteigen. Das ist leider nicht völlig eure Wahl, den der Video-Hoster muss selber seine Videos oder Streams auch via HTML5 anbieten. Das ist bei YouTube oder Vimeo der Fall, aber bei unzähligen anderen Diensten (wie auch den Mediatheken von ARD und ZDF) leider nicht.
Bei YouTube könnte Ihr zentral auf der YouTube HTML5-Seite den Schalter umlegen, YouTube bezeichnet den HTML5-Player noch als Test, dennoch funktioniert er eigentlich ganz gut. Bei Vimeo findet Ihr unter jedem Video einen Link um auf die HTML-Variante des Player zu kommen. So habt Ihr wenigstens bei diesen beiden Diensten Ruhe vor Flash, bei den Mediatheken von ARD und ZDF tut sich in dieser Richtung leider Gottes bislang noch gar nichts.
Häh? ARD und ZDF bieten doch auch ganz konventionelle (d.h. ohne Flash) Streams an? Da hast du doch erst neulich drüber geschrieben? Und Youtube schaltet auch automatisch auf HTML5 um wenn kein Flashplayer installiert ist (oder das Plugin abgeschaltet)… Warum also jetzt auf einmal wieder zurück auf Flash?
Hi Alex, Die Mediatheken waren nur ein Beispiel, es gibt ja noch unzählig viele andere Seiten mit Flash-Videos. Beide Mediatheken bewerben die alternativen Streams ja auch nicht, so dass man als „Otto-Normal-Surfer“ diese ja auch nicht finden kann.
Grüße
Christoph
//PS: Du musst hier gar keine E-Mail-Adresse angeben beim Schreiben eines Kommentars eintragen. Nur wer will, der kann 🙂
Leider funktioniert der Patch bei mir nicht.
Ich kriege in jedem Fall:
XGetGeometry reports width=2560 height=1024
Könnte das mit dem proprietäre Nvidia Treiber zusammenhängen?
Wenn jedoch ich in der fullscreenhack.c die Werte ändere
#define REAL_WIDTH (2560)
#define REAL_HEIGHT (1024)
// the height and width of the primary monitor where flash
// goes fullscreen
#define FAKE_WIDTH (1280)
#define FAKE_HEIGHT (1024)
kriege ich die richtige Ausgabe:
echo running without the hack…
running without the hack…
./tester
XGetGeometry reports width=2560 height=1024
echo running with the hack…
running with the hack…
LD_PRELOAD=./libfullscreenhack.so ./tester
fullscreen hack loaded…
XGetGeometry reports width=1280 height=1024
Wenn ich danach den Patch mit dem Browser teste, klappt es dann auch.
Firefox ✓
Opera ✗
Chromium ✓
Hi,
vielen Dank für den Artikel. Mich hat das mit den Youtube-Videos auch schon _immer_ aufgeregt. Werde den Patch gleich mal ausprobieren.
Eine gute Alternative, die ich auch öfter benutze ist das Video mit mplayer anzuschauen. Dazu braucht man noch das youtube-dl-Skript, welches den Downloadlink ausspuckt.
Wenn man das Video dann mit „mplayer $(youtube-dl -g $URL)“ startet kann man es ganz normal in mplayer anschauen. Das ist auch sehr praktisch am Notebook, weil man damit auch die Hardwareunterstützung von mplayer ausnutzen kann. So kann ich trotz schwacher CPU (AMD E-350) auch 1080p Videos anschauen.
Viele Grüße,
Stefan
Hi Stefan, den Aufwand würde ich mir nicht machen. Wenn ich schon einen externen Player nutze, dann würde ich zu Minitube greifen (es sei denn du willst ein Video wirklich archivieren). Allerdings sind diese ganzen externen Player unbequem. Klar, zum Browsen durch YouTube sind sie schon ok, aber wenn du halt irgendwo im Netz ein eingebettetes Video findest, das du schnell anspielen möchtest, dann nervt es schon Minitube auszugraben, das Video rauszusuchen usw… Ideal wäre es ein Video aus einer Webseite heraus in Minitube öffnen zu können, doch hier ist mir kein Weg bekannt.
Grüße
Christoph
Hi,
ja das ist das Problem. Ich mache das auch nur wenn ich größere bzw. längere Videos anschauen will oder am Notebook ein Video unbedingt in HD Qualität sehen will.
Es gab mal Greasemonkey-Skripts die dann youtube-Videos über mozplugger direkt in Firefox abgespielt haben, aber das war auch immer eine sehr verbuggte Lösung.
Gruß,
Stefan
Ich habe zwei 42″ TV mit Debian Wheezy und Mythtv.
Für mich sehe ich das Problem gar nicht. Ich würde gar nicht wollen, dass es auf beiden Displays angezeigt wird.
Mit MythTV geht das aber. Wobei ich sagen muss, dass ich es mit ARD/ZDF Mediathek noch nicht probiert haben. XBMC wäre vllt. auch mal zu probieren Doppelvollbild geht sicher.
Ich mag lieber rechts TV gucken und links Desktop
Youtube HTML5 stürzt bei mir leider immer ab, wenn ich die Qualität des Streams auf 720p oder höher ändere. Deshalb muss ich leider weiter die Flash Variante nutzen. 🙁
Die Probleme mit youtube habe ich auch via HTML5 gelöst was recht gut funktioniert ,aber leider bittet nur wenige seiten HTML5. Der Bug mit dem „primären Monitor“ habe ich leider auch schon seit Ewigkeiten , und eine Lösung habe ich bis jetzt nicht gefunden 🙁
Bei mir isses merkwürdigerweise immer der sekundäre Monitor …
(Nvidia-proprietär, sekundär links vom primären M. und ich bin sicher, das hat etwas mit den absoluten Koordinaten zu tun)
Hartmut
Mit Archlinux habe ich die ganzen Probleme nicht.
Nagut dass mit dem klick auf anderen Monitor und der Fullscreen verschwindet… jaa ab und an mal 🙂
Gibt es einen speziellen Grund, wieso der Hack mit dem Chrome-Wrapper-Script nicht funktioniert? Das modifiziert u.a. den LD_LIBRARY_PATH, ich sehe aber auf Anhieb nicht, wieso das schädlich sein sollte…
$ LD_PRELOAD=/usr/local/lib/libfullscreenhack.so /opt/google/chrome/google-chrome
fullscreen hack loaded…
fullscreen hack loaded…
/opt/google/chrome/google-chrome: line 42: /home/tg/fullscreen hack loaded…
fullscreen hack loaded…
/opt/google/chrome/chrome: No such file or directory
/opt/google/chrome/chrome existiert natürlich, ich vermute, dass er irgendein Shared Object nicht laden kann…
das sieht mir schon wie ein Fehlverhalten aus:
/opt/google/chrome/google-chrome: line 42: /home/tg/fullscreen hack loaded…
schau da mal genauer nach.
Der in Chrome 20 integrierte Flashplayer hat bei NVidia TwinView ganz neue Probleme. Videos werden nur noch zur Hälfte angezeigt. Wer den Adobe Flashplayer installiert hat, kann den aber wieder aktivieren
Für einige der genannten Problem bietet sich auch das das FF-Plugin Flashvideoreplacer an. Damit kann man FlashVideos in Youtube und auf anderen Videoseiten direkt im Player (Totem, VLC) öffnen. Diese Fenster sind dann natürlich beliebig platzierbar!
Stimmt, das hätte ich auch erwähnen sollen. Baue ich vielleicht noch ein.
Grüße
Christoph
This add-on has been removed by its author.
Ich möchte einen gewichtigen Fehler in der Anleitung anmerken… der mir zum Einfrieren des Systems geführt hat. Außerdem sehr banal und leicht zu beheben ist:
#!/bin/bash
LD_PRELOAD=/usr/lib/libfullscreenhack.so firefox $@
Soll der Inhalt der neuen „firefox“-Datei sein, die im PATH weiter vorne steht und zuerst geladen wird. Der Denkfehler wird klar, wenn man sich überlegt, welche „firefox“-Datei der inhalt eben selbiger Datei aufruft… hübsche Rekursion. Speicherleck. System gefroren. 🙂
Ich schlage daher vor:
#!/bin/bash
LD_PRELOAD=/usr/lib/libfullscreenhack.so /usr/bin/firefox $@
Ansonsten vielen Dank für den Tipp, funktioniert großartig!
Dieser zusätzliche Tipp ist Gold wert.
Ich hatte es vorher anders gelöst, aber deine Lösung ist einfacher und sauberer.
Hier gabs gestern zum Thema Flash und MultiMonitor noch nen netten Artikel:
http://www.webupd8.org/2012/10/ubuntu-multi-monitor-tweaks-full-screen.html
https://chrome.google.com/webstore/detail/multiple-monitor-full-scr/fdnjdibmddfgbdohgacjakddhncfhpcf?hl=de
das nutze ich als workaround wegen dem Klick-Problem, funktioniert ganz gut, auch wenns etwas aufwendiger ist…
Guter Vorschlag, probiere ich mal aus 🙂
Hi Christoph, schon wieder hat Dein Blog mir Nerven erspart, vielen Dank!
Hi,
Als gute Ergänzung, um das Focus-Problem zu „lösen“, habe ich folgenden Link aus 2012 ausprobiert, und es klappt! Dazu muss ein Library_Binary geändert werden und zwar die Variable _NET_ACTIVE_WINDOW unkenntlich gemacht werden:
http://www.webupd8.org/2012/10/ubuntu-multi-monitor-tweaks-full-screen.html
hat bei mir super funktioniert, jetzt klappt der Fullscreen auch, wenn ich im Sekundär-Bildschirm arbeite.
Zu dem richtig bemerkten „gewichtigen Problem“ von Faldrian: Die Lösung oben zuerst im Blog ist so gesehen immer noch nicht vollständig, weil die absolute Pfadangabe zum firefox-binary fehlt.
Wie jeder selbst schnell herausfinden kann (durch Starten im Terminal), kommt es mit zuerst genanntem Code zur erwähnten rekursiven Schleife, die innerhalb kürzester Zeit den Rechner lahm legt, bricht man nicht sofort mit Strg-C ab.
Erst die buchstabengenaue Übernahme von Faldrian sorgt hier für Abhilfe.
Hallo habe auch 2 Monitore angeschlossen, es ist auch eine Möglichkeit Google Chrome zu insstalieren, unter Chrom treten diese Probleme nicht auf!
@Anonymous:
meinst du Chrome statt Chromium? Weil ich habe den Chromium drauf, und habe genau diese Probleme…
Beim Firefox bin ich mittlerweile mit diesem Plugin sehr zufrieden:
https://addons.mozilla.org/de/firefox/addon/youtube-all-html5/
Das löst die Probleme aber eben nur bei youtube…
hi,
ich habe auch alle aufgeführten Probleme 🙁
Am meisten stört mich, dass videos im vollbild (eben bei ard und zdf…das relegationsspiel von heute abend lässt grüßen) nur auf dem primären (mein Laptop-bildschirm) startet. Gut, bei Live-streams kann man die alternative via VLC player benutzen. Trotzdem unschön.
Hast du selber zu dem falscher-monitor-problem eine lösung. Bei dem verlinkten bug-report hab ich nichts finden können wie es gelöst wurde.
Mein system: ubuntu 14.04
Würde mich über eine antwort freuen 🙂
gruß
alex