O problema

Recentemente comprei uma Smart TV LG. Para ser mais cômodo, instalei o Mediatomb no meu Linux para poder acessar meus vídeos via compartilhamento DLNA, porém não consegui visualizar as legendas deles. Imagino que o problema está tanto no protocolo (que fuçando rapidamente não parece especificar nada a respeito), quanto na implementação de servidor e de cliente. Vi que conseguiram modificar o Mediatomb para prover legendas para TV Samsung, que implementa extensões proprietárias ao protocolo original, mas não achei nada sobre TVs LG. A única solução que vi por aí é usar transcoding e recodificar o video com legenda em tempo real. Sério? Isso não me parece uma boa solução, porque vai consumir o processamento da máquina e também porque vai diminuir a qualidade do vídeo. Fora essa proposta, não achei nenhuma outra.

A ideia

Já que a legenda precisa estar dentro do vídeo, então a minha melhor opção seria achar uma forma de colocá-la nele sem precisar recodificar. Já tinha lido um pouco sobre o formato MKV – quem costuma baixar vídeos já se deparou com esse tipo de arquivo – que não é um formato de vídeo e sim um container de vídeo. Aí é que está o pulo do gato: ele pode conter vídeo, áudio e legendas! Com isso, já temos o formato de saída do nosso arquivo com legendas. Mãos à obra.

A execução

Mais pesquisas na Internet me mostraram que existe um aplicativo chamado mkvmerge (disponível nos Debian no pacote mkvtoolnix), cuja função é criar os arquivos MKV que precisamos, juntando fontes de áudio, vídeo e legendas. Só que ele é tem muitas opções! Por sorte existe um outro aplicativo gráfico chamado mkvmerge-gui onde você fala o que quer dentro do arquivo e ele, além de gerar, também te mostra as opções da linha de comando! Com isso, dei uma limpada no que era desnecessário, e criei um script simples onde você passa o nome do arquivo de vídeo e o diretório de destino do arquivo gerado e ele monta um arquivo MKV com o vídeo legendado (desde que a legenda tenha o mesmo nome do arquivo de vídeo). O script ficou assim:

Ainda não está exatamente perfeito, mas já funciona bem para o que precisamos (qualquer coisa, proponha alterações no github!)

Usando

Com isso, é só pegar um vídeo com a legenda com o mesmo nome do vídeo e gerar um MKV em algum diretório que você tenha configurado para o mediatomb carregar. Por exemplo:

E olha só, é bem rápido! Era disso que eu precisava!

Extra

Configurando o  Mediatomb para mostrar um frame do vídeo como capa

Se quiser que a sua TV mostre um frame como capa do vídeo, é só habilitar uma configuração do mediatomb em /etc/mediatomb/config.xml, na seção extended-runtime-options:

<ffmpegthumbnailer enabled="yes">
  <thumbnail-size>128</thumbnail-size>
  <seek-percentage>5</seek-percentage>
  <filmstrip-overlay>yes</filmstrip-overlay>
  <workaround-bugs>no</workaround-bugs>
</ffmpegthumbnailer>

Adicionar uma marca para indicar vídeo já visto

Essa configuração é legal para saber se você já assistiu um vídeo ou não. Ele vai colocar um asterisco antes do nome do arquivo. A configuração fica na mesma seção extended-runtime-options da dica anterior:

      <mark-played-items enabled="yes" suppress-cds-updates="yes">
        <string mode="prepend">*</string>
        <mark>
          <content>video</content>
        </mark>
      </mark-played-items>

Recomeçando o vídeo de onde parou

Para ser honesto, não sei bem se foi isso que eu mexi que fez com que os vídeos pudessem ser reiniciados à partir de onde eu parei, mas acho que sim. :) Acho legal ativar essa opção uma vez que não dá para avançar ou voltar o vídeo. A configuração é basicamente habilitar extensões de protocolo:

<protocolInfo extend="yes" />

Fim!

Tags: , , , ,

Comments No Comments »

Comments No Comments »

Sorry, this entry is only available in Português.

Tags: , , , , ,

Comments No Comments »

VID_20121218_094243.m4v Watch on Posterous

Fogo no prédio aqui do lado. E eu, antes de  ver, só sentindo o cheiro e pensando: só faltava agora o computador queimar…

Comments No Comments »

Page optimized by WP Minify WordPress Plugin

%d bloggers like this: