DLNA com legendas via Mediatomb (Linux) em Smart TVs

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:

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:

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:

Fim!

One thought on “DLNA com legendas via Mediatomb (Linux) em Smart TVs

  1. Muito boa dica, funcionou muito bem. Agora tenho uma dúvida, como faço para corrigir problemas de codificação da legenda com essa solução?? As palavras com acentuação estão aparecendo com caracteres especiais.

Deixar uma resposta