Convertendo vídeos do Decodificador de TV Digital/PVR LB-SAT LBDTV10T para AVI no Linux

Com o surgimento da TV Digital no Brasil, no seu padrão ISDB-Tb (ou ISDB-International), vários conversores estão sendo vendidos a preços interessantes com a mais diversa gama de recursos. Um muito popular é o recurso de PVR (Personal Video Recorder – Gravador Pessoal de Vídeo), onde o aparelho grava em um disco rígido externo ou pendrive à programação de TV, como era o caso nos antigos videocassetes. No caso, iremos falar do decodificador LBDTV10T, da empresa LBSat. Esse é um produto a um preço razoável e que pode ser encontrado em boas casas especializadas em equipamento de TV (no caso, comprei em uma loja da Rua Vitória, uma das travessas da Santa Efigênia), e possui as seguintes características.

Características:

  • HDTV e SDTV
  • Instalação automática de canais
  • Menu na tela (OSD) – facilita a configuração do aparelho.
  • Saída HDMI para imagens em alta definição e áudio digital
  • Saídas S-Video, Vídeo Componente, vídeo e áudio estéreo
  • Saída de áudio digital óptica e SPDIF
  • EPG (Guia de Programação Eletrônica) Permite visualizar informações sobre os programas da TV. (Este recurso depende da transmissão pela emissora)
  • Programação de canais favoritos
  • Sintonia automática UHF para TV Digital – Canais 7 ao 69
  • Controle Remoto multifunção
  • Ajustes de Áudio / Vídeo / Volume
  • Seleção automática de voltagem – entre 100 e 240 Vac
  • Idiomas do menu: Português

Observações:
Antes de comprar o conversor, certifique-se de que a sua região já recebe as transmissões da TV Digital. Para captar o sinal digital corretamente é necessária a utilização de uma antena UHF, interna ou externa. A captação é restrita aos sinais da TV aberta, não incluindo, portanto, os sinais de TV por assinatura.
Especificações:

  • Resolução de vídeo : 1080i / 720p / 576i
  • Conexão USB para : MP-3, MP-4, Fotos. Através dela é possível reproduzir arquivos de músicas em MP-3, de vídeo MPEG-2, MPEG-4, e exibir arquivos de fotos JPEG.
  • Formatos de Tela : 16:9 e 4:3

É ótimo poder gravar vídeos em um HD externo, ainda mais se pensarmos que esses arquivos são acessíveis pelo computador como arquivos normais de vídeo. O problema é que a maior parte dos decodificadores (esse incluído) gravam o stream DTV recebido da antena diretamente (como se usasse um tee entre a saídea de vídeo e um arquivo no HD externo), o que envolve formatos proprietátios estranhos e convenções um pouco complexas. Mas com a ajuda do Google e do pessoal do Clube do LBDTV10T no HT-Fórum. Ainda não foi possível automatizar o processo devido a alguns problemas com o arquivo do decodificador, em especial na parte de áudio, mas tentarei fazer o melhor possível para expĺicar detalhadamente o processso de modo que você possa converter adequadamente os seus vídeos para usá-los no computador.
Esse tutorial foi elaborado em um Intel Core 2 Duo 2GHz, 3GB de RAM, 320 GB de disco, Ubuntu Linux Karmic Koala (9.10), com o repositório Medibuntu original e todos os pacotes de vídeos e áudio, incluindo os non-free e restricted. Você precisará ter instalado mencoder, mplayer, VLC e ffmpeg. Uma vez dito isso, vamos começar o processo.

1-) Encontrando o vídeo no disco e preparando-o para codificação

A primeira parte é encontrar e prepara o vídeo. Nesse caso, existe apenas uma sugestão: limpe o disco pelo decodificador (MENU -> Meu de Função -> Função PVR -> Formatar HDD). Caso contrário, você terá que descobrir o arquivo em meio aos diversos vídeos gravados e o modo como os vídeos são nomeados internamente pelo decodificador não ajuda. Os arquivos ficam gravados em uma pasta dentro do HD chamada PVR, em diretórios com o nome PVRXXXXX, (onde X são números hexadecimais), Dentro dessas pastas, existem pastas ~DATA/, onde vários arquivos DATAXX.trp (onde X são números normais). Esses arquivos são as várias partes do vídeo gravadas pelo decodificador. Isso ocorre pois, como ele formata os discos em FAT32 para maior eficiência, o tamanho máximo do arquivo é de 2 GB. Quando esse valor é superado, o decodificador cria um novo arquivo. Nesse caso, iremos fundir os arquivos com o seguinte comando em um terminal, dentro da pasta ~DATA/ do vídeo: cat DATA00.trp DATA01.trp DATA02.trp ... DATAXX.trp > convert.trp. Caso o vídeo tenha menos partes, basta usar menos arquivos. É só lembrar de listar todos os arquivos DATAXX.trp nesse comando. PS: não faça isso no disco do PVR! Copie os arquivos para uma partição Ext3/ext4/NTFS ou outro formato de arquivos mais avançado, caso contrário continuará com a limitação do tamanho de arquivo e não funcionará. Um comando alternativo seria cat DATA*.trp > convert.trp, mas não existe como garantir a seqüência dos arquivos.
Trabalharemos no caso com esse arquivo convert.trp. Ele é um arquivo em um formato chamado Transport Stream (TS), um encapsulamento do MPEG-2 para a transmissão contínua de arquivos, E conterá vídeo e áudio. Esse tutorial não irá aprofundar nos mecanismos de extração de áudio, uma vez que o TS permite vários canais de áudio e isso é usado em especial em vídeos (onde você pode colocar um canal de áudio em porutugês e um no idioma nativo do programa). No caso, nos restringiremos ao uso mais simples possível desse tutorial.

2-) Demultiplexação do vídeo original:

Um problema com o sistema de TV Digital Brasileiro é que ele utiliza na camada de áudio o formato HE-AAC, que não é muito bem suportado tanto por FFMpeg quanto por MPlayer/mencoder, os principais mecanismos de codificaçaão/decodificação/reprodução de vídeos e áudios em Linux. Porém, ele funciona muito bem no VLC e isso permite que utilizemos tal player para codificar o áudio.
A primeira parte então é demultiplexar o vídeo original, ou seja, separar as partes de vídeo e áudo do TS para que possamos trabalhar calma e corretamente com cada arquivo sem maiores problemas. No final desse processso, teremos um arquivo .mp4 (MPEG-4 AVC H264) e um outro arquivo de áudio .aac (MPEG-4 HE-AAC). Para esse processo, utilizaremos o Mplayer. Abra um terminal e, dentro da pasta ~DATA/ do vídeo desejado, use os seguintes comandos:

mencoder convert.trp -o convertVideo.mp4 -demuxer lavf -nosound -ovc copy
mplayer -dumpaudio -dumpfile convertAudio.aac convert.trp

Nesse momento, podemos reproduzir o vídeo no sistema para (1) testar se a demulplexação foi bem-sucedida e (2) verificar se o arquivo é o desejado. Para isso, digite mplayer convertVideo.mp4 e veja se está OK. Tudo OK, vamos para começar a trabalhar os arquivos.

3-) Codificação do áudio:

Um problema de fazer o processo de demultiplexação dos arquivos é que precisaremos optar por formatos de vídeo e aúdio individuais dos formatos de vídeo desejados, sem podermos recorrer a templates e outros esquemas que associem o vídeo e áudio a um formato. No caso, utilizaremos o AVI com vídeo XviD e áudio MP3. Nesse processo, iremos codificar cada parte separadamente e depois iremos multiplexar os arquivos no arquivo final, juntando ambos os arquivos de vídeo e áudio em uma saída final.
No caso, vamos focar primeiro na codificação do áudio, que iremos fazer usando o VLC. Esse passo justamente é o que impede criar-se um script para automatizar a codificação do arquivo, uma vez que VLC é um programa em iterface gráfica. Então, vamos ao passo a passo:

  1. Abra o VLC e vá no menu Mídia e escolha a opção Converter/Salvar;
  2. Na Aba Arquivo, clique em Adicionar. Na caixa de diálogo de arquivos, vá até a pasta PVRXXXXX/~DATA do vídeo desejado e escolha o arquivo convertAudio.aac desse ~DATA;
  3. Clique em Converter/Salvar. Na janela que abrir, na seção Configurações, escolha o perfil “Áudio – MP3“;
  4. Copie o conteúdo de Fonte (onde deverá ter o caminho completo para o arquivo de origem convertAudio.aac) para Destino e modifique a extensão para .mp3, de modo que fique convertAudio.mp3;
  5. Clique em “Iniciar“. Se quiser verificar as configurações, clique no ícone de chave de fenda, que irá apresentar as informações de codificação de áudio;

Agora, aguarde o arquivo ser codificado pelo VLC. Se preferir, teste o arquivo de saída com mpg123 convertAudio.mp3. Tudo estando OK, é hora de codificar o vídeo e encerrar o serviço.

4-) Codificar o vídeo e obter o arquivo final:

Agora codificado o áudio de saída em MP3, é hora de codificar o vídeo para XviD. No caso, também usaremos o mencoder para codificar o arquivo de saída de vídeo. Para isso, use o seguinte comando em um terminal na pasta PVRXXXXX/~DATA do vídeo desejado:

mencoder -o convertVideo.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=5000 -vf scale -zoom -xy 720 convertVideo.mp4

No caso, setei algumas poucas opções, entre elas -vf scale -zoom -xy 720, que permite codificar corretamente o vídeo para 720p. Se você preferir outras opções, dê uma pesquisada na Internet que configurações possam ser ajustadas para melhor resultado. O único objetivo aqui é obter uma saída de qualidade razoável. Atenção: esse comando foi baseado em sugestões para ripping de DVD obtidas em sites na Internet. Não sou um especialista em codificação de vídeos e não saberia informar a melhor combinação de parâmetros.
Se desejar, teste o vídeo no Mplayer como fizemos anteriormente. Uma vez tudo OK, você pode multiplexar (juntar) os arquivos de vídeo e áudio em um arquivo de saída com os comandos abaixo:

ffmpeg -i convertVideo.avi -i convertAudio.mp3 -acodec copy -vcodec copy convertFinal.avi
ou
mencoder -oac copy -ovc copy -o convertFinal.avi -audiofile convertAudio.mp3 convertVideo.avi

O resultado é o arquivo AVI com o nome convertFinal.avi. Esse arquivo é o resultado final, que poderá ser usado em outros formatos e gerar DVD e afins. Não vou entrar nesses méritos, mas muita documantação pode ser encontrada na Internet. Também não foi testado se a saída possui ou não perda de sincronismo entre o áudio e o vídeo. Aparentemente isso pode acontecer ocasionalmente e infelizmente não existe uma solução simples nesse caso. O que pode-se sugerir caso isso ocorra é ajustar-se o arquivo de áudio MP3, removendo alguns milisegundos de seu início e depois multiplexar novamente o vídeo.
Espero que esse tutorial tenha sido útil e que você possa obter o melhor de seu decodificador de TV Digital.