você está aqui: Home  → Arquivo de Mensagens

Convertendo vídeo para tocar no seu smartfone

Colaboração: Bruno Buys

Data de Publicação: 15 de November de 2008

O formato mais comum de vídeo para celulares é o 3GPP (http://www.3gpp.org). É possível que celulares mais avançados toquem outros formatos, mas eu não tenho como testar isso, porque o meu Motorola toca e grava nesse formato.

A conversão é feita em três etapas: extrair o vídeo, extrair o áudio e depois juntar ambos no novo arquivo .3gp.

Os comandos a seguir assumem que você vai converter o arquivo "filme.avi".

Extraindo vídeo para o arquivo novofilme.avi

  mencoder filme.avi -nosound -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=352:288 -o novofilme.avi -ofps 11

OBS - Os fatores usados no 'scale' são otimizados para a tela do meu celular. E eles têm que respeitar as limitações do codec H263 que será usado no último passo. Veja mais detalhes na man page do ffmpeg, ou no erro que ele vai dar se você usar resoluções incompatíveis.

OBS 2 - O valor para fps (quadros por segundo) não gera erros no codec, mas o vídeo feito pode não ser tocável pelo player do celular. Depois de alguma tentativa e erro, descobri que 11 fps é o máximo aceito pelo realplayer que vem no meu Motorola.

Extraindo áudio para o arquivo audiodump.wav

  mplayer -vo null -ao pcm:fast -vc null -af resample=8000,volume=+4db:sc 'filme.avi'

OBS - O resampleamento em 8KHz é uma demanda do codec. O 4db é um aumentozinho no volume.

OBS 2 - Evite nomes de arquivos estranhos ou complicados, ou contendo espaços. Se este for o caso, use aspas simples. filme.avi nem precisaria, mas estou colocando, como exemplo.

Multiplexando vídeo e áudio no arquivo final

  ffmpeg -i novofilme.avi -i audiodump.wav -b 256k -ac 1 -ab 12.2k -map 0.0 -map 1.0 -r 11  novofilme_para_o_celular.3gp

OBS - Dá para brincar com os parâmetros desse comando. Experimente e veja o que funciona melhor para você. Em minhas tentativas, tanto o ffmpeg quanto o codec foram bem tolerantes a variações na taxa de bits de vídeo (-b 256k), de áudio (-ab 12.2k) e frames de vídeo (-r 11). Só que quanto aos fps, novamente, o problema é o player do celular.

Se alguma coisa der errado

Os players que vêm nos telefones não são tão configuráveis quanto os programas para computador. Se o player do celular estiver reclamando do arquivo, faça o segunte:

  • grave um vídeo com o seu celular, e certifique-se de que o celular toca o vídeo direito. Parece bizarro, mas nunca se sabe... :P.
  • transfira o arquivo gravado para o computador.
  • estude os metadados do arquivo gravado e tente identificar as diferenças entre o arquivo que a gravação do celular gera e o arquivo que você está fazendo e que não está tocando.
  • Reconfigure os parâmetros dos comandos acima para gerar arquivos o mais parecido possível com o que o celular gera.

Para ver metadados de arquivos, recomendo o exiftool, um script porreta em perl que lê uma infinidade de formatos de arquivos e de metadados (não só exif). Veja o site dele nas referências. E está nos repos debian também. Abaixo um exemplo de metadados de arquivo .3gp:

  bruno@hercules:/arquivo/3gp$ exiftool filme.3gp
  ======== filme.3gp
  ExifTool Version Number         : 7.30
  File Name                       : filme.3gp
  Directory                       : .
  File Size                       : 6 MB
  File Modification Date/Time     : 2008:11:01 15:42:00
  File Type                       : MP4
  MIME Type                       : video/mp4
  Version                         : 0
  Create Date                     : 0000:00:00 00:00:00
  Modify Date                     : 0000:00:00 00:00:00
  Time Scale                      : 1000
  Duration                        : 03:00
  Preferred Rate                  : 1
  Preferred Volume                : 100.00%
  Preview Time                    : 0 s
  Preview Duration                : 0 s
  Poster Time                     : 0 s
  Selection Time                  : 0 s
  Selection Duration              : 0 s
  Current Time                    : 0 s
  Next Track ID                   : 3
  Track Version                   : 0
  Track Create Date               : 0000:00:00 00:00:00
  Track Modify Date               : 0000:00:00 00:00:00
  Track ID                        : 1
  Track Duration                  : 03:00
  Track Layer                     : 0
  Track Volume                    : 0.00%
  Graphics Mode                   : srcCopy
  Op Color                        : 0 0 0
  Compressor ID                   : s263
  Image Width                     : 352
  Image Height                    : 288
  X Resolution                    : 72
  Y Resolution                    : 72
  Bit Depth                       : 24
  Video Frame Rate                : 10.0
  Media Header Version            : 0
  Media Create Date               : 0000:00:00 00:00:00
  Media Modify Date               : 0000:00:00 00:00:00
  Media Time Scale                : 8000
  Media Duration                  : 03:00
  Media Language Code             : und
  Handler Type                    : Audio Track
  Handler Description             : SoundHandler
  Balance                         : 0
  Audio Format                    : samr
  Audio Channels                  : 2
  Audio Bits Per Sample           : 16
  Audio Sample Rate               : 8000
  Image Size                      : 352x288

Referências

Feliz hacking!



Veja a relação completa dos artigos de Bruno Buys

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script