Olá pessoal,
recentemente ganhei um MP3 Player, um Creative Zen V Plus de 4Gb. Comecei a brincar nele e vi que podia automatizar algumas coisas com scripts, claro. Por enquanto, me preocupei em resolver o problema sobre como converter vídeos (no meu caso, entrevistas do Channel9 e palestras no YouTube e Google Video) para o formato utilizado no meu player.
Pra minha surpresa, o formato que ele lê é simples: AVI sem compressão nenhuma, algo como uma sequencia de arquivos bitmap. Não entendo muito disso e posso estar falando besteira... mas não encontrei nenhuma documentação no site da Creative. Isso chateia porque é filmes pequenos ficam enormes devido à falta de compressão. Testei com um de 50 minutos e ele se transformou em um monstro de 850Mb!
Depois de brigar bastante com o software da própria Creative para converter meus vídeos, encontrei uma solução na Internet de como usar um programinha chamado ffmpeg. O problema é que ele gerava arquivos com a imagem e as cores invertidas. Ainda no mesmo site, há um relato de que ao executar o comando mais uma vez sobre o mesmo arquivo o vídeo normalizava, mas ainda havia o problema do player travar quando se tentava deslocar para uma posição mais à frente (seek).
Em um dos meus testes, descobri como resolver o problema. Agora consigo converter videos perfeitamente, tanto filmes comuns quanto arquivos FLV e WMV também! Descobri quando esqueci acidentalmente do parâmetro -r na segunda vez que executava o ffmpeg. Veja como converter:
ffmpeg -i arquivo.mpg -vcodec rawvideo -acodec adpcm_ima_wav -r 12 -s 128x128 -pix_fmt rgb24 out.avi
ffmpeg -i out.avi -vcodec rawvideo -acodec adpcm_ima_wav -s 128x128 -pix_fmt rgb24 out2.avi
Note que os parâmetros tem que ser os mesmos, basta retirar o frame-rate. Sabendo do comando que funciona, criei um script pra isso, o movie2zen.ps1. Ele recebe como parâmetro o filme e, opcionalmente, o framerate e a resolução. Veja:
Param([string]$input_movie, [int]$rate = 12, [string]$resolution = '128x128') $tempname = $input_movie + '.temp.avi' $outname = $input_movie + '.out-zen.avi' .\ffmpeg.exe -y -i $input_movie -vcodec rawvideo -acodec adpcm_ima_wav -pix_fmt rgb24 -r $rate -s $resolution $tempname .\ffmpeg.exe -y -i $tempname -vcodec rawvideo -acodec adpcm_ima_wav -pix_fmt rgb24 -s $resolution $outname rm $tempname
Agora, para converter um filme:
.\movie2zen filme.mpg
ou ainda
.\movie2zen filme.mpg 15 '128x96'
Para converter uma pasta inteira:
cd c:\filmes-curtos
ls | foreach {.\movie2zen $_}
Note que eu dei antes um CD para a própria pasta para que os filmes gerados saiam na mesma pasta de origem. Meu script apenas gera um segundo arquivo com o sufixo '.out-zen.avi'.
Até a próxima!
PS: Se alguém quiser me ajudar e revisar a versão em inglês que estou fazendo deste tutorial, eu ficarei muitíssimo agradecido! =).
Comentários
Postar um comentário
Anônimo : Ola Vinicius,
Chegas-te a usar o programa 'Creative Video Converter'? É que eu comprei um Creative Zen V Plus, e nao estou a conseguir colocar videos lá... tento converter e o programa nao converte...
Será que me podes ajudar? [11/8/07 18:32 - link]
Anônimo : Deixo aqui o meu email para o caso de poderes ajudar...
daniel_pt100@hotmail.com [11/8/07 18:36 - link]
Vinicius Canto : Olá Ruben,
depende do vídeo... e do humor do programa da Creative também.
Cheguei às seguintes conclusões:
1) Ele dá a mesma mensagem de erro sempre, não importa a falha que tenha acontecido.
2) Ele falha na maioria das vezes com arquivos .mpeg. Sugiro converter antes ele pra AVI usando o ffmpeg (ffmpeg -i original.mpeg modificado.avi) e depois usar o programa da Creative
3) Ele também falha quando falta espaço em disco pra gerar o vídeo. ex: Vinicius tem um webcast de 30 minutos para converter, o que dá um video de mais ou menos 1Gb. Se no disco rigido não tiver ao menos 1gb pra ele fazer a conversão, ele falha...
As mensagens de erro são sempre "Conversão sem sucesso", em Inglês.
O problema é que os meus testes com o ffmpeg, embora funcionem, ainda estão meio desanimadores. Meus videos com o ffmpeg ainda não ficam tão pequenos quanto os feitos no programa da Creative... o que eu descobri é que eles usam uma compactação diferente da minha tanto no audio quanto no video. No video pq ele converte para 15 frames/segundo e para 128x128 e ainda assim fica menor que o meu em 12fps e 128x96. O audio eu tenho certeza que é diferente também porque, no Winamp, ele acusa a existencia de um "ACM Filter", que eu não entendi bem o que é... mas sei que vem do audio.
Ainda estou investigando o que fazer... mas não sei o que fazer até descobrir qual o codec que a Creative usa. Se tiver algum progresso, entre em contato comigo...
Espero ter ajudado,
Vinicius
PS: Ah, parabéns pelo Zen! É realmente o melhor MP3 player baseado em memória flash que existe até o momento! Nem o iPod é tão bom... =) [12/8/07 01:13 - link]
Anônimo : ola vinicius eu estava com mesmo problema que vc sobre o tamanha dos videos no zen v plus ... se vc puder me adicionar no msn ( pq eu estou com algumas duvidas )pra gente troca 1 ideia ... eu fico grato .. valeus ... muitatretta@hotmail.com [4/4/08 15:15 - link]
Anônimo : Eu tenho procurado uma forma de sincronizar um Zen V pelo Itunes. Por acaso você já conseguiu fazer isso? Tem interesse em tentar desenvolver algo?
Abraço,
Nagüeva Guilherme
http://blog.nagueva.com [7/7/08 11:32 - link]
Hugo Mendes™ : Existe alguma programa para converter os videos com tamanho res=duzido sem ser por linha de comando?
hugodqm@hotmail.com [17/10/08 10:45 - link]