Browserbastelei – Mozplugger
Wer kennt das nicht, drei eingebettete Youtubevideos auf einer Seite, schon will Firefox am liebsten aus dem Fenster springen, außerdem nervt der Youtube Player eh wie Hölle, auch die html5 Variante, der Javascript PDF Reader ist noch schlimmer, und so weiter. Ich möchte hier nur für Leute, die es nicht kennen, kurz auf ein nettes, kleines Programm hinweisen, mit dem man sich da ganz nett etwas zusammenmurksen und externe Programme wie mpv einbetten kann. So kann das dann zum Beispiel aussehen:
Das Programm heißt
Mozplugger. Kurz und schmerzlos die Anleitung für Faule (die ein aktuelles Mozplugger, Version 2, haben, also sorry, Ubuntu/Debian Leute, eure Distribution ist schafft es nicht, ultra neue zwei Jahre alte Releases in den Repos zu haben
):
Installiert sein muss mpv. Und natürlich Mozplugger. Dann:
Code:
mkdir ~/.config/mozplugger
cd ~/.config/mozplugger
wget "http://pastebin.com/raw.php?i=7ypEWyaC"
mv "raw.php?i=7ypEWyaC" mozpluggerrc
mozplugger-update
Was genau nun in den älteren Mozpluggerversionen nicht funktioniert, weiß ich nicht, nur dass es kein mozplugger-update gibt, das einem im Zweifelsfall schöne Fehlermeldungen ausspuckt, und dass [[mpv]] nicht funktioniert, also man alles in einem Plugin kombinieren muss, die config Datei liegt glaube ich auch woanders.
Browser neu starten, fertig. Funktioniert afaik mit allem, außer natürlich Chromium/Chrome, weil dort mit Version 35 NPAPI rausgerupft wurde, ich konzentriere mich hier aber auf Firefox. Wenn es geklappt hat, sollte die Seite
nun mpv listen.
Weitere Dinge, die man nun tun kann:
Eine Cache-Datei für mpv
Einer der Hauptgründe, warum Youtube mit mpv so viel Spaß macht. Benötigt mindestens mpv 0.4
Weil die Cache Datei immer überschrieben wird und man so Probleme hätte, mehr als einen Tab auf Youtube offen zu haben, benenne ich die Datei mit der Variable $hexwindow von Mozplugger. Wird im Wesentlichen, da der Anfang abgeschnitten wird, beginnend bei 00001 durchnummeriert und beim nächsten Browserstart auch wieder von dort beginnend überschrieben, deshalb wächst das Verzeichnis längst nicht so sehr, wie man das erwarten würde. (5GB bei mir derzeit)
Für die Nutzung einer Cache Datei hängt man folgendes ans mpv Kommando an
Code:
--cache-file="/mnt/extra2/mpv_cache/$(echo $hexwindow | sed 's/^....//')"
Die Dateien werden damit in den Ordner /mnt/extra2/mpv_cache/ geschrieben. Welcher natürlich existieren sollte.
So sieht dann bei mir die ganze Zeile in der mozpluggerrc aus:
Code:
define(MP_CMD,[mpv --cache-file="/mnt/extra2/mpv_cache/$(echo $hexwindow | sed 's/^....//')" --title="mpv - embedded" $1 </dev/null])
Die Dateien, die mpv in dem Ordner ablegt, sind abspielbar, wer also ein Video komplett angeschaut hat, hat es auch gleich komplett auf der Platte dort rumliegen. Bis es überschrieben wird.
Evince ebenfalls einbetten:
Da es für Evince deutlich weniger Möglichkeiten gibt, es interessant einzubetten, spare ich mir hier die Definierung eines Kommandos und schreibe den Kram gleich unten hin:
Code:
[[evince]]
application/pdf:pdf:PDF file
application/x-pdf:pdf:PDF file
text/pdf: pdf:PDFfile
text/x-pdf:pdf:PDF file
application/x-postscript: ps: PostScript file
application/postscript: ps: PostScript file
repeat stream noisy swallow(evince) fill: evince "$file"
Einfach unten an die mozpluggerrc anhängen.
Damit evince dann auch geladen wird beim Öffnen von PDFs, muss man noch den unsäglichen pdfjs von Firefox deaktivieren, dazu reicht es aus, in about:config pdfjs.disabled auf true zu setzen. Selbes gilt übrigens für Videos, die Firefox schon von sich aus im html5 Player abspielen würde, für webm zum Beispiel media.webm.enabled, damit funktionieren manche Videoseiten dann aber gar nicht mehr, deshalb habe ich das gelassen.
Eventuell muss man, wenn etwas nicht funktioniert, noch bei den Einstellungen für Anwendungen etwas rumwursten, auf alle Fälle sollte es am Ende so oder so ähnlich aussehen für die Formate, die man in mpv geöffnet haben will:
Und wie kommt das alles nun auf die Youtube Seite? Das ist glücklicherweise der einfachste Teil. Greasemonkey drauf und folgendes Script nutzen:
http://isebaro.com/viewtube/?ln=en
Um Embeds schön und effektiv loszuwerden, empfehle ich noch diese beiden Scripte:
http://isebaro.com/linktube/?ln=en
https://greasyfork.org/scripts/413-youtube-link-title/
Falls sich wer wundert, dass das „GUI“ bei mir anders aussieht am Screenshot, das ist
recht neu und hat mir einfach gut gefallen.
Probleme:
Vollbildmodus lässt sich mit mpv so leider nicht nutzen, da müsste man Mozplugger irgendwie mpv freigeben lassen. Ist aber auch nicht weiter schlimm, da man dafür ja meist maximale Qualität = DASH Playback haben möchte, und das habe ich mit mozplugger eh nicht zum Laufen bekommen.
(Nur 360p und 720p stehen zur Verfügung, 480p und 1080p sind DASH only)
Als Workaround dafür nutze ich ein kleines
Bash Script, das ich in Firefox mit dem Addon
Open With ziemlich praktisch einbinde.
Lädt 1GB vom Video in den Arbeitsspeicher, wem das zu viel ist, einfach ändern. (cache_settings= …) Lässt sich auch mit --cache-file nutzen, aber eben nicht mit den DASH Formaten, weil bei denen die Adiodatei separat ist. Mpv hätte neuerdings auch eine Option, --cache-file=TMP zu setzen, aber das schreibt dann auf /tmp und das ist bei mir auch im RAM, also kümmert es mich nicht. Außerdem gibt es bei DASH Playback noch das Problem, dass die Länge des Videos unbekannt ist.
Mpv selbst kann auch viele lustige Dinge, mit denen man das Ganze noch weiter optimieren kann, wenn man denn will, zum Beispiel kann man sehr leicht schöne Scripte dafür schreiben, wie dieses hier zum schnellen erstellen kleiner webm Ausschnitte:
http://webmup.com/j4bDn/
https://gist.github.com/Zehkul/25ea7ae77b30af959be0
Absolut wackeliges, zusammengebasteltes Konstrukt, aber es ist durchaus amüsant und praktisch.