- mpv est un lecteur multimédia libre et open source centré sur la ligne de commande, prenant en charge de nombreux formats de fichiers multimédias, codecs audio et vidéo, ainsi que formats de sous-titres
- Grâce à de puissantes fonctions de script et à une collection de scripts utilisateur, il est facile d’étendre le lecteur de base selon ses besoins
- Fidèle à une conception minimaliste, il ne propose pas de GUI distincte, mais fournit un petit contrôleur à l’écran permettant les manipulations de base par-dessus la vidéo
- Avec une sortie vidéo de haute qualité basée sur OpenGL, Vulkan et D3D11, ainsi que la prise en charge des API de décodage matériel, il est possible d’ajuster la qualité de lecture dans divers environnements
- Il dispose d’une API C pensée dès le départ pour l’intégration en bibliothèque, ce qui permet d’utiliser mpv au sein d’autres applications
Lecteur multimédia centré sur la ligne de commande
- mpv est un lecteur multimédia libre qui s’utilise en ligne de commande
- Il prend en charge divers formats de fichiers multimédias, codecs audio et vidéo, et formats de sous-titres
Script et mode d’utilisation
- Les fonctions de script permettent d’étendre largement le comportement du lecteur
- Les scripts utilisateur sont rassemblés dans User Scripts du wiki
- Dans une démarche minimaliste, aucune GUI distincte n’est fournie
- Pour les manipulations de base, on peut utiliser un petit contrôleur à l’écran affiché par-dessus la vidéo
Sortie vidéo et décodage
- Il propose une sortie vidéo basée sur OpenGL, Vulkan et D3D11
- Il inclut aussi des fonctions de lecture destinées aux passionnés de vidéo
- Mise à l’échelle vidéo reposant sur des algorithmes de haute qualité
- Gestion des couleurs
- Synchronisation des images
- Interpolation
- HDR
- Sur la plupart des plateformes, plusieurs API de décodage matériel peuvent être utilisées
- Le décodage matériel peut être activé à l’exécution lorsqu’il est nécessaire
Intégration applicative et état du développement
- mpv a conçu dès le départ une API C afin de pouvoir être facilement intégré dans d’autres applications
- L’API se trouve dans client.h
- Le projet est activement développé, avec un accent mis sur le refactoring et le nettoyage du code, ainsi que sur l’ajout de fonctionnalités
- Les demandes de fonctionnalités ou les patchs peuvent être soumis via les issues GitHub de mpv
Ressources associées
- Installation : guide d’installation
- Source Code Repository : dépôt du code source
1 commentaires
Avis sur Hacker News
mpv est un excellent lecteur multimédia. Il est assez minimaliste, performant, et fait correctement ce qu’il doit faire.
Il y a aussi un commit formidable où l’auteur pique une colère à propos des locales : https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... Ça vaut le coup de le lire pour rire un peu.
Les bibliothèques standard de Zig, Go, Rust et d’autres langages ont une énorme avance sur la bibliothèque standard C ou les API POSIX. Rien que cela suffit à justifier leur usage.
Il y a 25 ans, Spolsky a écrit un article intitulé « everything you wanted to know about Unicode and character sets », qui peut encore être utile même à ceux qui n’ont connu que le monde post-Unicode/UTF.
errnoait été traité comme l’API de locale cassée du C, il existe en fait un exemple où c’est arrivé : les fonctions de temps commelocaltime,localtime_rettzset.Comme elles dépendent des locales, cela reste proche du sujet, mais les fuseaux horaires sont eux aussi un état global, ce qui rend impossible, en code C multithread portable POSIX, d’obtenir l’heure dans un autre fuseau horaire en utilisant uniquement les API standard.
wchar_tsont tous deux des héritages cassés et décérébrés. S’il y avait eu des gens compétents dans les comités de normalisation C/POSIX, ils auraient été abandonnés ou supprimés depuis longtemps.gets()a bien été supprimé, non ? Pour justifier cette explosion émotionnelle, qui peut paraître insultante à ceux qui ne savent pas, je vais écrire un long texte. Si les formulations virulentes vous mettent mal à l’aise, considérez ceci comme un texte religieux. »Vraiment légendaire.
J’ai commencé à l’utiliser sur Linux il y a quelques années, et maintenant il est installé sur tous mes appareils, jusqu’à ma tablette Android. Il est parfait. Valeurs par défaut minimalistes, configuration raisonnable, rapide, et il fonctionne tout simplement.
Il permet même la lecture native via SSH, ce qui est génial :
mpv sftp://mit@nyx/home/mit/Work/merged.mp4Récemment, j’avais besoin d’un raccourci pour faire pivoter une vidéo ; ça ne semblait pas facile avec d’autres lecteurs, alors qu’avec mpv il suffisait d’ajouter
r cycle_values video-rotate "90" "180" "270" "0"dansinput.conf.mpvSous Linux, il ne faut pas oublier d’ajouter
hwdec=autoàmpv.confpour activer l’accélération matérielle. Cela fonctionne avec AMD/Intel/NVIDIA.https://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next,gpu-api=vulkan,hwdec=vulkan,gpu-context=waylandvkSi la vidéo Vulkan ne fonctionne pas, on peut remplacer
hwdec=vulkanparhwdec=vaapi.pacmanet de lancer une vidéo 4K : le ventilateur du CPU s’est immédiatement mis en route, ettopmontrait plusieurs cœurs utilisés. En continuant à faire défiler ce fil HN, j’ai découverthwdec=auto.En tant qu’utilisateur de mplayer et de VLC, la question qui me vient immédiatement est : « quels compromis les mainteneurs acceptent-ils en ne mettant pas ça par défaut ? »
Ce projet possède une très longue lignée : il était autrefois connu sous le nom de mplayer. Il compte 500 000 commits remontant jusqu’en 2001, et encore, c’est à partir du moment où le dépôt CVS a été converti en Subversion.
Utiliser streamlink avec mpv sur un Minix z100 sans ventilateur sous Ubuntu a donné une expérience presque parfaite pour regarder les Jeux olympiques.
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
Cela peut paraître idiot, mais pour moi, la fonctionnalité essentielle est de pouvoir afficher plusieurs sous-titres simultanément. On peut régler facilement les pistes, les décalages, la position, la taille, etc. avec quelques raccourcis clavier.
Aucun service de streaming ne propose ça, et ils cachent activement les langues de sous-titres qu’ils jugent « non pertinentes » selon l’emplacement de l’utilisateur. Difficile de respecter ce genre de service.
--sid1=et--sid2=marche déjà très bien.Ma compagne et moi ne sommes ni l’un ni l’autre anglophones natifs, et nous n’avons pas non plus la même langue maternelle. Je suis plutôt à l’aise en anglais, mais certains dialectes me posent problème, et quand l’audio est bruyant il m’arrive de manquer des mots, donc je préfère les sous-titres anglais. Ma compagne préfère les sous-titres dans sa langue maternelle.
Pouvoir afficher plusieurs sous-titres nous permet à tous les deux d’avoir l’expérience de visionnage que nous voulons, au prix d’un peu d’espace à l’écran, ce qui en vaut largement la peine.
J’ai écrit un article à ce sujet : https://www.baeldung.com/linux/mpv-subtitles-automatic. En revanche, j’ai trouvé dommage que la documentation sur les formats de sous-titres pris en charge soit insuffisante, et j’ai dû aller regarder le code de ffmpeg pour vérifier les formats réellement supportés.
En plus, https://subdl.com/ et https://github.com/alexanderwink/subdl sont de bonnes ressources pour chercher et télécharger des sous-titres en ligne de commande.
mpv a toujours bien fonctionné, et a avalé sans difficulté presque tout ce qu’on lui lançait.
Les choses ont peut-être changé aujourd’hui, mais quand je l’ai découvert il y a quelques années, ce qui distinguait ce projet des autres lecteurs était l’impression qu’il accordait beaucoup d’importance à l’exactitude et à une lecture fidèle. Par exemple, il m’est arrivé que des fichiers présentant dans VLC des problèmes bizarres, comme une reproduction des couleurs légèrement étrange, soient lus parfaitement dans mpv.
Je ne sais toutefois pas vraiment pourquoi, car je pensais que les deux s’appuyaient globalement sur les mêmes bibliothèques pour beaucoup de codecs.
mpv est excellent. Dans le désordre, voici quelques recommandations : le
mpv.confde base de Seeds of Might/JySzE, uosc, une UI riche en fonctionnalités tout en restant minimale, thumbfast, un générateur rapide de vignettes à utiliser avec uosc ou d’autres UI personnalisées, et SmartSkip d’Eisa01, qui permet de sauter les openings et autres passages sur la base de l’audio.[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
Pour repérer de manière fiable un opening ou un générique de fin, il faut une analyse non locale. En gros, il faut trouver les segments audio communs entre les épisodes d’une saison, ou d’une œuvre complète.
J’ai créé un outil CLI capable de faire ça, mais il n’est pas vraiment « terminé » et ne le sera sans doute jamais. Mon objectif initial était de développer un plugin Jellyfin, puis j’ai découvert plus tard qu’il en existait déjà un.
https://github.com/aksiksi/needle
C’est le meilleur lecteur multimédia qui existe. J’aime son excellente UI minimaliste, son utilisation de l’accélération matérielle, et le fait qu’il se contente de lire les vidéos.
Le fait qu’il reste aussi bon est probablement l’une des raisons pour lesquelles je continuerai à pirater toute ma vie. Les services de streaming dépensent des millions de dollars dans leurs lecteurs sans arriver à s’approcher de ce niveau.
MPV dispose de scripts très polyvalents. Par exemple, on peut découper ou recadrer la vidéo que l’on regarde[1]
On peut aussi associer à des raccourcis clavier des fonctions que je n’ai jamais vues dans d’autres lecteurs. Il m’arrive d’ajouter
n vf toggle normalize=smoothing=100dansinput.confpour normaliser la luminosité et les couleurs de la scène en cours, mais cela peut ne pas fonctionner avec le décodage matérielLa rotation de la vidéo se configure par exemple ainsi :
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...
Un point peu connu : mpv peut non seulement streamer des vidéos YouTube, mais aussi effectuer des recherches YouTube depuis le CLI avec
mpv ytdl://ytsearch:queryIl peut également lire des vidéos directement dans le terminal en utilisant les protocoles d’image ASCII, sixel et kitty ; parmi eux, le protocole d’image kitty offre une qualité nettement supérieure
Jusqu’ici, ma fonctionnalité préférée de mpv est la possibilité d’appliquer en temps réel des shaders CRT au contenu. Cette méthode commence par downscaler correctement une vidéo HD vers un véritable buffer 240p, puis le shader se charge aussi de l’upscaling à la résolution de l’écran
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders