De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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!