- mpv ist ein freier Open-Source-Mediaplayer mit Schwerpunkt auf der Kommandozeile, der zahlreiche Mediendateiformate, Audio- und Video-Codecs sowie Untertitelformate unterstützt
- Dank leistungsfähiger Scripting-Funktionen und einer Sammlung von Nutzerskripten lässt sich der Standardplayer leicht nach eigenen Vorstellungen erweitern
- Trotz seines minimalistischen Designs gibt es keine separate GUI, aber einen kleinen On-Screen-Controller für grundlegende Bedienung direkt über dem Video
- Mit hochwertiger Videoausgabe auf Basis von OpenGL, Vulkan und D3D11 sowie Unterstützung für Hardware-Decoding-APIs lässt sich die Wiedergabequalität in unterschiedlichen Umgebungen anpassen
- Eine von Anfang an für die Library-Integration ausgelegte C API ermöglicht es, mpv in andere Anwendungen einzubetten
Kommandozeilenorientierter Mediaplayer
- mpv ist ein freier Mediaplayer für die Nutzung über die Kommandozeile
- Unterstützt verschiedene Mediendateiformate, Audio- und Video-Codecs sowie Untertitelformate
Scripting und Bedienung
- Mit Scripting lässt sich das Verhalten des Players umfassend erweitern
- Nutzerskripte sind im User Scripts im Wiki gesammelt
- mpv verfolgt einen minimalistischen Ansatz und bietet keine separate GUI
- Für grundlegende Bedienung kann ein kleiner On-Screen-Controller genutzt werden, der über dem Video angezeigt wird
Videoausgabe und Decoding
- Bietet Videoausgabe auf Basis von OpenGL, Vulkan und D3D11
- Enthält auch Wiedergabefunktionen für Video-Enthusiasten
- Video-Scaling auf Basis hochwertiger Algorithmen
- Farbmanagement
- Frame-Timing
- Interpolation
- HDR
- Auf den meisten Plattformen können mehrere Hardware-Decoding-APIs genutzt werden
- Hardware-Decoding kann bei Bedarf während der Ausführung aktiviert werden
Anwendungsintegration und Entwicklungsstand
- mpv wurde von Anfang an mit einer C API entwickelt, damit es sich leicht in andere Anwendungen integrieren lässt
- Die API befindet sich in client.h
- Das Projekt wird aktiv weiterentwickelt, mit Fokus auf Code-Refactoring und Aufräumen sowie neue Funktionen
- Feature Requests oder Patches können über die mpv GitHub issues eingereicht werden
Verwandte Ressourcen
- Installation: Installationsanleitung
- Source Code Repository: Quellcode-Repository
1 Kommentare
Hacker-News-Kommentare
mpv ist ein großartiger Media-Player. Ziemlich minimalistisch, mit guter Performance, und er erledigt genau das, was er soll.
Es gibt auch einen großartigen Commit, in dem der Autor seine Wut über Locales auslässt: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... – lesenswert und ziemlich lustig.
Die Standardbibliotheken vieler Sprachen wie Zig, Go und Rust sind der C-Standardbibliothek oder der POSIX-API weit voraus. Allein das ist schon Grund genug, sie zu verwenden.
Vor 25 Jahren schrieb Spolsky „everything you wanted to know about Unicode and character sets“ – das kann selbst für Leute nützlich sein, die nur in einer Welt nach Unicode/UTF gelebt haben.
errnowäre genauso kaputt wie die C-Locale-API, kam der Hinweis, dass es dafür tatsächlich Beispiele gibt: Zeitfunktionen wielocaltime,localtime_r,tzset.Das liegt zwar thematisch nahe an Locales, aber Zeitzonen sind ebenfalls globaler Zustand, sodass es in portablem, multithreaded POSIX-C mit nur den Standard-APIs unmöglich ist, die Zeit einer anderen Zeitzone zu bekommen.
wchar_tsind beide kaputte Legacy-Zombies im Hirntod. Wenn im C/POSIX-Standardkomitee kompetente Leute gesessen hätten, wären sie längst deprecated oder entfernt worden.gets()haben sie ja auch entfernt. Ich werde einen langen Text schreiben, um diesen emotionalen Ausbruch zu rechtfertigen, der für Unwissende beleidigend wirken könnte. Wer mit scharfer Sprache ein Problem hat, soll das hier als religiösen Text betrachten.“Wirklich legendär.
Ich habe vor ein paar Jahren angefangen, es unter Linux zu nutzen, und inzwischen ist es auf all meinen Geräten installiert, sogar auf meinem Android-Tablet. Perfekt. Minimale Standardwerte, sinnvolle Einstellungen, schnell, und es funktioniert einfach.
Sogar native Wiedergabe über SSH ist möglich, was großartig ist:
mpv sftp://mit@nyx/home/mit/Work/merged.mp4Kürzlich brauchte ich einen Shortcut zum Drehen eines Videos; bei anderen Playern schien das nicht leicht möglich zu sein, bei mpv musste ich nur
r cycle_values video-rotate "90" "180" "270" "0"ininput.confeintragen.mpvUnter Linux sollte man nicht vergessen, Hardwarebeschleunigung zu aktivieren, indem man
hwdec=autozumpv.confhinzufügt. Funktioniert mit AMD/Intel/NVIDIA.https://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next,gpu-api=vulkan,hwdec=vulkan,gpu-context=waylandvkWenn Vulkan-Video nicht funktioniert, kann man
hwdec=vulkanaufhwdec=vaapiändern.pacmaninstalliert und ein 4K-Video gestartet; sofort sprang der CPU-Lüfter an, und intopsah ich, dass mehrere Kerne genutzt wurden. Während ich weiter durch diesen HN-Thread scrollte, erfuhr ich vonhwdec=auto.Als jemand, der von mplayer und VLC kommt, stellt sich sofort die Frage: Welchen Trade-off nehmen die Maintainer in Kauf, wenn sie das nicht zum Standard machen?
Dieses Projekt hat eine sehr alte Abstammungslinie und war früher als mplayer bekannt. Es gibt 500.000 Commits, die bis ins Jahr 2001 zurückreichen – und das sogar erst ab dem Zeitpunkt, nachdem das CVS-Repository in Subversion konvertiert wurde.
Zusammen mit streamlink und mpv auf einem lüfterlosen Minix z100 mit Ubuntu war es fast die perfekte Umgebung, um die Olympischen Spiele zu schauen.
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
Das mag albern klingen, aber für mich ist die Kernfunktion, dass mehrere Untertitel gleichzeitig angezeigt werden können. Track, Offset, Position, Größe usw. lassen sich mit ein paar Shortcuts leicht einstellen.
Kein Streaming-Dienst bietet das an und Untertitelsprachen, die aufgrund des Standorts des Nutzers als „nicht relevant“ eingestuft werden, werden aktiv versteckt. Solche Dienste sind nur schwer zu respektieren.
--sid1=und--sid2=startet, funktioniert es schon ziemlich gut.Mein Partner und ich sind beide keine englischen Muttersprachler, und unsere Muttersprachen sind zudem unterschiedlich. Ich komme mit Englisch ziemlich gut zurecht, aber manche Dialekte sind schwierig, und wenn die Tonspur laut oder unklar ist, verpasse ich manchmal Wörter, daher bevorzuge ich englische Untertitel. Mein Partner bevorzugt Untertitel in seiner Muttersprache.
Wenn mehrere Untertitel angezeigt werden können, bekommen wir beide genau das Seherlebnis, das wir wollen, und das ist den etwas größeren Platzbedarf auf dem Bildschirm absolut wert.
Ich habe dazu etwas geschrieben: https://www.baeldung.com/linux/mpv-subtitles-automatic. Etwas schade fand ich allerdings, dass die Dokumentation zu den unterstützten Untertitelformaten dürftig war und ich in den ffmpeg-Code schauen musste, um die tatsächlich unterstützten Formate zu prüfen.
Zusätzlich sind https://subdl.com/ und https://github.com/alexanderwink/subdl gute Ressourcen, um Untertitel über die Kommandozeile zu finden und herunterzuladen.
mpv hat bei mir immer gut funktioniert und nahezu alles problemlos abgespielt, was man ihm gegeben hat.
Vielleicht ist das heute anders, aber als ich das Projekt vor ein paar Jahren zum ersten Mal kennengelernt habe, war das, was es von anderen Playern abhob, das Gefühl, dass Korrektheit und präzise Wiedergabe sehr ernst genommen werden. Es gab zum Beispiel Dateien, die in VLC merkwürdige Probleme wie leicht falsche Farbwiedergabe zeigten, während sie in mpv perfekt abgespielt wurden.
Warum das so ist, weiß ich allerdings nicht genau, denn ich glaube, beide stützen sich bei vielen Codecs im Großen und Ganzen auf dieselben Bibliotheken.
mpv ist großartig. Unabhängig von der Reihenfolge empfehlenswert sind: Seeds of Might/JySzEs Standard-
mpv.conf, uosc als funktionsreiche und dennoch minimalistische UI, der schnelle Thumbnailer thumbfast für uosc oder andere benutzerdefinierte UIs sowie Eisa01s SmartSkip, das auf Audio basiert, um Openings usw. zu überspringen.[1] Windows: https://gist.github.com/JySzE/db4149cad726b3b6955dca8d47a197..., macOS: https://gist.github.com/JySzE/34ee131da3974811a9469e1e3b7d4d...
[2] https://github.com/tomasklaen/uosc
[3] https://github.com/po5/thumbfast
[4] https://github.com/Eisa01/mpv-scripts#smartskip
Um Openings oder Endcredits zuverlässig zu finden, braucht man eine nichtlokale Analyse. Im Grunde muss man Audiosegmente finden, die über mehrere Episoden einer Staffel oder eines ganzen Werks hinweg gemeinsam auftreten.
Ich habe ein CLI-Tool gebaut, das das kann, aber es ist ehrlich gesagt nicht wirklich „fertig“ und wird es vermutlich auch nie sein. Mein ursprüngliches Ziel war die Entwicklung eines Jellyfin-Plugins, aber später habe ich herausgefunden, dass es bereits ein solches Plugin gibt.
https://github.com/aksiksi/needle
Der beste Media-Player überhaupt. Die minimalistische UI, die Nutzung der Hardwarebeschleunigung und die Tatsache, dass er einfach Videos abspielt, sind großartig.
Weil er weiterhin so gut ist, ist das vermutlich einer der Gründe, warum ich wohl mein Leben lang weiter piratisieren werde. Streaming-Dienste geben Millionen für ihre Player aus und kommen trotzdem nicht einmal in die Nähe dieses Niveaus.
MPV verfügt über vielseitige Skripte. Man kann zum Beispiel das gerade angesehene Video schneiden oder zuschneiden[1].
Man kann auch Funktionen, die ich bei anderen Playern noch nie gesehen habe, auf Tastenkürzel legen. Manchmal verwende ich
n vf toggle normalize=smoothing=100in derinput.conf, um Helligkeit und Farben der aktuellen Szene zu normalisieren, aber mit Hardware-Decoding funktioniert das möglicherweise nicht.Die Videodrehung konfiguriert man zum Beispiel mit
Ctrl+r no-osd cycle-values video-rotate "90" "180" "270" "0".[1] <https://github.com/occivink/mpv-scripts>
[1]: https://gist.github.com/madeindjs/f33225cf4d8fdc9f61e0fe3ebe...
Was viele nicht wissen: mpv kann nicht nur YouTube-Videos streamen, sondern auch auf der CLI mit
mpv ytdl://ytsearch:queryYouTube durchsuchen.Außerdem kann man mit ASCII, sixel und dem kitty image protocol Videos direkt im Terminal abspielen, wobei das kitty image protocol qualitativ mit Abstand am besten ist.
Meine bisherige Lieblingsfunktion in mpv ist, dass sich CRT-Shader in Echtzeit auf Inhalte anwenden lassen. Dabei wird HD-Video zunächst korrekt auf einen echten 240p-Buffer herunterskaliert, danach übernimmt der Shader auch das Hochskalieren auf die Bildschirmauflösung.
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders