MAL - Memória Auxiliar do Lutieri

sábado, janeiro 10, 2009

Converter videos para iPhone/iPod Touch

Depois de muuuitas tentativas frustradas achei a combinacao perfeita para fazer a conversao de videos para um formato que o iPhone/iPod Touch aceita e melhor: roda com qualidade!!

Falando serio, depois de mais de 10 tentativas e combinacoes de parametros e valores usando o ffmpeg eu nao consegui fazer um danado de um video rodar no Ipod Touch. Tentei inclusive o Avidemux, que ja possui um perfil chamada iPod, tambem sem sucesso.

Tentei um Free Video Converter para windows sugerido pelo lifehacker.com. Preciso dizer que tambem converteu e nem se quer o iTunes aceitou?!

A brincadeira chegou a tal ponto que pra nao perder tanto tempo testando opcoes eu cortei um video de 42 minutos para 1 minuto. E ia convertendo esse video de apenas 1 minuto e testando no iTunes. Teve uma hora que funcionou o video de um minuto, ligeiramente criei um script e deixei o PC convertendo algo em torno de 20 videos de 40 minutos a noite toda. Pra minha surpresa no outro dia pela manha NENHUM do videos funcionou. "Funcinou" eh uma palavra muito generia, eu sei. Mas quando digo isso eh porque encontrei uma tela toda preta e apenas som ou o video era negado pelo iTunes por nao ser um formato reconhecido ou qualquer outro erro.

A solucao foi esta:

http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2006-June/003218.html

Essa com certeza seria minha ultima tentativa. Levei fe pois vi o comando comentado e por alguem que parece saber o que estava dizendo. Felizmente funcionou, porem com algumas modificacoes:

ffmpeg -y -i INPUT.xxx -vcodec libx264 -pass 1 -refs 3 -subq 5 -b 700kb -maxrate 768kb -bufsize 244kb -s 480x320 -r 23.976023976 -ac 1 -bf 0 -level 13 -acodec libfaac -ar 48000 -ab 160kb -ac 2 -threads 4 OUTPUT.mp4

  • Na versao sugerida no link acima ele nao usa nenhuma unidade de medida. E me parece que agora eh exigido. Portanto adicionei "kb" em varios lugares;
  • Outra alteracao foi a remocao do parametro "-me". Minha versao do ffmpeg atual nao reconheceu. Mas nao parece ter feito falta;
  • "rc_max_rate" que ele diz ser a opcao mais importante tambem nao foi reconhecida mas descobri que agora eh usado "maxrate" no lugar;
  • O mesmo aconteceu com "rc_buffer_size" que virou "bufsize";
  • Alterei tambem a resolucao para o tamanho da tela do Touch;
  • O nome dos codecs mudaram tambem: de "h264" para "libx264" e de "aac" para "libfaac";
  • Tambem mudei o valor da opcao "pass" para 1, do contraria reclamava que nao tinha um arquivo de log(nao faco a minima ideia do que se trata);
  • Por fim, transformei os dois comandos dele em um soh, o resultado eh o que estah ai em cima.
  • a opcao threads cria threads!! =) O tempo de conversao caiu em 10 minutos(de 31 para 21) com esta opcao.


Tudo o que sei sobre as opcoes usadas eh o que esta escrito no post dele. Nao entendo nada de videos eh realmente um assunto que nao tenho interesse.

Esta eh a saida do comando final:

$ ffmpeg -y -i chuck.107-caph.avi -vcodec libx264 -pass 1 -refs 3 -subq 5 -b 700kb -maxrate 768kb -bufsize 244kb -s 480x320 -r 23.976023976 -ac 1 -bf 0 -level 13 -acodec libfaac -ar 48000 -ab 160kn -ac 2 Chuck.S01E07.mp4
FFmpeg version SVN-r15615, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-static --enable-shared --cc=x86_64-pc-linux-gnu-gcc --disable-debug --disable-network --disable-optimizations --enable-libfaac --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --disable-demuxer=v4l --disable-demuxer=v4l2 --enable-x11grab --enable-libfaad --disable-ssse3 --disable-altivec --disable-mmx2 --cpu=athlon64 --disable-vhook --enable-gpl --enable-postproc --enable-avfilter --enable-avfilter-lavf --enable-swscale --disable-stripping
libavutil 49.11. 0 / 49.12. 0
libavcodec 52. 0. 0 / 52.10. 0
libavformat 52.22. 1 / 52.23. 1
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 1. 0 / 0. 1. 0
libswscale 0. 6. 1 / 0. 6. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Jan 6 2009 21:31:36, gcc: 4.1.2 (Gentoo 4.1.2 p1.0.2)
[NULL @ 0x62ad30]Invalid and inefficient vfw-avi packed B frames detected
Seems stream 0 codec frame rate differs from container frame rate: 23.98 (65535/2733) -> 23.98 (10000000/417083)
Input #0, avi, from 'chuck.107-caph.avi':
Duration: 00:41:26.44, start: 0.000000, bitrate: 1182 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 624x352 [PAR 1:1 DAR 39:22], 23.98 tb(r)
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
Output #0, mp4, to 'Chuck.S01E07.mp4':
Stream #0.0: Video: libx264, yuv420p, 480x320 [PAR 13:11 DAR 39:22], q=2-31, pass 1, 700 kb/s, 23.98 tb(c)
Stream #0.1: Audio: libfaac, 48000 Hz, stereo, s16, 160 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
[libx264 @ 0x62d120]using SAR=13/11
[libx264 @ 0x62d120]frame MB size (30x20) > level limit (396)
[libx264 @ 0x62d120]MB rate (14385) > level limit (11880)
[libx264 @ 0x62d120]using cpu capabilities: MMX2 SSE2Slow
Press [q] to stop encoding
[mp3 @ 0x62b700]mdb:87, lastbuf:0 skipping granule 0
[mpeg4 @ 0x62ad30]Invalid and inefficient vfw-avi packed B frames detected
[libx264 @ 0x62d120]VBV underflow (-2592 bits)e=14.43 bitrate= 860.5kbits/s
[libx264 @ 0x62d120]VBV underflow (-26136 bits)


Aparece um monte desse VBV underflow, nao sei o que eh, nem o que significa sei que funciona no final.

Fui...

Marcadores:

0 Comentários:

Postar um comentário

<< Home



Chat with Lutieri G. B.

Subscribe in a reader