MPlayer cropdetect

Tagged:  •    •    •  

Muitos dos vídeos que baixamos da web apresentam incompatibilidades com o sistema (geralmente falta de um plugin) ou player em uso. Uma vantagem do Linux é o fato de que a maioria dos players existentes, como o MPlayer, executam sem maiores dificuldades grande parte, senão todos os formatos e codificações existentes (incluindo os nativos para Windows e até mesmo DVD's protegidos utilizando a libdvdcss).

Muitas vezes encontramos incompatibilidades específicas e problemas menores que podem ser corrigidos pelo próprio player. Vídeos (principalmente DVD's) são formatados para serem exibidos em telas widescreen, mas quando a tela do monitor não é widescreen acabamos com duas faixas (ou tarjas) negras (nas partes superiores e inferiores do vídeo) ocupando parte do que deveria ser apenas o vídeo. Alguns desses arquivos, com o exemplo abaixo, simplesmente não se enquadram nas especificações da tela do monitor e temos como resultado um quadro pequeno (fora de escala) com o vídeo e o resto da tela em negro (área útil desperdiçada).

Para corrigir este problema (e o problema das tarjas dos DVD's) basta executar o MPlayer com a seguinte sintaxe:

$ mplayer arquivo.avi -vo x11 -vf cropdetect

No caso acima utilizamos um filtro desenvolvido para este fim para calcular os limites entre o vídeo e as áreas que queremos descartar. O "video output" x11 (genérico) é utilizado porque alguns dos drivers existentes, como o gl2, não suportam o filtro em questão (que usamos para delimitar as áreas úteis do vídeo).

Como resultado, nos logs do terminal, teremos os parâmetros recomendados pelo filtro:

[CROP] Crop area: X: 40..611  Y: 62..432  (-vf crop=560:368:46:64).
[CROP] Crop area: X: 40..612  Y: 62..432  (-vf crop=560:368:46:64).
[CROP] Crop area: X: 39..612  Y: 62..432  (-vf crop=560:368:46:64).
[CROP] Crop area: X: 39..612  Y: 62..432  (-vf crop=560:368:46:64).
[CROP] Crop area: X: 38..613  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 38..613  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 37..614  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 36..614  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 36..615  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 36..615  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 35..615  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 35..616  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 35..616  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 34..617  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 34..617  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 33..617  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 33..618  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 32..618  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 32..619  Y: 62..432  (-vf crop=576:368:38:64).
[CROP] Crop area: X: 31..619  Y: 62..432  (-vf crop=576:368:38:64).

Após alguns segundos, já de posse de uma amostragem boa da área que queremos, cancelamos a exibição e re-executamos o vídeo informando a área útil utilizando o filtro crop, neste caso seria o seguinte:

$ mplayer arquivo.avi -vf crop=576:368:38:64

Como resultado:

Assim ficamos só com a informação útil, ou seja, o próprio vídeo, que pode inclusive ser exibido em "full screen" ou ainda reformatado para telas normais ou mesmo widescreen.