E eu lá sei editar vídeo?

Como sempre, tudo começa com a lilica!

O adestrador da Lilica me pediu se eu não conseguia editar uns vídeos pra ele colocar no site dele. Mas dessa vez ele não queria "o de sempre", mas algo mais sofisticado. Uns detalhezinhos a mais... É que andaram "roubando" [1] uns vídeos e fotos dele, editando pra retirar onde ele aparecia e usando na divulgação de outros adestradores. Ele queria então uma coisa simples: Colocar o nome dele no vídeo!

Err... pode até ser simples pra alguém com um mac ou com um 3d studio da vida... Mas no meu Ubuntu veio de guerra? Putz, tou lascado!

Bom, fui caminhando pelas pedras onde ja tinha trilhado... Comecei com o Avidemux, velho conhecido! Mas aí notei uma coisa, que não tinha notado da última vez: ele corta o final do áudio!!! sério, pergo uns 3 frames do áudio! Num vídeo sozinho, beleza, o final não serve pra nada mesmo. Mas quando faço edição e junto os vídeos, aí de mim. Fica tudo sambado, faltando pedaço.

Mas tudo tem solução... Eu me rendi à linha de comando, com o:


ffmpeg

Na verdade, tudo começa ANTES do ffmpeg :). Começa com o cat 🙂 sério! Descobri que juntar vídeos no formato AVI é a coisa mais ridícula do mundo! Basta um:

$ cat video1.avi video2.avi > video_nosync.avi

Err... Mas nem tanto né? tinha de ter um porem! Quando a gente faz isso, os players so reconhecem (e só tocam) o primeiro vídeo. Os outros ficam perdidos no arquivão. Então, seus problemas se acabaram-se, basta usar o super-ultra-power-legalzinho...


mencoder

Que nada mais é que o mplayer rodado na linha de comando. Ele sabe como re-indexar os AVIs pra que a emenda funcione melhor que o soneto 😉 basta um:

$ mencoder -forceidx -ovc copy -oac copy video_nosync.avi -o video_sync.avi

e seu video agora está magicamente unido e com os indices ressincronizados[2].

Aí, nesse ponto, eu voltava pro avidemux, inseria uma legenda gambiarrada (criava um arquivo SRT com uma única entrada que durava mais que o tempo do vídeo e manda inserir legenda). CLARO que o som sambava, então eu usava o ffmpeg pra reinserir o som do arquivo original, enfim uma gambiarra só. Além do que, ficava muito ruinzinho, aquela "legenda" com o nome do adestrador.

Mas é claro que tinha jeito melhor! Descobri que o ffmpeg pode usar umas bibliotecas chamadas vhook, e uma delas se chama magicamente:


watermark.so

Simmmmm!!! Marca d'água!!! E la vamos nós descobrir como usar!

Procura de lá, procura de cá! No final a única documentação que descobri foi, pasmem, os comentários do próprio código fonte (ê maldito mundo open source que abriga pessoais tais!). Enfim, descobri o que queria: Basta manter o fundo num tom de cinza assim:           [3]. Aí, o que for mais escuro que isso, ele "escurece" no vídeo, e o que for mais claro, ele clareia[4].

De posse das informações, lancei mão do querido e amado...


Gimp

Sim, o photoshop dos pobres e oprimidos, do governo Lulla e de quem mais for comunista, hippie sujo ou coisa que o valha! Pois então. Fui logo fazendo firula e inventando moda: Uma marca d'água em 3D ia ficar supimpa[5]. Pois então lancei mão de TODOS meus conhecimentos de Gimp! Mas foi fácil:

Primeiro, criei uma nova imagem do tamanh odo meu vídeo (640x480, no caso). Usando o baldinho de tinta derramado, pintei o fundo com o cinza #808080 lá de cima. Depois criei uma camada de texto (basta clicar na letrinha "A" na barra de ferramentas), e fui ajustando o tamanh oda fonte até ocupar bem a tela. Ajustei a posição do texto na tela (tem uma ferramentinha bacana ali na barrinha também que centraliza tudo pra nois, chamada Alignment tool, cujo qual o ícone é um quadradim com umas setas saindo em todas as direções.

Pode fazer a besteira que quiser com as letrinhas, A única coisa muito, mas muito importante, é de colorir elas de cinza! E adivinha qual??? O famoso cinza #808080 ;).

Agora sim, vamos no menu de "Filters", depois em "Distorts" e por fim "Emboss". Esse carinha é que vai dar o nosso efeito 3D. Ajuste seu "Emboss" a vontade. Eu pessoalmente usei os valores:

Azimuth 30.00
Elevation 40.00
Depth 3

Depois, pra dar um jeitinho de ficar mais transparente, eu ajusto o brilho e o contraste das letras, no menu Colors. No meu caso, eu usei um brilho de 50 e um contraste de -40. O lance é simples: quanto menor o contraste, mais transparente, e quanto maior o brilho, melhor aparecem as letras quando a cena do vídeo fica escura. Se quiser, dê uma brincada com os valores e escolha os que forem melhores pro seu vídeo.

Salve seu arquivo como GIF e parta pra usr, finalmente, o


ffmpeg

O lance todo é que eu ralei pra aprender a usar esse bicho, lendo man, vendo exemplos na internet etc e tal! E ficou até fácil: De posse do vídeo completo

video.avi

e do gif da marca d'água

logo.gif

, basta um simples comando:

$ ffmpeg -i video.avi -vhook '/usr/lib/vhook/watermark.so -f logo.gif' video_final.avi

Opa! Perai caceta!

Esse vídeo aí vai ficar comprimido com os valores "default" e vai ficar ruim pra cacete. Vamos melhorar essa situação. Eu gosto de alterar o fator de qualidade dele, e forçar o uso de mpeg4 (Divx, para os íntimos). Além disso, gosto do meu som em mp2 (o ffmpeg não comprime em mp3, pelo menos não no meu ubuntu) e com 128kbps. Então eu tasco logo assim:

$ ffmpeg -i video.avi -vhook '/usr/lib/vhook/watermark.so -f logo.gif' 
         -vcodec mpeg4 -qmax 6 -acodec mp2 -ab 128 video_final.avi

Cara, isso tá quase perfeito! Só falta uma coisinha atoa pra ficar demais:


Trilha Sonora

Atenção:

Muito cuidado com a trilha sonora pois invariavelmente ela estará protegida por direitos autorais.

Isso mesmo! Cuidado com a trilha! Para uso pessoal, não comercial, a lei permite que você copie pequenos trechos de uma obra (e isso inclui a música, assim como qualquer coisa!), mas para uso comercial ou trechos grandes são proibidíssimos de serem copiados.

Trocando em miúdos: copiar 30 segundos de uma música para incluir no vídeo do batizado do seu filho pode! Copiar a música inteira num vídeo que será vendido, não pode NEM FODENO[6]! Qualquer coisa entre um e outro, use o bom senso. Se a música tem só 30 segundos, aí não rola de copiar 29 segundos dela, né?

Enfim, de posse do seu bom senso ou do telefone do seu advogado, escolha a música a ser usada. Eu vou escolher uma música que seja livre ou em domínio público, pra não me dar mal nesse exemplo 😉

Hum.. achei no domínio público umas músicas em domínio público (duh!). Vou usar uma clássica que vocês logo vão reconhecer 😉 E como está em domínio público eu nem mesmo preciso dizer quem é o autor, olha que maravilha 🙂[7]

Então de posse da música, só o que preciso é mixá-la com o som original. Pra isso eu uso o audacity, que é um editor de audio muito do bão :). Mas antes, claro, extrair a trilha de audio do nosso vídeo original. Pra isso, claro, ffmpeg to the rescue:

$ ffmpeg -i video_final.avi -vn -acodec copy saida.mp2

Agora a gente abre os dois audios com o audacity (ele tem interface gráfica, viu? Abrir significa tão somente ir no menu "File" e dar "Open"), mixe os dois sons[8] e salve num novo arquivo! A idéia é copiar da trilha sonora um trecho com o tamanho exato do audio original do vídeo. Eu gosto de dar um ganho de -10dB[9] para o audio original, assim a trilha sobressai sem esconder todo o som. Algumas coisas que podem ser necessárias: reduzir o numero de canais (de estéreo pra mono), alterar o "sample rate" dos dois audios para ficarem iguais (use 48000 ou 44100 que são valores "padrão") e por fim mixar mesmo!

Depois de devidamente mixada (e com o tamanho certo do video), basta trocar a trilha de audio do video original:

$ ffmpeg -i audio_com_trilha.mp3 -i video_final.avi -acodec copy -vcodec copy video_com_trilha.avi

E com isso podemos...


Juntar tudo

e fazer mais um belíssimo vídeo da Lilica. O vídeo vocês já conhecem, do youtube (e quem não conhece ainda vai conhecer), mas agora ele vai ser garibado com marca d'água e trilha sonora! Então vamos lá:

Primeira coisa que fiz foi preparar minha marca d'água. É essa daqui ó:

marca d'água

marca d'água

Depois, juntar os vídeos... Ops... esqueci! Os vídeos estão em MPG e preciso passar eles pra avi antes de juntar... Então vamos lá:

$ for file in *.MPG; do ffmpeg -i $file -acodec copy -vcodec copy -f avi ${file%.*}.avi; done

Aí sim posso juntá-los:

$ cat MOV0036*.avi > tmp_unsync.avi
$ mencoder -forceidx -ovc copy -oac copy tmp_unsync.avi -o tmp_sync.avi

Preparar a trilha sonora é à parte, então vamos extrair o audio:

$ ffmpeg -i tmp_sync.avi -acodec copy -f wav audio_orig.wav

que depois de editado no audacity virou

audio_final.wav

.

E fazer a grande cartada que é juntar tudo (som, vídeo e marca d'água) de uma vez só:

$ ffmpeg -i audio_final.wav -i tmp_sync.avi 
         -vhook '/usr/lib/vhook/watermark.so -f watermark.gif' 
         -vcodec mpeg4 -qmax 6 -acodec mp2 video_final.avi

Et voilá! O resultado final, aqui no youtube (ou disponível pra download no meu site http://www.girino.org/tutorial_video):

Resultado final, que tal?


Notas

  1. ? Na verdade o termo correto seria violação de propriedade intelectual e do direito de imagem, mas vá lá.. se Até a RIAA fala que é roubo, porque eu não posso 😉
  2. ? Seja lá o que isso for...
  3. ? Pra quem não sacou é a cor #808080, em código de cores do HTML. Ou seja, intensidade 128 em todos os bytes de cor RGB. Mais mastigadinh oque isso eu nem sei explicar!
  4. ? Em termos mais técnicos ele soma os valores dos pixels (Ou será que o plural de píxel é píxeis? Vai saber...) em cada frame com a diferença entre o pixel correspondente da imagem e o valor RGB 0x808080
  5. ? eita gíria véia...
  6. ? segundo o adestrador isso é gíria de mineiro...
  7. ? No domínio público essa música está em formato midi e eu usei o timidity pra transformá-la em um formato que o ffmpeg reconheça...
  8. ? Vou ficar devendo essa, fica pra outra aulinha!
  9. ? na verdade uma atenuação, mas vá lá...

--girino 23:14, 24 Janeiro 2008 (BRST)

2 thoughts on “E eu lá sei editar vídeo?

  1. Variante para o efeito marca d'água:
    Tentei utilizar sua dica no meu Ubuntu 8.04, porém sem resultado.
    Partindo da sua dica, cheguei até aqui:
    http://ffmpeg.mplayerhq.hu/hooks.html#SEC4
    e usando o "imlib2.so" foi até mais fácil, bastou criar uma imagem .png e apontar com coordenadas X e Y para a posição dela, inclusive tem a opção de movimentá-la (mas não tentei fazer).
    é isso aí, fica meu complemento

  2. Pingback: Marca d’água em vídeos | Vinicius Cordeiro

Leave a Reply