Neues aus der Linuxwerkstatt: Pipewire verantwortlich?

An manchen Tagen komme ich mir vor, als wenn ich eine Linuxwerkstatt hätte, statt einen PC mit einer Stableversion von Fedora. Da bin ich öfters im Redhat Bugtracker als auf meiner eigenen Webseite.

Neues aus der Linuxwerkstatt: Pipewire verantwortlich?

Der.. nein, sagen wir lieber „ein“ aktueller Fall in der Werkstatt ist das Unvermögen von Firefox Netflix über Wochen sauber abzuspielen ohne Probleme auf die oder andere Art zu produzieren.

Was war geschehen?

Am 2. Mai hatte Firefox beschlossen, daß ich zwar von Netflix den Ton hören dürfte, aber das Video wäre jetzt Privatsache vom Videodecoder. Die Bilder stockten also, insgesamt war alles im Firefox zäh wie Sirup. Die Probleme mit Netflix dauerten auch bis in den nächsten Tag an, wobei auch Webseiten sirupartig waren. Auf einem Ryzen 5600 mit RTX 4060 ist das eher kein Hardwareproblem.

Der Verdacht lag nahe, daß Firefox statt die GPU zu verwenden beschlossen hatte die CPU die ganzen bunten Dinge berechnen zu lassen, was zu immensen Performanceproblemen führen würde. Nach ein paar Stunden des selben Tages gab sich das Problem, was aber nicht an Firefox lag wie sich rausstellte.

Da es ein gstreamer Update gab, daß zeitlich korrelierte, habe ich mal ein Ticket im Bugzilla von Redhat aufgemacht, prompt hat sich da ein anderer User gemeldet, der ähnliche Probleme mit Firefoxplayback auf einer AMD RT 6800 hatte.

Die Zeit vergeht… alle sind ratlos

Die zeit vergeht, alle sind ratlos, dann schlägt das Schicksal erneut gnadenlos zu: Letzte Nacht stoppt Netflix mit dem gleichen Problem während ich ein Video mit OpenShot geschnitten habe. Also erstmal Firefox neugestartet, aber das half nichts. Dann gesagt: „nicht so wichtig“ und mich ums Video gekümmert. Das habe ich mir mit Celluloid ansehen wollen und was muß ich feststellen? Kein Videoplayback, nur Ton. „Oh oh“

Nichts geht mehr

Celluloid, MPV, Totem produzierten ALLE das gleiche Muster, nicht mal die Fortschritte auf den Zeitskalen wurden durchgezählt, die Videos zeigten nur das erste Bild vom Video was üblicherweise Schwarz ist, so daß man das nciht direkt merkt. Zum Glück hatte ich ein anderes Video das direkt ein Bild da hatte. Skippe man im Video rum, kamen auch anderen Standbilder raus.

Um Kernelprobleme auszuschließen habe ich rebooted, aber das half rein gar nichts. Alle Videoplayer zeigten das gleiche Bild ( sprichwörtlich ) … „wirklich alle?“ Nein, ein kleiner, oft völlig unbedachter Videoplayer trotzte dem Problem und spielte weiterhin alle Videos perfekt ab. Und an dem Punkt geht einem ein Licht auf.

Der Player war FFPLAY from FFMPEG Paket. Das heißt, alle anderen Videoplayer und Firefox müssen etwas gemeinsam haben: Pulseaudioplayback.

Der Workaround

Ums Kurz zu machen: sobald jemand via Pulseaudio auf das den HDMI Ausgang meiner Nvidiakarte wollte, stockte das Video, aber der Ton ging sauber durch, was  völlig GAGA ist, weil das kein bisschen was mit Grafiken zu tun hat.

Ich denke folgendes ist passiert: Pipewire läuft ja unter der Haube von Pulse und ist für Video und Audio zuständig. Das hat ein Problem mit dem HDMI Device gehabt. Das muß aber in der User-Config persistent gespeichert sein, also quasi blanker Unsinn im State File oder so etwas in der Art, weil es ja rebootfest war und das geht nur, wenn sich jemand den „Zustand“ von dem Device irgendwo auf der Platte merkt!

Ich habe dann einfach mal das Device via PulseAudio-Lautstärkeregler abgeschaltet, so daß alle Audiostreams über das Mainboard liefen und was soll ich sagen : 100% alle Probleme verschwunden. Alle Player funktionierten wieder 1a.

Nach dem das Ausgabegerät wieder auf dem selben Weg eingeschaltet wurde, liefen die Player auch mit dem HDMI Gerät wieder einwandfrei.

Im Bugtracker wird fleißig am Problem gearbeitet, sollte also bald gefixt sein.

Avatar – Der letzte Luftbändiger

Keine Ahnung, wer das bei Netflix falsch übersetzt hat, oder früher und Netflix das jetzt durchziehen muß, aber die neue Avatar Serie ist super!

Avatar – Der letzte Luftbändiger

Eigentlich heißt es „Avatar – The Last Airbender“, aber Übersetzungen von Filmtiteln haben in Deutschland sehr oft schon Ihren Sinn verloren. Jemand sagte mal, die Übersetzer würden dazu neigen, den Inhalt vom Film in den Titel zu pressen 😉

Vor der Netflix Serie gab es 2010 schon einen Film, der jetzt in der ersten Staffel auf 8 Folgen ausgedehnt wurde. Normalerweise wäre das sehr viel Blah Blah und total langweilig. Bei dieser Verfilmung ist das anders. Jede Folge macht Spaß und ist kurzweilig, auch wenn sie eine Stunde lang ist.

Wer das bis jetzt noch nicht gesehen hat, eine so gute Erste Staffel von Irgendwas gab es lange nicht mehr. „Wednesday“ ist vielleicht auch so eine Ausnahme. Der Junge, der Aang spielt, macht seine Sache auch richtig gut, was in dem 2012er Film nicht ganz so gut lief.

Die Handlung

Aang wächst als Reinkarnation früherer Avatare bei den Luftbändigern auf. Die Magie der Welt ist in Feuer, Wasser, Luft und Erde geteilt und die Mitglieder der jeweiligen Nationen können nur Ihre Magieform bändigen. Der Avatar ist die einzige Ausnahme, denn er kann alle vier Arten erlernen. Dies muß er nutzen um die Welt und die Nationen im Einklang zu halten. Stirbt er, wird seine Seele in den nächsten Körper wandern und der Zyklus geht von vorn los. Daher kann der aktuelle Avatar auf die Erfahrungen früherer Ichs zurückgreifen und diese um Rat fragen, was nicht immer so läuft, wie sich Aang das vorstellt.

Keine Spoiler, schaut es Euch einfach selbst an, es lohnt sich! 🙂

Netflix Plugin für Carola

Die Spatzen pfeifen es vermutlich schon von den Dächern, ich habe mir einen lang gehegten Traum soweit das ging erfüllt: Netflix mit Carola steuern 😀

Netflix Plugin für Carola

Es war richtig cool als Carola die eigenen Videos managen konnte, aber jetzt kann man auch Netflix basismäßig  ansteuern.Das ganze ist zwar noch ein bisschen Beta, weil die Sprachkommandos noch ein bisschen ausgefeilt werden müssen, so daß man eine Menge von sinnvollen Sätzen sagen kann ums an Ziel zu kommen, aber es geht schon ganz braucht.

Ihr könnt Euch sicher vorstellen, daß man dazu einen Browser braucht. Ich habe wie viele von euch Firefox genommen, weil der mit dem Kioskmodus genau die richtige Funktion für das satte Netflixerlebnis hat. Natürlich geht es auch im Windowmodus, aber das ist nicht die beste Wahl, weil das Plugin mit dem Wechsel zwischen Vollbild und Fenster klar kommen muß, was nicht ganz einfach ist. Es gibt auch so schon einige Hindernisse an denen das ganze „scheitert“, da müssen wir uns nicht noch mehr Ärger ins Haus holen.

Für alle Fälle gibt es im Repo auch eine Config für den Fenstermodus. Der hängt aber stark von den eingeblendeten Elementen von Firefox ab und erfordert daher sehr viel Arbeit von Euch. Ich empfehle den Kiosk zu benutzen.

Wir brauchen

Ein paar Tools brauchen wir und wenn Ihr kein X habt, sondern Wayland, braucht Ihr eh eine Alternative zum xdotool. Also: xdotool, wmctrl und sed sind Pflicht und ein eigenes Netflix Profil im Firefox macht alles sehr viel einfacher 😉 Fangen wir damit an

Terminal aufmachen
firefox –profilemanager
Neues Profil erzeugen: Netflix
mit dem Profil starten
das NetFlix 1080p Plugin installieren
das Widevine Plugin installieren
Netflix als Startseite setzen
und raus

Jetzt habt Ihr ein Problem: Firefox hat Netflix jetzt als Default Profile gespeichert. Ergo müßt Ihr jetzt wieder den firefox –profilemanager starten und das beheben! Ansonsten ist jeder Firefoxstart ein Alptraum 😉

Nehmen wir an Ihr habt das geschafft, dann braucht Ihr die Konfiguration:

app:“netflix“,“xdotool mousemove 960 540x:x/usr/bin/firefox -P netflix –kiosk –new-instance“

# you need wmctrl, grep, sed and xdotool installed to make this work.

command:“netflix|home“,“NETFLIXHOME“,““
command:“netflix|vorspulen“,“NETFLIXFORWARD“,““
command:“netflix|zurückspulen“,“NETFLIXBACKWARDS“,““
command:“netflix|meine|liste“,“NETFLIXMYLIST“,““
command:“netflix|suche“,“NETFLIXSEARCH“,““
command:“netflix|spiele“,“NETFLIXSEARCH“,““
command:“netflix|ich|will|sehen“,“NETFLIXSEARCH“,““
command:“netflix|zurück“,“NETFLIXRETURN“,““
command:“netflix|pause“,“NETFLIXPAUSE“,““
command:“netflix|abspielen“,“NETFLIXPAUSE“,““
command:“netflix|überspringen“,“NETFLIXSKIPINTRO“,““
command:“netflix|vollbild|an“,“NETFLIXFULLSCREEN“,““
command:“netflix|vollbild|aus“,“NETFLIXFULLSCREEN“,““

# WARNING: THESE VALUES NEED TO BE ADJUSTED TO YOUR PRIVATE BROWSER IN USE!!!
# FULLSCREEN KIOSK MODE

netflix:“offset“,“0″
netflix:“pos_fullscreen_on“,“1873,1020″
netflix:“pos_fullscreen_off“,“1873,1020″
netflix:“pos_mylist“,“560,36″
netflix:“pos_search“,“1728,36″
netflix:“pos_back“,“50,50″
netflix:“pos_play“,“30,1023″
netflix:“pos_backwards“,“116,1023″
netflix:“pos_forward“,“210,1023″
netflix:“pos_start“,“232,36″
netflix:“pos_firstentry“,“170,270″
netflix:“pos_miniplay“,“170,270″
netflix:“pos_emptyspace“,“1222,36″
netflix:“pos_skipintro“,“1764,915″

# PVA Kommandos zur Mauskontrolle

netflix:“windowactivate“,“/usr/share/pva/plugins/files/activatewindow.sh“
netflix:“mousemove“,“/usr/bin/xdotoolx:xmousemovex:xXXXx:xYYY“
netflix:“clickLMB“,“/usr/bin/xdotoolx:xclickx:x1″
netflix:“linefeed“,“/usr/bin/xdotoolx:xkeyx:xLinefeed“
netflix:“escape“,“/usr/bin/xdotoolx:xkeyx:xEscape“
netflix:“type“,“/usr/bin/xdotoolx:xtypex:x<TERM1>“
netflix:“pageup“,“/usr/bin/xdotoolx:xkeyx:xPage_Up“
netflix:“pagedown“,“/usr/bin/xdotoolx:xkeyx:xPage_Down“

Die grün markierten Anweisungen braucht Ihr nicht anpassen, aber die Positionsdaten könnten, je nach Schriftart und Vergrößerungsfaktor im Browser anzupassen sein. Meine gehen von 100% Zoom aus. Wenn Ihr einen 1920×1080 FullHD Monitor habt, dürfte das so passen. Ist Euer Display größer, multipliziert die Werte einfach mit dem richtigen Faktor.

Für alle, die das mit Mathe im Kopf nicht so haben, hier eine Linuxstyle Lösung:

watch -n 0.5 „xdotool getmouselocation“

Einfach in einem eigenen Fenster im Vordergrund laufen lassen, Problem gelöst 😉

Jetzt schiebt Ihr noch das Plugin, das Fensteraktivierungs-Script in den Pluginordner, aktualisiert im Server Ordner die PVA Hauptklasse und startet PVA neu : Fertig. Kompilieren aller Komponenten nicht vergessen. Das sieht dann so aus:
(dieser Abschnitt wurde aktualisiert, da sich ein Fehler eingeschlichen hatte)

$ ls -ls /usr/share/pva/plugins/files/
insgesamt 68
4 -rwxr-xr-x. 1 root root 112 9. Mär 13:00 activatewindow.sh
8 -rw-r–r–. 1 root root 4828 9. Mär 13:14 DiskFree.class
8 -rw-r–r–. 1 root root 4484 9. Mär 13:14 LoadTask.class
8 -rw-r–r–. 1 root root 7607 9. Mär 13:14 Netflix.class
4 -rw-r–r–. 1 root root 1891 9. Mär 13:14 ‚Netflix$Position.class‘
4 -rw-r–r–. 1 root root 3474 9. Mär 13:14 SpeechGuard.class

Achtet auf die Zugriffsrechte des Scripts und alles wird gut.

Carola netflix home
Carola netflix vorspulen
Carola netflix zurückspulen
Carola netflix meine liste
Carola netflix suche
Carola netflix spiele
Carola netflix zurück
Carola netflix pause
Carola netflix abspielen
Carola netflix überspringen
Carola netflix vollbild an
Carola netflix vollbild aus

Die blauen sind Synonyme weil die Netflixbuttons nur einmal vorhanden sind. Ihr könnt also mit „Pause“ auch wieder das Video starten. Vor- und Zurückspulen ist nur drin, weil die Buttons da waren, nicht weil 10 Sekunden besonders hilfreich wären 😉 „Überspringen“ bezieht sich auf die Intro bei Serien. Wenn Ihr das Timing vergeigt, hält das Video an, weil die Netflix UI das so vorsieht 🙂

Einige Befehle sind nur dann wirksam, wenn ein Video läuft. Damit Carola das weiß, muß sie es selbst gestartet haben. Damit sie weiß, daß das Playback zu ende ist, muß sie es beenden. Also gewöhnt Euch schonmal an diese Ansagen:

Carola Netflix zurück
Carola Netflix suche <hier Film einsetzen>

Falls das Steuermodul mal nicht mehr mitkommt mit Euren manuellen Klicks, einfach Carola neu starten 😉

Update:

Ich hatte gestern abend leider vergessen Euch mitzuteilen, daß PVA.java auch aktualisiert werden muß. Das wurde oben geändert.