- mpv es un reproductor multimedia libre y open source centrado en la línea de comandos, compatible con varios formatos de archivos multimedia, códecs de audio y video, y formatos de subtítulos
- Gracias a sus potentes funciones de scripting y a una colección de scripts de usuarios, es fácil ampliar el reproductor base según tus necesidades
- Mantiene un diseño minimalista y no cuenta con una GUI separada, pero ofrece un pequeño controlador en pantalla para realizar operaciones básicas sobre el video
- Con salida de video de alta calidad basada en OpenGL, Vulkan y D3D11, además de soporte para APIs de decodificación por hardware, permite ajustar la calidad de reproducción en distintos entornos
- Cuenta con una API en C diseñada desde el inicio para la integración como biblioteca, lo que permite incorporar mpv dentro de otras aplicaciones
Reproductor multimedia centrado en la línea de comandos
- mpv es un reproductor multimedia libre que se usa desde la línea de comandos
- Es compatible con diversos formatos de archivos multimedia, códecs de audio y video, y formatos de subtítulos
Scripting y formas de control
- Sus funciones de scripting permiten ampliar ampliamente el comportamiento del reproductor
- Los scripts de usuarios están reunidos en User Scripts de la wiki
- Apunta al minimalismo, por lo que no ofrece una GUI separada
- Para los controles básicos se puede usar un pequeño controlador en pantalla que aparece sobre el video
Salida de video y decodificación
- Ofrece salida de video basada en OpenGL, Vulkan y D3D11
- También incluye funciones de reproducción para entusiastas del video
- Escalado de video basado en algoritmos de alta calidad
- Gestión de color
- Temporización de fotogramas
- Interpolación
- HDR
- En la mayoría de las plataformas se pueden aprovechar varias APIs de decodificación por hardware
- La decodificación por hardware puede activarse cuando sea necesario durante la ejecución
Integración en aplicaciones y estado del desarrollo
- mpv diseñó desde el inicio una API en C para facilitar su integración en otras aplicaciones
- La API está en client.h
- El proyecto está en desarrollo activo, con foco en refactorización y limpieza del código, además de la incorporación de funciones
- Las solicitudes de funciones o parches pueden enviarse mediante issues de GitHub de mpv
Recursos relacionados
- Installation: guía de instalación
- Source Code Repository: repositorio de código fuente
1 comentarios
Opiniones de Hacker News
mpv es un excelente reproductor multimedia. Es bastante minimalista, tiene buen rendimiento y hace bien lo que tiene que hacer.
También hay un commit genial en el que el autor descarga su enojo contra el locale: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... Vale la pena leerlo para reírse un rato.
Las bibliotecas estándar de varios lenguajes como Zig, Go y Rust están muy por delante de la biblioteca estándar de C o de las API POSIX. Solo eso ya es motivo suficiente para usarlos.
Hace 25 años, Spolsky escribió un artículo llamado “everything you wanted to know about Unicode and character sets”, y también puede ser útil para quienes solo han vivido en el mundo posterior a Unicode/UTF.
errnohubieran hecho algo así” como pasa con lo roto que está el API de locales de C, en realidad hay un ejemplo donde sí ocurrió. Son las funciones de tiempo comolocaltime,localtime_rytzset.Como dependen del locale, están en una zona cercana, pero la zona horaria también es estado global, así que en código C multihilo portable POSIX es imposible obtener la hora en otra zona horaria usando solo las API estándar.
wchar_tson ambos legados rotos y muertos cerebralmente. Si hubiera habido alguien competente en los comités de estándares C/POSIX, hace mucho que se habrían descartado o eliminado. Después de todo, eliminarongets(). Voy a escribir un texto largo para justificar este estallido emocional, que podría resultar ofensivo para quien no sepa del tema. Si las expresiones fuertes te incomodan, considéralo literatura religiosa.”Verdaderamente legendario.
Empecé a usarlo en Linux hace unos años y ahora lo tengo instalado en todos mis dispositivos, incluso en una tablet Android. Es perfecto. Valores predeterminados minimalistas, configuración razonable, rápido, simplemente funciona bien.
Incluso puede reproducir de forma nativa a través de SSH, lo cual es increíble:
mpv sftp://mit@nyx/home/mit/Work/merged.mp4Hace poco necesitaba un atajo para rotar videos; en otros reproductores no parecía ser fácil, y en mpv bastó con poner
r cycle_values video-rotate "90" "180" "270" "0"eninput.conf.mpvSi usas Linux, no olvides agregar
hwdec=autoampv.confpara activar la aceleración por hardware. Funciona con AMD/Intel/NVIDIA.https://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next,gpu-api=vulkan,hwdec=vulkan,gpu-context=waylandvkSi Vulkan Video no funciona, se puede cambiar
hwdec=vulkanporhwdec=vaapi.pacmany probé reproducir un video 4K; el ventilador del CPU empezó a girar de inmediato y entopse veía que se estaban usando varios núcleos. Seguí bajando en este hilo de HN y me enteré dehwdec=auto.Como usuario de mplayer y VLC, la pregunta inmediata que me surge es: “¿qué trade-off estarán aceptando los mantenedores al no poner esto como valor predeterminado?”
Este proyecto tiene un linaje muy antiguo; antes se conocía como mplayer. Tiene 500 mil commits que se remontan hasta 2001, y eso contando desde después de que el repositorio CVS se convirtiera a Subversion.
Usar streamlink junto con mpv en una Minix z100 sin ventilador con Ubuntu fue una experiencia casi perfecta para ver los Juegos Olímpicos.
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
Puede sonar tonto, pero personalmente la función clave es poder mostrar varios subtítulos al mismo tiempo. Se pueden configurar fácilmente pistas, desplazamientos, posición, tamaño, etc., con unos cuantos atajos de teclado.
Ningún servicio de streaming ofrece esto, y además ocultan activamente los idiomas de subtítulos que consideran “irrelevantes” para la ubicación del usuario. Cuesta respetar a servicios así.
--sid1=y--sid2=funciona bastante bien.Mi pareja y yo no somos hablantes nativos de inglés, y nuestras lenguas maternas tampoco son la misma. Yo me siento bastante cómodo con el inglés, pero algunos dialectos me cuestan y, si el audio es ruidoso, a veces se me escapan palabras, así que prefiero subtítulos en inglés. A mi pareja le gustan los subtítulos en su lengua materna.
Poder mostrar varios subtítulos nos permite a ambos tener la experiencia de visualización que queremos, a cambio de usar un poco de espacio en pantalla, y vale totalmente la pena.
Escribí sobre esto: https://www.baeldung.com/linux/mpv-subtitles-automatic. Eso sí, me pareció una lástima que faltara documentación sobre los formatos de subtítulos soportados, y para comprobar los formatos realmente soportados tuve que mirar el código de ffmpeg.
Además, https://subdl.com/ y https://github.com/alexanderwink/subdl son buenos recursos para buscar y descargar subtítulos desde la línea de comandos.
mpv siempre funcionó bien y manejó fácilmente casi cualquier cosa que le tiraran.
Puede que ahora sea distinto, pero cuando lo conocí hace unos años, lo que distinguía a este proyecto de otros reproductores era la sensación de que daba mucha importancia a la exactitud y a la reproducción fiel. Por ejemplo, algunos archivos que en VLC mostraban problemas raros, como una reproducción de color algo extraña, en mpv se reproducían perfectamente.
Aunque no sé bien por qué. Supongo que ambos dependen en gran medida de las mismas bibliotecas para muchos códecs.
mpv es excelente. Algunas recomendaciones, sin orden particular: el
mpv.confbase de Seeds of Might/JySzE; uosc, una UI con muchas funciones pero aún minimalista; thumbfast, un generador rápido de miniaturas para usar con uosc u otras UI personalizadas; y SmartSkip de Eisa01, que salta openings y similares basándose en el 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
Para encontrar de forma confiable openings o créditos finales se necesita un análisis no local. Básicamente, hay que encontrar segmentos de audio que aparezcan en común entre los episodios de una temporada o de toda la obra.
Hice una herramienta CLI que puede hacer eso, pero la verdad es que no está “terminada” y probablemente nunca lo esté. Mi objetivo inicial era desarrollar un plugin para Jellyfin, pero luego descubrí que ya existía uno así.
https://github.com/aksiksi/needle
Es el mejor reproductor multimedia que existe. Me gusta su excelente UI minimalista, el uso de aceleración por hardware y el hecho de que simplemente reproduce videos.
Que siga siendo tan sobresaliente probablemente sea una de las razones por las que voy a piratear toda la vida. Los servicios de streaming gastan millones de dólares en sus reproductores y aun así no se acercan a este nivel.
MPV cuenta con scripts muy versátiles. Por ejemplo, puedes recortar o hacer crop del video que estás viendo[1]
También puedes asignar a atajos funciones que no he visto en otros reproductores. A veces uso
n vf toggle normalize=smoothing=100eninput.confpara normalizar el brillo y el color de la escena que estoy viendo, aunque puede no funcionar si se usa decodificación por hardwareLa rotación de video se configura así:
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...
Algo que muchos no saben es que mpv no solo puede transmitir videos de YouTube, sino que también permite buscar en YouTube desde la CLI con
mpv ytdl://ytsearch:queryAdemás, puede reproducir video directamente dentro de la terminal usando ASCII, sixel y el protocolo de imágenes de kitty; de estos, el protocolo de imágenes de kitty ofrece una calidad claramente superior
Hasta ahora, mi función favorita de mpv es que permite aplicar shaders CRT al contenido en tiempo real. Este método primero reduce correctamente el video HD a un búfer real de 240p y luego el shader también se encarga de escalarlo a la resolución de la pantalla
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders