O transcode é o canivete suíço da
manipulação de arquivos multimídia no Linux. Com sua arquitetura modular, ele
oferece ao usuário muito mais do que a simples conversão entre formatos...
por Jörn Reder
O transcode [1] é um verdadeiro canivete suíço
que converte arquivos de um formato de vídeo para outro. Também pode ser usado
para outros tipos de manipulação de vídeo, como redimensionamento de quadros. Se
você está esperando que uma ferramenta de conversão de vídeos tenha uma
interface gráfica bonitinha, prepare-se
para se desapontar. O programa funciona apenas na linha de comando e é operado
com uma porção de parâmetros em modo texto. Como a maioria das ferramentas que
não possuem interface gráfica, a maior vantagem do transcode é sua flexibilidade
e seu maior ponto fraco é a usabilidade. Os que preferem fazer tudo graficamente
podem escolher numa lista um front-end que ofereça uma interface amigável para
seus recursos especiais (ver tabela 1). Mas nenhum desses programas consegue
abarcar plenamente o poder dessa venerável ferramenta. O transcode tem uma
estrutura estritamente modular. As funções críticas residem em módulos externos
que só são
chamados quando necessário. Há três tipos diferentes de módulo, que correspondem
às três etapas do processo de conversão de arquivos quando feito por esse
programa:
Os módulos de entrada (ver tabela 2) têm a função de decodifi car arquivos de
vídeo
e áudio e entregá-los ao transcode
“crus” sem qualquer pós-processamento ou formatação (raw format). Há diferentes
módulos para codecs individuais de áudio e vídeo, assim como para captura de
vídeo vindo das populares placas de TV. A etapa seguinte aplica módulos de
filtro (ver tabela 3) aos dados brutos entregues pelos módulos de entrada. Os
filtros não apenas modificam os dados de imagem e som existentes, como também
podem adicionar ou remover quadros para alterar a sincronia entre o vídeo e o
áudio. Na etapa final, o transcode passa os dados para um ou mais módulos de
saída (ver tabela 4), que os codifi cam por meio de uma variedade de codecs de
áudio e vídeo e criam o arquivo no formato desejado.
Conversões simples
O seguinte comando do transcode converte um arquivo MPEG1 ou MPEG2 para um
arquivo AVI no formato MPEG4:
![]()
O transcode usa a biblioteca XviD nativa do Linux para esse trabalho. A biblioteca é veloz e confiável, e quando usada sabiamente pode superar em muito os codecs comerciais no tocante à qualidade. Este exemplo simples demonstra as duas opções mais importantes: -i e -o indicam os arquivos de entrada e saída, respectivamente; -y ajusta o filtro de exportação de vídeo para xvid4 e -w configura a taxa de bits (ou bitrate) do vídeo para 500 kbit/s. Como o transcode exporta áudio em MP3 a 128 kbit/s por padrão, precisamos apenas ajustar a taxa de bits da faixa de som para 48 kbit/s usando a opção -b. Finalmente, a opção -V diz ao transcode que use o espaço de cor YUV e não RGB. Isso acelera os cálculos internos em quase 30%. Porém, há alguns filtros que só funcionam no espaço de cor RGB. Se esse for o caso, o transcode emitirá uma mensagem de erro se você tentar estipular a opção -V.Adivinhando a taxa de bitsA taxa de bits do vídeo é o fator que decide a qualidade do produto final. Você precisa de diversos parâmetros, como a altura e a largura (em pixels) do quadro e o número de quadros por segundo para calcular o valor BPP (Bits Por Pixel). A fórmula é: Taxa de Bits x 1000 / (Altura x Largura x Quadros por segundo).Obviamente, a qualidade de um vídeo depende em grande parte da qualidade do material original (cenas rápidas/lentas, muito/pouco contraste etc.); mas você pode adotar como regra que um valor de BPP de cerca de 0,20 oferecerá uma qualidade aceitável e evitará a artificialidade.
Valores abaixo de 0,15 afetarão a qualidade da imagem visivelmente. O transcode,
na verdade, ajusta o valor de BPP segundo as configurações que você selecionar
(na linha V: bits/pixel). Se o valor for muito baixo, é melhor sair do transcode
pressionando [Ctrl]+[C] e tentar novamente com um valor mais alto.Melhor
prevenir do que remediarO transcode suporta a conversão em múltiplos passos para
codecs MPEG4. Para conseguir uma melhor distribuição da taxa de bits ao longo de
um vídeo, o programa primeiro analisa o material e cria um arquivo de log. O
segundo passo analisa o arquivo de log e faz o trabalho de conversão. Você pode
habilitar os passos múltiplos especificando a opção -R; é preciso especificar se
esse é o primeiro ou o segundo passo. A listagem 1 traz um exemplo.


Uma vez que o primeiro passo só fará a análise
do vídeo, a opção -y xvid4,null desabilita a função de exportação de áudio. Isso
acelera o processo em mais de dez por cento.Análise versus tentativa e erro como
a conversão adequada de vídeos depende de material-fonte de alta qualidade, o
transcode oferece uma coleção de ferramentas para análise de arquivos de vídeo e
exibição de suas características técnicas críticas. O comando tcprobe dá uma
rápida visão geral (veja o exemplo no quadro “Resultados do tcprobe”).De acordo
com o tcprobe, o arquivo fonte tem uma resolução de 320x240 pixels e uma taxa de
quadros de 29.97 (comum a sistemas NTSC) quadros por segundo. Além disso, o
arquivo tem uma faixa de áudio mono de 44.1 khz com uma taxa de amostragem de
16-bit (como indicado por -e 44100,16,1 – um arquivo estéreo mostraria
um 2 como último dígito). A faixa de áudio é codificada em MP2 – infelizmente
isso não é óbvio; é preciso analisar o parâmetro -n (nesse caso -n 0x50) para
descobri-lo. 0x55 significa codificação MP3 e 0x2000 significa áudio em AC3. A
taxa de bits do áudio está configurada para 48 kbit/s. Como o transcode usa a
codificação de 128 kbit/s por padrão, é boa política diminuir manualmente essa
taxa para 48 kbit/s, uma vez que um valor mais alto não aumentará a qualidade de
saída, mas certamente aumenta o tamanho do arquivo.Os valores entre colchetes
nas informações mostradas pelo tcprobe indica as configurações padrão do
transcode. O programa usará esses valores se você lhe passar dados brutos com
valores de formatação que ele não reconheça.Pequeno, mas poderosoA capacidade de
redimensionar imagens é outro recurso muito útil – ele permite criar um preview
de um arquivo muito grande disponível para download. O transcode oferece para
isso diversas funções; a mais simples usa a opção -Z e pede os valores de
largura e altura. O comando a seguir reduz o tamanho da imagem à metade, para
160x120 pixels, sem usar o método de múltiplos passos:

O parâmetro fast manda o transcode usar um algoritmo interno de redimensionamento que pode afetar levemente a qualidade da imagem e que tem algumas restrições. Por exemplo, a largura e a altura da imagem têm de ser divisíveis por 8. Se não forem, o programa voltará ao método padrão. A opção -w 125 também é importante; ela reduz a taxa de bits do vídeo. Como o exemplo reduz a a largura e a altura, a imagem só ocupará um quarto do tamanho original; isso equivale a um quarto da taxa de bits.Advertência: Gravação da TVUsuários com gravadores de vídeo digitais – as chamados DVRs, ou Digital Video Recorders – rodando no Linux podem querer armazenar as gravações feitas a partir da TV em um formato de alta compressão como XviD ou MPEG4. O transcode também pode ajudar nisso; porém, precisa de uma ajudazinha do VDRsync [2]. Embora o transcode consiga lidar com um arquivo DVR diretamente, problemas com sincronização de áudio e vídeo são bastante comuns; o Vdrsync pode resolver esses problemas antes mesmo de você começar. O seguinte comando cria dois arquivos a partir de uma gravação DVR para permitir o armazenamento separado das faixas de áudio e de vídeo:

O nome do arquivo de saída pode variar. Neste exemplo, o script criou um arquivo de vídeo chamado e4.mpv e um arquivo de áudio chamado c0.mpa. Agora o transcode pode manipular a ambos.
Visão limitada. Se o material do filme estiver em formato Letterbox, você vai notar barras pretas no alto e embaixo da tela. Como a barra preta é um desperdício de espaço, provavelmente

você vai preferir que o transcode a elimine. Esse é um processo em duas etapas: primeiramente, o transcode precisa analisar o tamanho das barras e descobrir suas posições exatas. Para fazê-lo, ele usa o filtro detectclipping. A listagem 2 traz um exemplo.O que o transcode faz aqui, na verdade, é inspecionar cada quadro individualmente e mostrar os resultados na linha de comando. Quando o resultado parar de mudar, o transcode terá encontrado as

configurações corretas. Em nosso exemplo, o
parâmetro -j 58,10,56,6 manda o programa remover 58 linhas do topo, 10 à
esquerda, as últimas 56 e as 6 linhas à direita da imagem.Infelizmente, você não
pode usar esses valores assim como estão, pois o tamanho final da imagem não
seria divisível por 16 (exigência da maioria dos codificadores, e o XviD não é
exceção). Algumas contas simples ajudarão. Para ficar mais simples ainda, vamos
apenas ignorar os poucos pixels à direita e à esquerda e nos concentrar em cima
e embaixo. Se removermos 56 linhas em vez de 58, estaremos
removendo um total de 112 linhas. 576 linhas num quadro PAL, menos 112, dá 464,
que é divisível por 16: dá certinho.
Resta-nos portanto -j 56,0,56,0; podemos encurtar isso para: -j 56. O programa,
por padrão, corta a imagem simetricamente.EntrelaçamentoEntrelaçamento é uma
palavra comum em tecnologia de vídeo. Quando o vídeo está entrelaçado, as linhas
pares e ímpares da imagem são exibidas alternadamente: em um quadro só as pares,
no outro só as ímpares – o que é bem normal nas TVs. Quando você exibe uma
imagem num monitor de PC, os resultados são ruins porque os objetos em movimento
tendem
a criar “fantasmas” ou o chamado “efeito pente”. Para rebater esse problema, a
maioria dos reprodutores ou conversores de vídeo usa uma função de
desentrelaçamento.

O transcode usa o filtro 32detect (ver listagem 3) para detectar se o vídeo inclui quadros entrelaçados.O transcode mostra uma linha para cada quadro. Se houver quadros com interlaced = yes, é bom usar o filtro de desentrelaçamento. O lado ruim é que a codificação leva muito mais tempo neste caso. O transcode tem um filtro smartyuv, a versão com velocidade otimizada do filtro smart deinterlacer do VirtualDub para o espaço de cor YUV. O VirtualDub é um popular programa do Windows® que faz algo similar ao transcode. O filtro tem uma porção de opções que você pode explorar, mas os ajustes padrão funcionam bem na maioria dos casos.Mastigando númerosPara poupar ainda mais espaço, queremos não apenas remover as barras pretas


como também diminuir o tamanho da imagem. Vídeo no padrão PAL tem uma resolução
original de 720x576 pixels, mas o tamanho da imagem é distorcido de modo amorfo
quando ela é exibida numa tela de PC, já que a proporção é de 5:4, e não de 4:3
(usada nos monitores). A maior parte dos media players corrigirá isso
automaticamente, mas o objetivo é produzir um arquivo AVI com a proporção
amigável ao PC (e às TVs analógicas que representam a esmagadora maioria dos
aparelhos no Brasil) de 4:3. A distorção é ainda maior com vídeo no formato
16:9. Claro que se podem aplicar os cálculos para 16:9 tão facilmente quanto
para 5:4. As figuras 1 a 4 trazem um passo-a-passo.
A primeira coisa que precisamos fazer é corrigir a proporção. Precisamos expandir a imagem lateralmente por um fator de (4/3)/(5/4) ou (1.33/1.25= 1.06). A imagem cresce em 6% e agora tem 768 pixels de largura. O próximo passo é mandar o transcode remover as barras negras no topo e na parte debaixo da tela, que ocupam 56 pixels cada; o resultado é uma imagem com a altura de 464 pixels. Mandamos então o transcode reduzir a imagem de 768x464 pixels para uma largura de 640 pixels; é um fator de 1.2. A imagem resultante tem 640x386 pixels e, por isso, precisamos reduzir a altura para 384, o valor mais próximo divisível por 16. O fator de distorção introduzido é invisível para o olho humano. Algumas contas simples apontam o seguinte comando para converter uma gravação original de um DVR para um pequeno vídeo no formato XviD:

A opção -p adiciona a trilha de áudio (as
trilhas de áudio e vídeo estão armazenados
em arquivos distintos) ao arquivo. A taxa de bits do vídeo é de 1650 bits por
segundo, que combinada com a resolução selecionada dá um valor BPP de 0,267, o
que é uma qualidade alta o suficiente para nossos fins.Flexível e poderosoEste
artigo apenas roça a superfície do grande conjunto de recursos oferecidos pelo
transcode. O programa vem também com uma coleção de práticas ferramentas de
linha de comando, apresentadas na tabela 5. Consulte as listas de discussão do
transcode [3]; elas são uma útil fonte de informações sobre o programa.

