2014-07-22

MPlayer, mplayer2 e mpv [para Windows]

  Existem inúmeros tocadores multimídias disponíveis, porém, o que mais me agradou sempre foi o que me passou mais raiva.

  Tentarei esclarecer algumas de suas funções e quem sabe assim a experiência de uso seja mais amigável para aqueles que queiram experimentar a família MPlayer.

Histórico

  MPlayer nasceu em 2000, como um software livre para visualização de arquivos multimídias, e acabou sendo portado para um grande número de sistemas, incluindo vídeo-games. Por tentar manter-se portável e retro-compatível ao custo de desempenho e novos recursos surgiram ramificações ("fork", em inglês), como mplayer2, em 2011.

  mplayer2 durou 2 anos, com várias otimizações, limpezas de código e novos recursos. Porém, nunca ofereceu binários oficialmente. E por isso nasceu o mpv. Inicialmente, era apenas um repositório de binários e hoje é a continuação do projeto mplayer2, com um novo nome e equipe.

Explicações

  Apesar das diferenças ainda são as semelhanças que marcam os dois projetos. Sem sombra de dúvida recomendo o mpv para os usuários novatos, mas me parece importante explicar o funcionamento do MPlayer para entender alguns comportamentos do mpv. Sigamos.

Diretórios
MPlayer         /* Folder */
  codecs        /* Folder */
  fonts         /* Folder */
    cache       /* Folder */
    conf.d      /* Folder */
    fonts.conf  /* File */
  mplayer       /* Folder */
    sub         /* Folder */
    config      /* File */
    input.conf  /* File */
    menu.conf   /* File */
  open-fonts    /* Folder */

  A pasta codecs não é realmente necessária. As versões atuais tanto do MPlayer quanto do mpv já possuem em seus binários todos os codecs que precisam. Porém, alguns recursos, os quais não cobrirei neste tópico, fazem uso destes arquivos e podem ser obtidos aqui: Windows x86 20071007 - FTP, HTTP, TORRENT. Os arquivos precisam estar na raiz da pasta codecs e não em sub-diretórios.

  A pasta fonts/cache não é original do sistema, mas uma sugestão que faço e explicarei sua função quando cobrir o uso de legendas.

  O arquivo fonts.conf armazena o endereço das fontes que serão usadas e da pasta de cache, e também será detalhado adiante.

  A pasta mplayer/sub pode armazenar legendas para seus vídeos, mas sua utilização pode não ser necessária na maioria dos cenários.

  O arquivo mplayer/config é o coração do programa e será detalhado em breve.

  O arquivo mplayer/menu.conf é o arquivo de configuração do menu OSD do MPlayer, não possui documentação oficial, não funciona corretamente no Windows e foi desativado no mpv.

  A pasta open-fonts armazena as fontes OpenType fornecidas pelo MPlayer, e faço seu uso na instalação do MPlayer, mas não no mpv.

config file

  O MPlayer até funciona sem um arquivo de configurações, utilizando apenas suas opções nativas. Porém, normalmente não traz o desempenho ou os recursos esperados. O arquivo config contém os mesmos comandos passados como parâmetros mas numa nova sintaxe.

  A saber:
  a) Tudo após os símbolo '#' (símbolo para número) é considerado comentário e portanto ignorado.
  b) Todos os parâmetros perdem o '-' (sinal de menos) precedente e passam a receber valores através do sinal '=' (igual).
  c) Para ativar um recurso fornecemos os valores '1', "yes" ou "true", enquanto que para desativarmos usamos '0', "no" ou "false". Também podemos desativarmos um recurso precedendo seu comando original com o prefixo "no-". Este comportamento é ligeiramente diferente no mpv.
  d) Sub-parâmetros são separados por ',' (vírgulas), são atribuídos através do sinal de '=' (igual) e as sub-atribuições são concatenadas através do sinal ':' (dois pontos).
  e) Valores contendo espaços devem ser envoltos por aspas.

Breve exemplo:
# Esta linha é um comentário.
# mplayer.exe -quiet é substituído por:
quiet=yes
# A sequência mplayer.exe -vo gl por:
vo=gl
# mplayer.exe -vf eq2 -vf ass -vf screenshot por:
vf=eq2,ass,screenshot
# mplayer.exe -af resample=48000:0:2 -af hrtf por:
af=resample=48000:0:2,hrtf
# mplayer.exe -font "MPlayer OSDMenu" por:
font="MPlayer OSDMenu"


Meu arquivo em uso:
## Performance
priority=abovenormal
lavdopts=threads=2

## Console
quiet=yes
msgcolor=yes

## Devices
consolecontrols=yes
mouseinput=yes
nojoystick=yes
noar=yes
nolirc=yes

## Window
menu=yes
xy=1024

## File
use-filename-title=yes

## Video-Output
vo=direct3d
dr=yes
noslices=yes
adapter=1
vf=eq2,ass,screenshot

## Audio-Output
# all default

## On-Screen Display (OSD)
fontconfig=yes
embeddedfonts=yes
font="MPlayer OSDMenu"
subfont="FreeSerif"
subfont-encoding=UNICODE
ass=yes
ass-hinting=0
ass-color=33FFFF00
ass-border-color=0000A0A
ass-use-margins=yes
ass-font-scale=2
subfont-autoscale=0
subfont-text-scale=4
subfont-osd-scale=20
ffactor=1
spuaa=4

## Regions
slang=pt,en
alang=en,pt
subcp=CP1252
sub-fuzziness=1

## Others
[protocol.dvd]
profile-desc="profile for dvd:// streams"
dvd-device="i:/"
nocache=yes

[protocol.dvdnav]
profile-desc="Profile for reading DVD menus"
dvd-device="i:/"
nocache=yes


Arquivo em detalhes:
  Subdivido o arquivo de configuração em 10 partes, completamente arbitrárias, mas que me ajudam na organização do mesmo. A saber: Performance, Console, Devices, Window, File, Video-Output, Audio-Output, On-Screen Display, Regions, Others.

  Em Performance normalmente encontramos priority (apenas para Windows), lavdopts, cache, double, framedrop.

  priority determina a prioridade que o processo mplayer.exe terá em relação ao restante do sistema. Podendo ser: "idle", "belownormal", "normal", "abovenormal", "high", "realtime". Use "abovenormal" para garantir prioridade sem prejudicar a fluidez do sistema. Enquanto, "realtime" não é aconselhável, por mais lento que seja seu equipamento.

  lavdopts=threads permite entre outros recursos determinar a quantidade de núcleos a serem usados para o processamento de codecs. Podendo ser de 0 a 16. Onde '0' significa automático e é a opção padrão. Normalmente não é necessário alterá-la, porém, o recurso de múltiplas threads não está disponível em todos os codecs.

  cache permite determinar a quantidade de memória a ser preenchida antes de dar continuidade ao processamento e portanto visualização. Útil em mídias lentas como internet para visualização de conteúdo em modo contínuo, sem saltos ( sem "seeks" ), mas que também pode causar lentidão quando se faz buscas num DVD por exemplo. O valor é medido em kBytes, e normalmente não é necessário usá-lo. Se sentir necessidade de ativá-lo tente com valores baixos como 4096 ou 8192.

  framedrop=yes permite desabilitar o processamento de alguns quadros durante a execução. Útil em sistemas antigos, mas muito possivelmente não será necessário em qualquer hardware atual. Normalmente não provoca distorção. Ao contrário de hardframedrop=yes que elimina muitos mais quadros e normalmente provoca distorções. Os modos framedrop=no, framedrop=yes e hardframedrop=yes podem ser alternados em tempo de execução através da tecla 'd', minúscula.

  Em Console normalmente encontramos quiet, msgcolor, v, msglevel.

  quiet diminui a quantidade de informação exibida no console, e por ser uma interface lenta em sistemas Windows é aconselhável ativá-la. Caso não queria receber informação alguma use really-quiet=yes.

  msgcolor permite visualizar no console mensagens coloridas. Muito útil para quem está buscando informações para correção de erros ou lentidões.

  v aumenta o nível de verbosidade do console. Útil quando se está fazendo ajustes de desempenho ou resolvendo incompatibilidades, mas não muito além disto.

  msglevel permite escolher a natureza das mensagens do console. Por favor, leia a documentação oficial para mais detalhes. Normalmente, resolvo meus problemas com um simples v=yes.

  Em Devices normalmente encontramos consolecontrols, mouseinput, mouse-movements, nojoystick, noar e nolirc.

  consolecontrols ativa a leitura do teclado. Esta opção é ativada por padrão e é de fato o modo mais comum de manipulação do MPlayer. Mas há outros. E são todos configurados no arquivo mplayer/input.conf.

  mouseinput ativa a leitura do mouse. No Windows, o clique duplo do mouse não costuma funcionar em modo janela - apenas em tela cheia, e por isso talvez não seja tão útil.

  nojoystick desativa o suporte a controles usb de jogos. Nunca testei o suporte a controle no Windows, normalmente deixo desativado.

  noar desativa o suporte ao controle remoto AppleIR. Não tenho este equipamento, e portanto nunca testei e deixo normalmente desativado.

  nolirc desativa o suporte ao Linux Infrared Remote Control. Também não possuo este equipamento mas há grande chance dos binários compilados para Windows não o suportarem e por isso deixo normalmente desativado.

  Em Window normalmente encontramos as opções border, ontop, fs, menu, menu-startup, menu-root, geometry e xy.

  border permite ativar o uso de bordas em janelas de vídeo. É ativado por padrão, e assim permite o redimensionamento do vídeo, exibe uma barra de título e botões como minimizar e fechar.

  ontop ativa "Stay on top", fazendo a janela de vídeo estar sempre em primeiro plano. Pode ser desativado ou ligado através da tecla 'T', maiúscula, em tempo de execução.

  fs ativa "Fullscreen", visualizando o vídeo em tela cheia. Pode ser ativado ou desativado através da tecla 'f' minúscula em tempo de execução.

  menu ativa o suporte ao menu OSD. Seu uso não é documentado e é configurado através do arquivo menu.conf.

  menu-starup permite o menu sempre abrir ao iniciar a execução de um vídeo.

  menu-root permite escolher o menu principal alternativo ao padrão, main.

  geometry permite escolher o tamanho da janela e sua posição. Por padrão o tamanho da janela do MPlayer coincide ao tamanho informado pelo arquivo de vídeo e sua posição é escolhida pela Windows. Útil quando a resolução nativa do arquivo de vídeo é igual ou superior à utilizada em sua área de trabalho.

  xy versão simplificado do geometry. Determina apenas o tamanho da janela de vídeo, ignorando o tamanho informado pelo arquivo de vídeo.

  Em File normalmente encontramos as opções use-filename-title, loop, ss, endpos, idx, forceidx, fps, subdelay.

  use-filename-title permite definir o título da janela de vídeo com o nome de arquivo exibido.

  loop permite determinar o número de visualizações padrão. Sendo '0' infinito, '1' o valor padrão e podendo receber qualquer outro valor inteiro.

  ss permite determinar o início do arquivo no formato: "00:00:00", sendo Horas:Minutos:Segundos.

  endpos permite determinar o tempo máximo de exibição de um arquivo, no formato "00:00:00", porém, sua contagem é relativa ao uso do ss. Por exemplo para terminar na posição absoluta "00:03:00", partindo de ss=00:00:30, então devemos ajustar assim: endpos=00:02:30.

  idx recria - sem alterar o arquivo - o índice do arquivo de vídeo permitindo a opção de "seek" quando nenhum índice é encontrado. É esperado lentidão quando este recurso está ativado.

  forceidx recria o índice para todos arquivos, mesmo aqueles que já possuem. É esperado lentidão ao abrir qualquer vídeo quando este recurso está ativado.

  fps permite escolher o "framerate" de um arquivo, normalmente só é útil em arquivos com defeito.

  subdelay permite atrasar ou adiantar o arquivo de legenda. Normalmente é mais prático encontrar a legenda corretamente sincronizada na internet ou através de programas dedicados, como o Subtitle Edit. Tente os sites Legendas.tv/ ou OpenSubtitles.org - mas cuidado com este segundo pois o mesmo pode oferecer a instalação de programas que alteram o comportamento do seu navegador, como a modificação da página inicial ou instalação de novas barras de ferramentas.

  Em Video-Output normalmente encontramos as opções vo, dr, noslices, adapter, vf.

  Nesta seção precisarei de mais linhas para explicar. O MPlayer nos permite escolher o driver de vídeo padrão a ser usado. Existem vários, mas como normalmente eles variam de compilação para compilação, listarei apenas os mais comuns. A lista completa para a versão instalada em seu computador pode ser vista através do comando "mplayer.exe -vo help".

  Os drivers mais comuns são "directx", "direct3d", "gl" e "sdl".

  vo=directx é a opção ideal para Windows XP e versões anteriores. Possui o melhor desempenho e todos recursos. Porém, não é compatível com Aero dos sistemas mais novos.

  vo=direct3d é a opção ideal para Windows Vista e posteriores. Possui o melhor desempenho em todas as máquinas que já testei, porém, não possui alguns recursos de aceleração por hardware que permitem por exemplo a mudança de contraste e brilho durante a execução. Porém, podemos ativar aceleração por software através de filtros de vídeo, o que veremos em breve.

  vo=gl é a opção normalmente recomendada em fóruns e na documentação. Exige uma placa de vídeo compatível com a especificação OpenGL 2.3, a qual é bem antiga e normalmente suportada, porém, nunca obtive sucesso em minhas máquinas. As distorções são mais perceptíveis em vídeos Full HD.

  vo=sdl é a opção normalmente utilizado nos portes para MS-DOS/Free DOS. Foi assim que conheci o MPlayer, há muito tempo atrás haviam discos bootáveis que permitiam visualização de vídeo em ambiente DOS. Hoje em dia não sei mais se o suporte permanece, mas era muito interessante ter uma imagem de 50 MB que era capaz reproduzir vídeo ou música e com ótimo desempenho. Em ambiente Windows no entanto o desempenho deixa a desejar. Mera menção histórica. Na verdade, se ficou interessado poderia experimentar vo=caca que permite ver o vídeo no terminal através de ASCII colorido. É terrível? Sim, mas vale umas gargalhadas!

  dr ativa a renderização direta. Modifica a forma pela qual as memórias principal e de vídeo se comunicam. Não é suportado por todos codecs ou drivers de vídeo e nestes casos pode apresentar lentidão. Normalmente não é necessário, mas mantenho sempre ativo.

  noslices desativa o processamento por pedaços de 16 pixel de altura por frame, para processar todo frame numa única execução. Pode aumentar ou diminuir o desempenho de acordo com cada sistema. Recomenda-se ativá-lo quando se usa vo=gl.

  adapter determina o adaptador de vídeo a ser usado em sistemas multi-monitor. '0' refere-se ao monitor padrão, '1' refere-se ao primeiro monitor e assim por adiante.

  vf permite adicionar filtros de vídeo. Por favor, leia a documentação oficial para mais detalhes. No meu caso uso vf=eq2,screenshot,ass que significa a) equalização de vídeo por software, ativando regulação de contraste e brilho independente do driver de vídeo, b) ativa a capacidade de tirar fotos dos vídeos, e c) faz com que as legendas apareçam nas fotos.

  Em Audio-Output normalmente encontramos as opções ao, channels, af, softvol, volstep, softvol-max, volume.

  Há muito tempo que não preciso mexer nestas configurações, uso as opções nativas do MPlayer. Mas caso precise delas, comece com o comando mplayer.exe -ao help para uma lista completa de drivers de áudio disponíveis. As opções mais comuns são "dsound"(padrão) e "win32".

  ao permite escolher o driver de áudio padrão.

  channels permite forçar um número específico de canais.

  af permite escolher filtros de áudio. Por favor, procure por mais informação na documentação oficial.

  softvol força o controle de volume por software ao invés do controle por hardware, mas não é suportado por todos os drivers de áudio.

  volstep ajusta a precisão do controle de volume, variando mais rápido ou mais lento de acordo com o valor informado.

  softvol-max ajusta o valor máximo para volume, podendo ser inclusive maior que 100%, mas não é suportado por todos os drivers de áudio.

  volume determina o volume padrão para toda reprodução multimídia. Útil quando se usa outras aplicações multimídias em paralelo e precisa que o MPlayer comece sempre mais baixo ou mais alto que as outras aplicações.

  Em OSD temos as opções que normalmente lhe farão arrancar os cabelos.

  É preciso esclarecer que na prática o MPlayer possui 3 níveis de OSD ao invés de só um. A saber: OSD, MENU e LEGENDA.

  Menu é um recurso não documentado e que apresenta alguns defeitos, ao menos em Windows, e talvez por isso fosse melhor não usá-lo. De qualquer forma, com um pouco de paciência alguma coisa pode ser feita.

  fontconfig! A primeira opção merece um livro. fontconfig é o gestor de fontes utilizado pelo MPlayer, ele é ativado por padrão e é configurado através do arquivo fonts/fonts.conf.

  Quando ativo ele irá pesquisar por fontes instalados em seus sistema de acordo com 3 situações: a) quando nenhum cache de fonte for encontrado, b) quando novas fontes forem escolhidas, c) em intervalos regulares. O maior problema que temos, na verdade, é o desempenho. O uso do fontconfig atrasa a execução do vídeo antes da produção do cache e pode acabar comprometendo a exibição do mesmo em intervalos regulares - principalmente em ambientes Windows, onde instalações padrões costumam ter mais de 500 arquivos de fontes!

  Se não o utilizarmos o sistema passa a procurar por fontes bitmaps para a produção do OSD, Menu e Legendas - um erro que pode ser ignorado nas versões atuais. Caso ativado, o sistema passa a procurar por fontes OpenType.

  Como mitigar os problemas? a) Usando uma pasta própria para cache, b) usando uma pasta própria para fontes exclusiva ao MPlayer e c) aumentando o tempo de re-escaneamento regular. Atualmente uso uma pasta contendo 31 fontes, todas livres, todas OpenType, exclusivamente ao MPlayer. E uso a pasta fonts/cache como cache do fontconfig.

  Para realizarmos estas configurações pularemos lá para o arquivo fonts/fonts.conf.

  Antes um breve comentário, no Windows os diretórios são separados por '\', contra barra, enquanto que em sistemas "Unix-like", o padrão é '/', barra. Programas nativos do GNU/Linux portados para o Windows - como o MPlayer e o nginx, por exemplo - costumam reconhecer diretórios apenas através do uso de '/'. Portanto, não tenho errado ao utilizar a barra no lugar da contra barra em todos meus exemplos, mas, ao contrário, me esforçado para criar código compatível com o MPlayer.

  O arquivo fonts/fonts.conf, ao contrário do arquivo mplayer/config, é em formato XML ao invés de texto puro e portanto exige um pouco mais de atenção.

1.Substitua a linha:
<dir>WINDOWSFONTDIR</dir>
Por:
<dir>open-fonts</dir>
2.Substitua a linha:
<cachedir>LOCAL_APPDATA_FONTCONFIG_CACHE</cachedir>
Por: (lembre-se de criar a pasta cache primeiro!)
<cachedir>fonts/cache</cachedir>
3.Substitua a linha:
<rescan><int>30</int></rescan>
Por:
<rescan><int>3600</int></rescan>

  Ufa!

  embeddedfonts ativa a extração de fontes embutidas em arquivos Matroskas.

  font determina a fonte a ser utilizada pelo OSD e pelo MENU. Sugestão de uso: font="MPlayer OSDMenu". E um novo parênteses, no final deste tópico deixarei o link para esta fonte. Gostaria muito de dar os créditos a quem a fez, porém, desconheço seu autor. A fonte originalmente se chamava "Liberation Sans" e fui eu quem modificou seu typeface no binário para "MPlayer OSDMenu" mas assim o fiz pois ela já não era o arquivo original. Alguém incluiu símbolos multimídias, inclusive o logo "MPlayer" em seu interior.

  subfont determina a fonte a ser utilizada para Legendas ("subtitles"). Estou usando "FreeSerif" mas você é livre para escolher a fonte que quiser, desde que opte por fontes OpenType.

  subfont-encoding. Se font é usado para OSD e Menu, se subfont é usado para Legendas, seria de esperar que estamos falando de Legendas, certo? Não é o caso. Use subfont-encoding=UNICODE para que seus Menus contenham os símbolos personalizados de "MPlayer OSDMenu.otf".

  ass habilita renderização de Legendas pela biblioteca SSA/ASS. Permite melhor controle e maior qualidade. Exige o uso de fontconfig e de fontes OpenTypes.

  ass-color permite mudar a cor das fontes, no formato hexadecimal "RRBBGGTT". "Red", "Blue", "Green" e "Transparency". Uso: ass-color=33FFFF00, feio, né?

  ass-border-color permite mudar a cor da borda das fontes, no formato "RRBBGGTT". Uso: ass-border-color=0000A0A.

  ass-use-margins. Se você decidir ativar o uso de margens, com, por exemplo, ass-bottom-margin=100, permite escrever legendas sobra elas.

  subfont-autoscale altera o tamanho de todas as fontes: OSD, Menus e Legendas. Aceita 4 valores: '0' desabilita o auto redimensionamento, '1' proporcional à altura do vídeo, '2' proporcional à largura do vídeo, '3' proporcional à diagonal do vídeo. Deixo sempre desativado, '0'. Atenção: O tamanho das fontes pode causar erros inesperados, sem exibição de qualquer mensagem de erro no terminal, portanto, cuidado.

  subfont-osd-scale altera o tamanho das fontes de OSD e Menu. Uso o valor "20".

  subfont-text-scale altera o tamanho das fontes de Legendas. O valor esperado é o percentual do tamanho da tela. Uso o valor '4'.

  ass-font-scale altera o tamanho das fontes de Legendas proporcionalmente ao valor de subfont-text-scale. Uso o valor '2'.

  ffactor determina o "alpha-map" da fonte do OSD e Menu. Valores esperados: '0', "0.75", '1' e "10". Uso '1'.

  Em Regions encontramos as opções slang, alang, sub-fuzziness, subcp.

  slang permite escolher um fila de prioridades para a língua da legenda. Por exemplo: slang=pt,en faz o MPlayer procurar por uma trilha de legenda primeiro em português e depois ("fallback") em inglês. Útil em menus DVDs e arquivos com legendas embutidas. Sem uso para legendas externas.

  alang permite informar uma fila de prioridades para a língua do áudio. Por exemplo: "alang=en,pt" faz o MPlayer procurar por uma trilha de áudio em inglês e caso não encontre tentar tocar uma trilha em português.

  sub-fuzziness permite habilitar a busca fuzzy para arquivos de legenda. Veja tabela abaixo:
  '0' - Desabilitado. Comportamento padrão.
A legenda deve ter o mesmo nome do arquivo, só variando as extensões.
Exemplo:
Filme.mpg
Filme.srt    - Única legenda válida neste modo.
Filme_pt.srt - Legenda inválida neste modo.
PORTUGUE.srt - Legenda inválida neste modo.
BR_01pob.srt - Legenda inválida neste modo.

  '1' - Habilitado. Comportamento "fuzzy".
Todos arquivos de legenda que possuírem o nome do vídeo em parte de seu nome serão carregadas.
Exemplo:
Filme.mpg
Filme.srt    - Legenda válida neste modo.
Filme_en.srt - Legenda válida neste modo.
Filme_pt.srt - Legenda válida neste modo.
Filme_cz.srt - Legenda válida neste modo.
PORTUGUE.srt - Legenda inválida neste modo.
BR_01pob.srt - Legenda inválida neste modo.

  '2' - Comportamento "ALL".
Todos arquivos de legenda presentes na pasta ou em sub-pastas serão carregados!
Exemplo:
Filme.mpg
Filme.srt    - Legenda válida neste modo.
Filme_en.srt - Legenda válida neste modo.
Filme_pt.srt - Legenda válida neste modo.
Filme_cz.srt - Legenda válida neste modo.
PORTUGUE.srt - Legenda válida neste modo.
BR_01pob.srt - Legenda válida neste modo.


  subcp ajusta a página de código ("code page") usada para ler os arquivos de legenda. É bom, porém, fazer algumas explicações. Uma página de código tem duas dimensões: a) ela determina como cada caractere é representado binariamente no arquivo e b) determina o mapa de caracteres usado para estes caracteres. Por exemplo, a codificação WINDOWS-1252 possui menos de 256 caracteres, enquanto o UTF-8 pode representar milhares. Como a diferença entre os dois não é apenas de mapa de caracteres, mas também de ordenação binária, tentar visualizar um arquivo escrito em WINDOWS-1252 em UTF-8 irá produzir um conteúdo diferente do esperado, mesmo que o UTF-8 possua todos os caracteres disponíveis no mapa de caracteres WINDOWS-1252.

  Portanto, a escolha da codificação deve coincidir com o formato da legenda. Para efeito prático "ISO8859-1", "CP1252" ou "WINDOWS-1252" são sinônimos, e os formatos mais comuns de legendas em português. Enquanto, "UTF-8", o formato mais comum de legendas estrangeiras.

  Para resolver o assunto existem pelo menos duas formas. Engessar a configuração do MPlayer e para todo arquivo de legenda que obtiver convertê-lo para o formato do MPlayer ou pelo contrário mudar a configuração do MPlayer de acordo com o formato nativo da legenda. Para ajudá-lo poderá usar Subtitle EditNotepad++TED NotepadEditPad Lite e tantos outros.

  Hum... caso procure informação sobre codificação na internet, tanto na documentação oficial quanto nos fóruns é comum sugerirem a utilização do ENCA. O que normalmente não falam é que o universo de línguas suportadas é muito baixo, a saber: be, bg, cs, et, hr, hu, lt, lv, pl, ru, sk, sl, uk, zh. Então, caso lhe seja sugerido a opção: subcp=enca:pt:UTF-8, já esteja avisado que a língua portuguesa não é suportada pelo recurso.

  Em Others temos configurações especiais, quando queremos tratar um protocolo ou formato de arquivo diferente dos demais. Por exemplo:

[protocol.dvdnav]
profile-desc="Profile for reading DVD menus"
dvd-device="i:/"
nocache=yes
mouse-movements=yes


  O código acima além de informar a unidade de DVD, desativa o cache e habilita o reconhecimento da posição do mouse sempre que utilizar o MPlayer para ver DVD com suporte a menus.

menu.conf

  O menu é um recurso não documentado e com alguns comportamentos anômalos. Devo alertá-lo que por mais que se tente, o tamanho das letras varia de acordo com a resolução do vídeo. Por isso, vídeos de alta resolução terão letras pequenas e vice-versa.

  Para habilitá-lo é preciso que exista a linha menu=yes em mplayer/config e que alguma tecla ou botão de mouse ou controle esteja configurado com o comando "menu main" em mplayer/input.conf, por exemplo:

# Substitua a linha abaixo:
m mute
# por:
m main menu


Meu arquivo em uso:
<keybindings name="default">
   <!-- In input.conf: "m menu main" -->
   <binding key="m" cmd="menu hide" />
   <binding key="UP" cmd="menu up" />
   <binding key="DOWN" cmd="menu down" />
   <binding key="LEFT" cmd="menu left" />
   <binding key="RIGHT" cmd="menu right" />
   <binding key="ENTER" cmd="menu ok" />
   <binding key="ESC" cmd="menu cancel" />
</keybindings>
<pref name="sub_menu" title="ʥ Sub Menu">
   <!--
    The following 5 options do not work
    properly in the main menu. 
   -->
   <e name="Brightness"     property="brightness" />
   <e name="Contrast"       property="contrast" />
   <e name="Gamma"          property="gamma" />
   <e name="Hue"            property="hue" />
   <e name="Saturation"     property="saturation" /> 

</pref>
<pref name="main" title="ʥ Main OSD Menu" ptr="►" >
   <e name="Always on top"  property="ontop" />
   <e name="Fullscreen"     property="fullscreen" />
   <e name="Volume"         property="volume" />
   <e name="Mute"           property="mute" />
   <e name="Audio Stream"   property="switch_audio" />
   <e name="Audio Delay"    property="audio_delay" />
   <e name="Subtitle File"  property="sub" />
   <e name="Subtitle Scale" property="sub_scale" />
   <e name="Subtitle Delay" property="sub_delay" />
   <e name="ʼ"              txt="${filename}" />
   <e name="ʧ"              txt="${video_format},
                            ${video_bitrate},
                            ${width} x ${height}" />
   <e name="ʤ"              txt="${audio_codec},
                            ${audio_bitrate},
                            ${samplerate},
                            ${channels}" />

</pref>
<!-- Always leave a blank line at the end! -->


  Os comandos para se mudar de menu foram omitidos, pois, sempre que se escolhe um novo menu, o menu atual desaparece obrigando ao usuário abri-lo novamente. Dito isto, existem pelo menos duas formas para se mudar de menu, cada uma destinada a um tipo de menu diferente.

  Existem alguns tipos de menus, mas só mencionarei dois: pref e cmdlist.

  Para pref menus como o representado no meu arquivo em uso:
   <menu name="SubMenu"     menu="sub_menu" />

  E para cmdlist menus:
   <e    name="SubMenu"     ok="set_menu sub_menu" />


  Para criar este segundo tipo de menu basta substituir os termos "pref" por "cmdlist" no arquivo XML.

mpv

  Por padrão o mpv não apresenta o console, o que dificulta o entendimento de erros e lentidões mas dá uma aparência muito mais profissional ao programa. Ele não utiliza o fontconfig, apesar de continuar produzindo cache de fontes, e seu menu foi completamente abandonado, substituído por uma nova versão escrita em Lua.

  Vários comandos e arquivos foram re-nomeados, bibliotecas re-escritas e vários pequenos bugs corrigidos. Entretanto, ainda o driver de vídeo direct3d continua sendo o que apresenta melhor imagem em meus testes.

  Lentidões ainda são comuns quando o cache de fontes está sendo criado e quando a codificação da legenda está em desacordo com a codificação escolhida pelo mpv mas agora você não tem mais o console para avisá-lo. Lembre-se disto.

  O arquivo de configuração agora se chama mpv/mpv.conf.

Meu arquivo em uso:
## Performance
priority=abovenormal
vd-lavc-threads=2

## Console
# Desativado por padrão!

## Devices
# Usando padrão!

## Window
autofit-larger=1024x768
window-dragging=yes

## File
title='${filename}'

## VIDEO
vo=direct3d
vf=eq

## AUDIO
# Usando padrão!

## SUBTITLE
sub-text-color="#33FFFF"
sub-text-font="FreeSerif"

## REGION
slang=pt,en
alang=en,pt
sub-auto=fuzzy #<no|exact|fuzzy|all>
sub-codepage=CP1252 #:UTF-8

## Others
# Usando padrão!


Considerações finais

  Ambos programas são voltados para usuários avançados, que saibam entre outra coisas como vincularem programas a extensões de arquivos. Mas deixarei alguns dicas bem simples que talvez possam lhe ser uteis.

  a) Abrindo o cmd na pasta desejada

  Existem inúmeros modos para fazê-lo, mas o método que mais me agrada é através da criação de um arquivo de lote na pasta do programa contendo uma única linha @%comspec%.

  b) Abrindo arquivos através do menu "Enviar para"

  Ao invés de alterar o registro, apenas crie um atalho para seu programa, e copie seu atalho para: %userprofile%\AppData\Roaming\Microsoft\Windows\SendTo (Windows 7).

  c) Lista de programas e sites sugeridos

MPlayer:
  http://www.mplayerhq.hu/design7/news.html (site principal)
  http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.txt html (documentação)
  http://mplayerwin.sourceforge.net/downloads.html G.T. version (downloads)

mplayer2
  http://www.mplayer2.org/ (site principal)
  http://www.mplayer2.org/docs/mplayer/ (documentação)

mpv
  http://mpv.io/ (site principal)
  http://mpv.srsfckn.biz/manual.pdf 2 (documentação)
  http://mpv.srsfckn.biz/ 2 3 (downloads)

Alguns programas baseados no MPlayer:
  http://www.mplayer-ww.com/eng/ - MPlayer WW
  http://smplayer.sourceforge.net/ - SMPlayer
  http://www.videolan.org/vlc/ - VLC
  http://xbmc.org/ - XBMC

Editores de texto puro:
  http://notepad-plus-plus.org/download/ - Notepad++
  http://jsimlo.sk/notepad/download.php - TED Notepad
  http://www.editpadlite.com/download.html - EditPad Lite (ótimo com codificações)

Editores de legenda:
  http://www.nikse.dk/SubtitleEdit - Subtitle Edit
  http://www.aegisub.org/ - Aegisub

Repositório de legendas:
  http://legendas.tv/ - LEGENDAS.TV
  http://www.opensubtitles.org/en/search - OpenSubtitles.org (Cuiado!*)

*Pode oferecer aplicativos que alteram barras de ferramentas ou a página inicial de seus navegadores.

Programas alternativos:
  http://potplayer.daum.net/ - PotPlayer¹
  http://mpc-hc.org/ - Media Player Classic - Home Cinema

Fonte MPlayer OSDMenu
   https://www.sendspace.com/file/y0hbyh - MPlayer OSDMenu²

¹ - Desenvolvido pelo antigo desenvolvedor do KMPlayer.
² - Baseado na fonte Liberation Sans mas incluído glyphs relativos ao MPlayer por terceiros. Todos os direitos pertencem à Red Hat, Liberation(tm) Fonts.

  Todas as informações presentes são relativas às versões:
    MPlayer: r37239_32-bit_07-15-2014 e
    mpv. i686-20140630

update: 2020-07-14, my current file

###############################################################################
##        mplayer for Windows x86_64-r38188+g6e1903938b    2020/07/14        ##
###############################################################################
##                                                                           ##
## soft:                                                                     ##
##   http://oss.netfarm.it/mplayer/                                          ##
##   http://mplayerwin.sourceforge.net/downloads.html                        ##
##   https://sourceforge.net/projects/mplayerwin/files/MPlayer-MEncoder/     ##
##                                                                           ##
## libs:                                                                     ##
##   mplayerhq.hu/MPlayer/releases/codecs/windows-all-20071007.zip (x86 only)##
##                                                                           ##
## info:                                                                     ##
##   http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.txt                       ##
##   http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html                      ##
##                                                                           ##
## file:                                                                     ##
##   <root mplayer.exe folder>\mplayer\config                                ##
##   <root mplayer.exe folder>\mplayer\codecs\  (x86 only, manually created) ##
##   <root mplayer.exe folder>\mplayer\input.conf                            ##
##   <root mplayer.exe folder>\mplayer\screenshots\       (manually created) ##
##   <root mplayer.exe folder>\mplayer\mencoder.conf                         ##
##                                                                           ##
## font:                                                                     ##
##   https://ftp.gnu.org/gnu/freefont/?C=M;O=D                               ##
##   https://savannah.gnu.org/projects/freefont/                             ##
##   https://mplayerhq.hu/MPlayer/contrib/fonts/                             ##
##   https://mplayerhq.hu/MPlayer/releases/fonts/                            ##
##   https://github.com/liberationfonts/liberation-fonts/releases            ##
##                                                                           ##
###############################################################################
##  open-cmd-here.cmd.: @%ComSpec%                                           ##
##  sendto-shortcut...: %AppData%\Microsoft\Windows\SendTo                   ##
##  mplayer options...: mplayer -list-options                                ##
###############################################################################

## process
# priority=belownormal|normal|abovenormal;
# abovenormal could help slow systems;
priority=normal

## performance
# (hardframedrop=yes) could held slow systems, but leads to image distortion;
# lavdopts=threads=1..8 (specify libavcodec decoding parameters);
framedrop=yes

## console
# (msglevel=all=4) and (quiet=yes) are the same;
# and they are useful in slow systems;
msgcolor=yes
msglevel=all=5

## output
# legacy: (vo=directx) (vo=directx:noaccel) (ao=dsound) (adapter=0);
# options: vo=direct3d|matrixview|caca|jpeg|png;
# alternative: (vo=gl) (vo=gl_tiled);
# (vo=caca) type on cmd: mode 150,50;
vo=direct3d
ao=win32

## window
# create the "screenshots" folder: mplayer/screenshots (letter 's' to save);
# nice dsize for 1366x768 display: dsize=1152:648:0;
# (mirror) and (rotate) are vf options;
# title="choose the window title";
# fs stands for "fullscreen";
vf=eq2,ass,screenshot=screenshots/scene,dsize=1152:648:0
use-filename-title=yes
ontop=no
flip=no
fs=no
#zoom=yes
#xy=1280
#x=640
#y=360

## playing
# (loop=-1, none) (loop=0, forever) (loop=n, times);
loop=-1

## on-screen display
# fontconfig-cache: %userprofile%\AppData\Local\fontconfig;
# font=fonts\font.desc;
# subfont=mplayer\subfont.ttf|monospace|sans|serif;
embeddedfonts=yes
fontconfig=yes
font="sans"
subfont="serif"
subfont-encoding=UNICODE
osd-fractions=0
osd-duration=1500
osdlevel=3
ass=yes
ass-hinting=0
ass-color=33FFFF00
ass-border-color=0000A0A
ass-use-margins=yes
ass-force-style=PlayResY=1280
ass-force-style=PlayResX=720
ass-font-scale=3
subfont-autoscale=3
subfont-osd-scale=3
subfont-text-scale=3
ffactor=1
spuaa=4

## regions
slang=pt,en
alang=en,pt
subcp=UTF-8
fribidi-charset=ISO8859-1
sub-fuzziness=1

## fixes
# (forceidx=yes) useful for files with broken index;
# (ni=yes) force treating files as non-interleaved;
forceidx=yes
ni=yes

## misc
#[protocol.dvd]
#profile-desc="profile for dvd:// streams"
#dvd-device="e:/"
#nocache=yes
#
#[protocol.dvdnav]
#profile-desc="Profile for reading DVD menus"
#dvd-device="e:/"
#nocache=yes
#

## inputs
# [add to mplayer\input.conf]
# MOUSE_BTN1 pause
# MOUSE_BTN2 vo_fullscreen
consolecontrols=yes
mouse-movements=yes
mouseinput=yes
joystick=no
lirc=no
ar=no

###############################################################################
## - # - # - # - # - # - #  -- this is the end!! --  # - # - # - # - # - # - ##
###############################################################################

cheers!

Nenhum comentário:

Postar um comentário