- mpv é um player de mídia livre e open source, centrado na linha de comando, com suporte a vários formatos de arquivos de mídia, codecs de áudio e vídeo e formatos de legendas
- Graças aos recursos poderosos de scripting e a uma coleção de scripts de usuários, é fácil estender o player básico do jeito que você quiser
- Mantém um design minimalista e não tem uma GUI separada, mas oferece um pequeno controlador na tela para operações básicas sobre o vídeo
- Com saída de vídeo de alta qualidade baseada em OpenGL, Vulkan e D3D11, além de suporte a APIs de decodificação por hardware, permite ajustar a qualidade de reprodução em diversos ambientes
- Tem uma API em C pensada desde o início para integração como biblioteca, permitindo incorporar o mpv em outros aplicativos
Player de mídia centrado na linha de comando
- mpv é um player de mídia livre usado pela linha de comando
- Oferece suporte a vários formatos de arquivos de mídia, codecs de áudio e vídeo e formatos de legendas
Scripting e formas de controle
- Os recursos de scripting permitem estender amplamente o comportamento do player
- Scripts de usuários estão reunidos em User Scripts na wiki
- Por seguir uma proposta minimalista, não oferece uma GUI separada
- Para controles básicos, é possível usar um pequeno controlador na tela exibido sobre o vídeo
Saída de vídeo e decodificação
- Oferece saída de vídeo baseada em OpenGL, Vulkan e D3D11
- Também inclui recursos de reprodução para entusiastas de vídeo
- Escalonamento de vídeo baseado em algoritmos de alta qualidade
- Gerenciamento de cores
- Temporização de quadros
- Interpolação
- HDR
- Na maioria das plataformas, é possível usar várias APIs de decodificação por hardware
- A decodificação por hardware pode ser ativada quando necessário durante a execução
Integração com aplicativos e status de desenvolvimento
- O mpv projetou desde o início uma API em C para facilitar a integração com outros aplicativos
- A API está em client.h
- O projeto está em desenvolvimento ativo, com foco em refatoração e limpeza de código, além da adição de recursos
- Solicitações de recursos ou patches podem ser enviados por meio das issues do mpv no GitHub
Recursos relacionados
- Installation: guia de instalação
- Source Code Repository: repositório de código-fonte
1 comentários
Comentários do Hacker News
mpv é um excelente player de mídia. Bastante minimalista, com bom desempenho, e faz exatamente o que precisa fazer
Também há um ótimo commit em que o autor desabafa sua raiva sobre locale: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... vale a leitura para dar umas risadas
As bibliotecas padrão de várias linguagens como Zig, Go e Rust estão muito à frente da biblioteca padrão de C ou das APIs POSIX. Só isso já é motivo suficiente para usá-las
Há 25 anos, Spolsky escreveu “everything you wanted to know about Unicode and character sets”, e isso pode ser útil até para quem só viveu no mundo pós-Unicode/UTF
errno, como aconteceu com a API de locale de C, existe de fato um caso assim. São as funções de tempo comolocaltime,localtime_retzsetComo dependem de locale, ficam numa área vizinha a locale, mas fuso horário também é estado global, então em código C multithread portável em POSIX é impossível obter a hora de um fuso diferente usando apenas a API padrão
wchar_tsão ambos legados quebrados em estado de morte cerebral. Se houvesse pessoas competentes no comitê de padronização C/POSIX, eles teriam sido descontinuados ou removidos há muito tempo. Não removeramgets()? Vou escrever um texto longo para justificar este surto emocional que pode soar ofensivo para quem não sabe do assunto. Se linguagem forte te incomoda, pense nisto como um texto religioso.”É realmente lendário
Comecei a usar no Linux há alguns anos, e agora está instalado em todos os meus dispositivos, até no tablet Android. Perfeito. Padrões minimalistas, configurações sensatas, rápido, simplesmente funciona
Ele até consegue reproduzir nativamente via SSH, o que é incrível:
mpv sftp://mit@nyx/home/mit/Work/merged.mp4Recentemente precisei de um atalho para girar vídeo; em outros players isso não parecia fácil, e no mpv bastou colocar
r cycle_values video-rotate "90" "180" "270" "0"noinput.confmpvSe você usa Linux, não pode esquecer de adicionar
hwdec=autoaompv.confpara ativar a aceleração por hardware. Funciona em AMD/Intel/NVIDIAhttps://interfacinglinux.com/2024/01/10/hardware-acceleratio...
vo=gpu-next,gpu-api=vulkan,hwdec=vulkan,gpu-context=waylandvkSe o vídeo via Vulkan não funcionar, dá para trocar
hwdec=vulkanporhwdec=vaapipacmane testar um vídeo em 4K; o cooler da CPU começou a girar na hora, e notopdava para ver vários núcleos sendo usados. Continuei rolando este post do HN e descobrihwdec=autoVindo do mplayer e do VLC, a pergunta imediata é: que trade-off os mantenedores estão tentando aceitar ao não tornar isso o padrão?
Este projeto tem uma linhagem muito antiga; antigamente era conhecido como mplayer. Há nada menos que 500 mil commits remontando a 2001, e isso contando só depois que o repositório CVS foi convertido para Subversion
Usando streamlink com mpv em um Minix z100 fanless rodando Ubuntu, ficou quase perfeito para assistir às Olimpíadas
https://streamlink.github.io/
https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...
Pode soar bobo, mas, pessoalmente, a funcionalidade principal é poder exibir várias legendas ao mesmo tempo. Dá para ajustar facilmente faixa, offset, posição, tamanho etc. com alguns atalhos de teclado
Nenhum serviço de streaming oferece isso, e eles escondem ativamente idiomas de legenda que julgam não ser “relevantes” para a localização do usuário. É difícil respeitar um serviço assim
--sid1=e--sid2=já funciona bem o suficienteNem eu nem minha esposa somos falantes nativos de inglês, e nossas línguas maternas também são diferentes. Eu me viro bem em inglês, mas alguns sotaques são difíceis e, se o áudio estiver barulhento, às vezes perco palavras, então prefiro legendas em inglês. Minha esposa prefere legendas na língua materna dela
Poder mostrar várias legendas permite que ambos tenhamos a experiência de visualização que queremos, e vale totalmente a pena em troca de usar um pouco do espaço da tela
Escrevi sobre isso aqui: https://www.baeldung.com/linux/mpv-subtitles-automatic. Só achei uma pena a documentação sobre os formatos de legenda suportados ser fraca, e tive que fuçar o código do ffmpeg para confirmar quais formatos realmente eram aceitos
Além disso, https://subdl.com/ e https://github.com/alexanderwink/subdl são ótimos recursos para procurar e baixar legendas pela linha de comando
O mpv sempre funcionou bem e lidou com facilidade com quase tudo que joguei nele
Pode ser diferente hoje, mas quando tive contato com ele pela primeira vez, anos atrás, o que diferenciava o projeto de outros players era a sensação de que ele valorizava muito a correção e a reprodução precisa. Por exemplo, já houve arquivos que apresentavam problemas estranhos no VLC, como reprodução de cores meio errada, mas no mpv eram reproduzidos perfeitamente
Só não sei bem por quê, já que imagino que ambos dependam em grande parte das mesmas bibliotecas para muitos codecs
O mpv é excelente. Recomendações, sem ordem específica: o
mpv.confbásico do Seeds of Might/JySzE, a uosc, uma UI cheia de recursos mas ainda minimalista, o thumbfast, um gerador de miniaturas rápido para usar com uosc ou outras UIs customizadas, e o SmartSkip do Eisa01, que pula aberturas etc. com base no áudio[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 com confiabilidade aberturas ou créditos finais, é necessária uma análise não local. Basicamente, é preciso identificar trechos de áudio que aparecem em comum entre os episódios de uma temporada ou de uma obra inteira
Eu criei uma ferramenta CLI que consegue fazer isso, mas, na verdade, ela não está “pronta” e provavelmente nunca estará. O objetivo inicial era desenvolver um plugin para o Jellyfin, mas depois descobri que já existia um plugin assim
https://github.com/aksiksi/needle
É o melhor player de mídia que existe hoje. Gosto da UI minimalista, do uso de aceleração por hardware e do fato de que ele simplesmente reproduz vídeos
Continuar tão bom assim provavelmente é um dos motivos pelos quais vou seguir pirateando para sempre. Os serviços de streaming gastam milhões com seus players e mesmo assim não chegam nem perto desse nível
O MPV tem scripts versáteis. Por exemplo, dá para cortar ou recortar o vídeo que você está assistindo[1]
Também dá para atribuir a atalhos funções que eu nunca vi em outros players. Às vezes, para normalizar o brilho e as cores da cena que estou vendo, eu uso
n vf toggle normalize=smoothing=100noinput.conf, mas isso pode não funcionar ao usar decodificação por hardwareA rotação do vídeo é configurada assim:
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...
Um ponto que muita gente não conhece é que o mpv não só consegue fazer streaming de vídeos do YouTube, como também permite pesquisar no YouTube pela CLI com
mpv ytdl://ytsearch:queryAlém disso, ele também consegue reproduzir vídeo diretamente dentro do terminal usando ASCII, sixel e o protocolo de imagem do kitty, e entre eles o protocolo de imagem do kitty tem qualidade disparadamente melhor
Até agora, minha função favorita no mpv é poder aplicar shaders de CRT ao conteúdo em tempo real. Esse método também faz o downscale correto de vídeo HD para um buffer 240p real e depois o shader cuida do upscale de acordo com a resolução da tela
https://i.imgur.com/akmgzxX.png
https://github.com/hhirtz/mpv-retro-shaders