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)

Wordlists, hackintosh e coisas diversas...

Terminei o ano de 2007 com 400 a 500 acessos diários. Comecei 2008 com cerca de 50. Motivo? Exclui minhas wordlists do google usando o robots.txt[1] e as ferramentas do google para webmasters.

Alguém poderia argumentar que mais hits são melhores pra mim, mas meu site "vive" de propaganda e o download direto de um arquivo não traz nenhum lucro, e gasta minha banda. E minha motivação pra ter o site não é econômica ("lucrei" apenas uns 50 reais nesses 9 meses de site), é prática: tenho controle total sobre meu site pessoal, posso fazer dele o que bem entender. Poderia ter um blog aqui, um fotolog acolá, uma wiki sei-la onde. Mas não quero, quero controle das minhas coisas, dá licença?

Quando a gente põe alguma coisa na web, um blog, fotos, etc, a gente quer é reconhecimento. E as wordlists não tem nem mesmo uma referência ao meu nome, meu site, nada! Procuravam no google, baixavam a wordlist, e nem descobriam que eu existia.

Em resumo, eu gastava banda e não ganhava nada em troca. Tirei do google, tenho menos acesso, mas pelo menos as buscas no google que retornam meu site ficaram mais fáceis de monitorar, e posso continuar distribuindo as wordlists pra quem REALMENTE precisa de uma.

E pro isso, resolvei aumentar minhas wordlists:

Wordlists com a wikipedia

Sim, isso mesmo. Usei o banco de dados da Wikipedia pra gerar wordlists novas. Ficaram gigantescas. A wordlist em português[2] tem quase 2 milhões de palavras. A wordlist em inglês[2] tem uma ordem de grandeza a mais. Comparado com minhas wordlists bobinhas antigas, são monstrengos enormes. MAs tenho algumas idéias pra fazer no futuro (se não for mais um projeto que eu vou abandonar, claro):

  • Contar a freqüência das palavras e fazer wordlists menores com as palavras mais frequentes.
  • Fazer wordlists a partir de blogs, sites de notícias e sites de relacionamentos.

Porque desse último? Porque a linguagem da wikipedia é bem mais "formal" que a linguagem usada no dia a dia da internet. E se alguém quer uma wordlist, sabemos todos pra que é: avaliar segurança de senhas (ou quebrar senhas mesmo, vá lá). Senhas tem maior probabilidade de serem encontradas na linguagem do dia a dia do que na linguagem formal da wikipedia. Alias, nas 3 senhas aqui de casa (minha, da Anita e da minha mãe) a wordlist da wikipedia em portugûes não achou nenhuma. Tenho certeza que com uma baseada em blogs o resultado seria bem diferente.

Mas claro que eu interrompi o trabalho no meio proque surgiu algo mais interessante pra fazer:

Meu Hackintosh

Pra quem não sabe, MacOSX é o sistema operacional mais metrosexual do mundo. E como bom metrosexual, ele é altamente seletivo: só roda em computadores da Apple. Só em computadores da Apple? Não! Uma pequena tribo de gauleses... err... estória errada... Não! Tudo que é proteção desse tipo está fadada a cair nas mãos dos piratas[3]. E dessa vez não foi diferente: o OSX ganhou o osx86, que é um patch pra rodar osx em qualquer micro x86.

Como eu tinha em minhas mãos um DVD de instalação do macos, resolvi experimentar. Preparei tudo segundo os tutoriais e quando tudo estava pronto, bootei meu lindo e maravilhoso OSX recém instalado! Mas... hum.. infelizmente... nem tudo funcionou! A rede por exemplo não foi reconhecida nem com os drivers mais novos! O vídeo, por outro lado, funcionou, porque o OSX tem suporte a VESA. Só que... apenas na resolução de 1024x768. E meu monitor é widescreen! Resultado: tudo deformado. Briguei durante um tempão com o vídeo, e nada! Por fim, desisti. Já estava com a intenção de trocar minha placa de vídeo, que não tem suporte 3D no Linux, por uma melhorzinha. Agora tenho mais um motivo: fazer o hackintosh ficar bonitinho!

A rede eu resolvi fácil: desmontei um micro velho e "ranquei" a placa 3com que tinha nele. Rebootei o hackintosh e... voila! reconheceu NA HORA! já entrei navegando. E o bicho é bonitinho mesmo! Os icones pulando[4], o arco-iris giratório[5], as telas se contorcendo pra minimizar[6]. Tudo muito bacana. Os softwares com uma aparência impecável. Nada do visual "pesado" do windows (principalmente do vista, que parece que precisam abusar dos recursos da máquina pra dizer que o negócio presta). Tudo com aparência leve e desimpedida[7]. Gen-te... A-MEI!!!. Sério, dá pra notar a diferença no enfoque. Parece que levam o KISS a sério, sem abrir mão do design.

Enfim, fiquei satisfeito com o resultado. Quando tiver "tempo" ($$$) pretendo investir numa nova placa de vídeo que seja suportada pelo bichinho e ver como fica com uma resolução decente. Quem sabe no futuro até compre um mac[8]. Além do que, o Muriloq postou no blogue dele um videozinho do linux embirobando que nem o OSX que me deu água na boca: será que consigo o melhor de dois mundos? Um SO aberto e flexível que seja biíto ingual macos? Veremos, veremos, fica pra outra estória num outro "senta que lá vem a estória".

Notas

  1. ? Mais informações de como fazer isso em robots.txt
  2. ? 2,0 2,1 Quer dizer, tem um monte de palavras extrangeiras no meio tanto da em português quanto da em inglês. É que na wikipédia tem os tais interwikis que referenciam outras wikipedias. Além é claro de palavras estrangeiras usadas no meio dos textos e em citações.
  3. ? espero que entendam que quando digo piratas estou sendo irônico! Sou totalmente a favor e apoio a galera que faz engenharia reversa em hardware e disponibiliza meios totalmente legais de se instalar um software em outra plataforma.
  4. ? gay!
  5. ? GAY!
  6. ? GAAAAAYYYYYYYYY!!!!!!!!!!
  7. ? BOIOLA, PEROBA, VIAAAAADDDDDDDOOOOOOO mesmo!!!!
  8. ?Carol?

--girino 16:19, 7 Janeiro 2008 (BRST)

Fedora 8: First Impressions

Não lembro mesmo onde vi, acho que no Slashdot, Digg ou algum lugar assim. Era um comentário sobre o Fedora 8 ser melhor que o Ubuntu. Curioso, resolvi experimentar. Baixei primeiro os live cds, e depois o DVD de instalação. Instalei, claro numa máquina virtual (tou usando VirtualBox depois que eu descobri. Apesar de menos completo que o vmware, é mais user friendly e é open source, o que me deixa tendencioso a usá-lo 🙂 Anyway,aqui vão minhas primeiras impressões:

Instalação default (Gnome)

  • Comparando com o Ubuntu 7.10 (que é o que eu estou acostumado) achei mais pesado, mas usável numa máquina moderna.A inicialização demora mais, e a coisa toda parece mais carregada. Comparando o tamanho dos HDs nas máquinas virtuais, vejo que ocupa mais espaço também (4.5Gb contra 3.5Gb do ubuntu). O sistema de atualizações/instalação de pacotes é mais lento, mas nada que atrapalhe demais. De resto, está muito bom. No mesmo nível do ubuntu. A tela de login, alias, é mil vezes mais bonitinha. Kudos pro Fedora (mas ainda não me fez sair do ubuntu não). Tem um porém de "purismo". No Ubuntu é muito mais fácil instalar softwares proprietários. O Fedora te implora pra usar Ogg/Vorbis no lugar de MP3, mas no final deixa você fazer o que quer. O sistema de instalador do debian (apt-get, que é o padrão do ubuntu) também é mais flexível pra quem é fuçador.
feature Fedora 8 ou Ubuntu 7.10 comentário
Instalador pau a pau, com ligeira vantagem pro ubuntu O fedora começa com uma tela de texto (curses) pra depois entrar em modo gráfico. O Ubuntu cai no modo gráfico direto.
"peso" do sistema ligeira vantagem pro Ubuntu Não testei em uma máquina antiga, mas o Ubuntu ficou mais leve na VM que eu usei. Ocupou também menos espaço em disco.
Tela de login Fedora, de longe! A tela de login do Ubuntu é "unix like" demais. A do Fedora é bem bonitinha, já com a lista de usuários (que no ubuntu precisa ser habilitada depois) e num quadrinho azul bem desenhado, com fontes e icones bacanas.
Sistema de atualizações Ubuntu I just love Debian/apt-get ;). Não me conformo com o apt-get não ser o padrão em todos os linuxes 😉
codecs, drivers proprietários, etc ligeira vantagem pro ubuntu Porque é menos burocrático

Só que o Fedora não é só Gnome! Então resolvi comparar o KDE com o Kubuntu:

Instalação KDE

Na verdade, não é uma nova instalação. Basta habilitar o KDE no instalador de pacotes e boas. Tudo se instala (o ubuntu tem os pacotes do kubuntu, mas nesse ponto ele é realmente mais burocrático. Ponto pro Fedora). Instalei em português, porque uma coisa que tinha notado na casa da minha sogra é que o kubuntu em português CHUPA TEMPO GRANDE, cheio de partes mal traduzidas e erros de tradução. Fiquei Satisfeitíssimo! Tradução muito boa e completa. Não vi ainda nenhuma frase em inglês. Kudos triplos pro Fedora. Também fiquei satisfeito de não ver a mistureba Gnome/KDE que é o kubuntu. Dependendo do que se instala o synaptic aparece no meio dos menus do KDE. Enfim, o atualizador/instalador do Fedora é melhor integrado com o KDE.

Pra mim, sinceramente, nesse quesito não precisa d etabela comparativa: Fedora é MUITO MELHOR que o kubuntu. Lembrando, claro, que é mais pesado, logo não recomendo pra computadores antigos. Mas nesses eu provavelmente iria com uma distro baseada em Xfce, como o Xubuntu. Alias, não avaliei o fedora com Xfce, mas pra ser imparcial teria de reinstalar APENAS com o xfce e ver se fica pesado.

Alguém sabe se existe um jeito de simular uma maquina "mais lenta" com vmware, VirtualBox ou similar?

--girino 16:05, 1 Janeiro 2008 (BRST)

Coisas que precisam ser blogadas com urgência

Tava hoje fuçando as estatísticas de acesso no meu site (que quadruplicaram desde o dia 18 de dezembro, não sei porque) e achei no meio das string de buscas mais usadas:

  • nes fores speed grodd ground

Se tem algúem com a MANHA total de inglÊs é ocara que procurou por este jogo no meu site[1].

Notas

  1. ? o cara deveria estar buscando Need for Speed Underground.

--girino 15:38, 24 Dezembro 2007 (BRST)

Update

Mais coisas estronhas:

  • orgonograma da empresa representado por passaros cagando
  • escoteiro viadim
  • horrorosa mocreia apavorante gordurosa parece mais um elefante
  • dablio dablio dablio ponto baixaki ponto com ponto be eri

Sonho Esquisito

Putz,

Hoje a noite tive um sonho esquisitíssimo! Sonhei que:

Minha irmã quer entrar pra legião estrangeira

Vou contando o que me lembro...

Começou num piquenique, estávamos num campo de gramíneas meio ressecadas e arbustos retorcidos, bromélias, etc. O chão era meio rochoso e acidentado, tinha várias colinas. Se fosse pra chutar, chutaria aquelas paisagens bucólicas das regiões mediterrâneas. Dado o resto do sonho, chuto ser no sul da França... E minha irmã deixa cair um folheto da pasta dela. Curioso, fui ver o que era, e falava de provas e testes, pensei logo que era um vestibular. Mas ela logo me mostrou os homens fortinhos de uniforme militar camuflado e me disse:

Daí a pouco me vi conversando com uma instrutora/personal trainer que tínhamos contratado pra treinar minha irmã pra prova da legião. Ela me fazia perguntas cabulosas, como se eu tivesse autoridade pra decidir sobre a vida da minha irmã. Perguntou se era pra fazer o treinamento com água ou sem água (e nisso se seguiu uma longa discussão sobre os efeitos de tomar água durante o treinamento físico e se ela deve ser gelada ou não, mas não lembro bem dos detalhes), tempo de treinamento, tipo de treinamento, se era pra fazer preparação psicológica, se era pra fazer preparação pras provas teóricas (esse eu lembro de dizer que não precisava, que o fraco dela era a parte física mesmo).

No final, paramos na porta do quartel/centro de recrutamento da legião onde vários recrutas entravam para se inscrever e fazer os testes. Ali encontramos minha irmã, que não estava presente desde o momento do piquenique. E começamos a contar pra ela sobre o que discutíamos. Conversamos em francês com alguns recrutas, mas minha irmã ficou calada. Eu insisti pra ela falar em francês porque adorava o sotaque do sul da França que ela tinha[1], mas ela insistia em ficar calada. Acho que meu subconciente sabia que não conseguiria reproduzir corretamente o sotaque dela, por isso não deixou ela falar!

Acho que o sonho terminou aí mesmo, porque me virei de lado e a Lilica estava na cama, e eu espremi ela e ela esperneou e me acordou. Mas fica o registro do sonho esquisito onde minha irmã decide entrar pra legião estrangeira.

Ponderações soltas

  • Algumas semanas atrás eu conversei sobre a legião com o adestrador da Lilica,. Quando jovem ele pensou em se alistar, mas acabou optando por ficar na PM mesmo. (Ele não durou muito na PM porque não deixaram ele trabalhar com cães, que sempre foi a especialidade dele. Ele acabou virando adestrador como particular mesmo. Hoje ele é dos mais antigos adestradores de Brasília e a maioria dos adestradores mais novos fez curso ou treinamento com ele).
  • Eu andei pesquisando sobre a legião na internet mais ou menos na mesma época, isso tudo deve ter acumulado no meu subconciente.
  • Minha irmã me chamou ontem no MSN e eu estava offline.
  • A personal trainer parecia com a Lila, da maracujá, só que vestida com roupa militar camuflada.
  • Eu lembro de durante o sonho ter comentado sobre o salário do legionário ser de 2 mil euros, mas na verdade é de 1205 euros, podendo chegar a 3567 se for enviado em missões fixas no estrangeiro[2].
  • A Sede da legião hoje em dia fica em Aubagne, no sul da frança. Meu subconciente deveria se lembrar disso e por isso escolheu a paisagem mediterrânea. Acabei de descobrir que em Aubagne é só o quartel general. O centro de recrutamento, que é onde deveríamos estar fica em Nogent-sur-Marne, na região parisiense.

Notas

  1. ? Ela morou em Toulouse quando criança, por isso tem um sotaque bem diferente do meu que é de voyou de banlieue parisienne.
  2. ? salários da legião estrangeira

--girino 11:09, 20 Dezembro 2007 (BRST)

ECMAScript, Avidemux e vídeos da Lilica

Mais uma vez a Lilica fez showzinho nesse sábado. Mas sabe como é? Colocar dúzias de filminhos de 30 segundos no seuTubo é um porre, e no final ninguém vê nenhum deles. (eu ia por o vídeo no final, mas como tem um script enoooooooorme por lá, ninguém ia ver, então resolvi por ele aqui mesmo):

Vídeo da apresentação da Lilica com os comandos mais "legais".

Resolvi então "brincar" de editar os vídeos, pra fazer um videozão resumo do show todo que ficasse mais bacana. Mas que ferramenta usar????

Avidemux

Bom, de cara eu pensei no avidemux. É que tempos atrás quando procurei por um jeito de embutir legendas em vídeos no linux, eu acabei me deparando com ele (no windows eu usava o virtualdub, mas como meu notebook foi doado e eu não uso software pirata, agora estou usando o ubuntu em casa). Quem conhece o virtualdub vai gostar: é praticamente a mesma coisa, só que com uma interface mais amigável. E parece que existe pra windows também.

Em termos de funcionalidades, não chega a ser o bambambam, mas faz quase tudo. Claro que nada é de graça! Dá uma trabalheira fazer qualquer coisa nele. Mas ontem, nessa mexida toda, descobri uma coisa fantástica: Dá pra fazer scripts em ECMAScript que automatizam todo o processo de edição de vídeos!

ECMAScript

ECMAScript, pra quem não sabe, é o famoso Javascript. Quer dizer, quando roda dentro de um browser da Netscape, chama Javascript. Quando roda no IE, chama JScript, e quando roda em qualquer outro lugar chama ECMAScript. Mas é a mesma porcaria!

Scripts pro avidemux são super simples (as opções são bem limitadas) e o único inconveniente que eu achei é que eu tenho de saber o número de frames de cada arquivo com antecedência. Deve ter outro jeito, mas não achei :(. Quem quiser aprender, tem um tutorialzinho bacana em http://www.avidemux.org/admWiki/index.php?title=Scripting_tutorial.

A única coisa chata são os codecs, que pedem uns parâmetros em formatos estronhos! Mas consegui uma manha pra configurá-los: Eu crio um projeto "dummy" pela interface gráfica e mando salvar o projeto. O resultado é um script que eu posso usar como "cola" no meu. No final ficou até bacana. Dá pra otimizar ainda, mas por enquanto ficou assim:

//AD  <- Needed to identify//
 
var app = new Avidemux();
var dir = "/home/girino/Desktop/backup_foto_video/show_lilica_14_dez_2007";
var tmp_prefix = "/tmp/asdf_";
 
var silence_file = dir + "/silence.mp3";
 
var movies = new Array(
dir+"/01-cumprimenta.avi",
dir+"/02-rastejando.avi",
dir+"/03-morta.avi",
dir+"/04-urso_sem_guia.avi",
dir+"/05-urso_com_guia.avi",
dir+"/06-rolando.avi"
);
var sizes = new Array(
199,
622,
1522,
367,
406,
537
);
var images = new Array(
dir+"/slides/01-cumprimenta.png",
dir+"/slides/02-Rastejando.png",
dir+"/slides/03-Morta.png",
dir+"/slides/04-urso1.png",
dir+"/slides/05-urso2.png",
dir+"/slides/06-rolando.png",
dir+"/slides/XX-final.png"
);
 
var final_list = new Array();
var final_sizes = new Array();
var final_fade = new Array();
 
// *** functions *** //
// prepares fade out scenes
function record_temp_video(video, pos, temp, size) {
	print("**** record_temp_video begin");
	print("**here0 = " + video);
        app.load(video);
	print("**here1");
        app.clearSegments();
        for (var i = 0; i < size; i++) {
                app.addSegment(0,pos,1);
        }
	print("**here2");
        app.video.setFps1000(25000);
        app.video.codec("Mjpeg","CQ=4","8 5a 00 00 00 00 00 00 00 ");
        app.audio.reset();
	print("**here3");
        app.audio.load("MP3",silence_file);
        app.audio.codec("lame",64,12,"00 00 00 00 03 00 00 00 02 00 00 00 ");
        app.audio.normalizeMode=0;
        app.audio.normalizeValue=0;
        app.audio.delay=0;
        app.audio.mixer("MONO");
        app.audio.resample=32000;
        app.setContainer("AVI");
	print("**here4");
        app.save(temp);
	print("**** record_temp_video end");
}
 
var tmp_counter = 0
function make_movie(image, length) {
	var tmp_name = tmp_prefix + tmp_counter;
	tmp_counter++;
 
	print("*** make_movie begin");
	// makes the temp video
	record_temp_video(image, 0, tmp_name, length);
	print("*** make_movie end");
 
	return tmp_name;
}
 
function make_fade_out(movie, size, length) {
	var tmp_name = tmp_prefix + tmp_counter;
	tmp_counter++;
 
	print("*** make_fade_out begin");
	// makes the temp video
	record_temp_video(movie, size-1, tmp_name, length);
	print("*** make_fade_out end");
 
	return tmp_name;
}
 
// initializes with 10 frame fade in of first image
final_list[final_list.length] = make_movie(images[0], 10);
final_sizes[final_sizes.length] = 10;
 
var i = 0;
for (i = 0; i < movies.length; i++) {
	// title image
	print("*** i = " + i);
	print("*** images[i] = " + images[i]);
	final_list[final_list.length] = make_movie(images[i], 40);
	final_sizes[final_sizes.length] = 40;
	final_fade[final_fade.length] = 1;
	// movie
	final_list[final_list.length] = movies[i];
	final_sizes[final_sizes.length] = sizes[i];
	final_fade[final_fade.length] = 1;
	// fade out
	final_list[final_list.length] = make_fade_out(movies[i], sizes[i], 10);
	final_sizes[final_sizes.length] = 10;
	final_fade[final_fade.length] = 0;
}
 
// ends with credits
final_list[final_list.length] = make_movie(images[i], 50);
final_sizes[final_sizes.length] = 50;
final_fade[final_fade.length] = 1;
 
// now adds them all in the right order
app.load(final_list[0]);
for (i = 1; i < final_list.length; i++) {
	app.append(final_list[i]);
}
 
// appends segments
app.clearSegments();
for (i = 0; i < final_list.length; i++) {
	print("*** adding:");
	print(i + " : " + final_sizes[i]);
	app.addSegment(i,0,final_sizes[i]);
}
 
// filters
var pos = 0;
// first filter is fade in
pos = pos + final_sizes[0];
app.video.addFilter("fade",
			"startFade="+(pos-10),
			"endFade="+pos,
			"inOut=1",
			"toBlack=1");
for (i = 1; i < final_list.length; i++) {
	pos = pos + final_sizes[i];
	if (final_fade[i] == 1) {
		app.video.addFilter("fade",
				"startFade="+(pos-10),
				"endFade="+pos,
				"inOut=0",
				"toBlack=0");
	}
}
// final fade to black
app.video.addFilter("fade",
		"startFade="+(pos-10),
		"endFade="+pos,
		"inOut=0",
		"toBlack=1");
 
// save video
app.video.codec("FFMpeg4","CBR=1000000","140 05 00 00 00 00 01 00 00 02 00 00 00 1f 00 00 00 " +
                                            "03 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 " +
                                            "00 00 00 00 01 00 00 00 00 00 00 00 cd cc 4c 3d " +
                                            "01 00 00 00 0a d7 23 3c 01 00 00 00 00 00 00 3f " +
                                            "00 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 " +
                                            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                                            "02 00 00 00 40 1f 00 00 00 00 00 00 00 00 00 00 " +
                                            "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                                            "00 00 00 00 00 00 00 00 00 00 00 00 ");
 
// and audio
app.audio.reset();
app.audio.codec("lame",64,12,"00 00 00 00 03 00 00 00 02 00 00 00 ");
app.audio.normalizeMode=0;
app.audio.normalizeValue=0;
app.audio.delay=0;
app.audio.mixer("MONO");
 
// and save
app.setContainer("AVI");
app.save(dir + "/saida.avi");
setSuccess(1);
app.Exit();
 
//DEBUG
print("**** BEGIN ****");
print(movies.length);
print(final_list.length);
print(final_list);
print(final_sizes);
print("**** END ****");
 
 
//End of script

O resultado, vocês já viram lá em cima!

--girino 00:35, 19 Dezembro 2007 (BRST)

Internet Radio

Tou sumido, confesso! Agora entro de férias e devo aparecer mais um pouco por aqui. Vamos deixar por aqui então as novidades:

Pirenópolis

Semana passada fomos a pirenópolis. Fotos?

Talvez eu crie coragem e escreva uma resenha.

Internet Radio

Minha brincadeira desse final de semana foi por uma "rádio" pra funcionar na internet. Pra quem quiser ir dando uma olhada, se eu tiver online o endereço da radio é esse:

Pra quem tem menos preguiça, conto a estória completa:

Comecei tentando conectar no servidor de um colega com o [shoutcast http://www.shoutcast.com/]. Cara, já tentaram achar um cliente de shoutcast decente no linux? Eu tentei e digo: Que merda! Tentei tudo que achei. Soluções que usavam o jackd, como:

  • Internet DJ Console (Não consegui inserir arquivos na playlist, mas chegou a funcionar num dado momento usando o driver "dummy" do jackd, ou seja, os outros ouviam a radio, mas eu nao :()
  • DJPlay (que eu não consegui descobrir como mandar ele conectar)

Num dado momento, apelei. Decidi que o icecast deveria ser melhor integrado com o ubuntu, certo? Errado! Quando eu finalmente consegui fazer a radio funcionar no icecast2 (porque os clientes nativos do ubuntu nao sao compilados usando LAME, e por isso so usam ogg/vorbis) usando xmms2, descobri que quando passava de uma musica pra outra o player que tivesse conectado perdia a conexão e o ouvinte tinha de conectar de novo (é mole?). Isso já era 4 da manhã de ontem! Resolvi deixar pra hoje.

Briguei ainda um pouco pela manhã, mas sem sucesso. Quer dizer, tive sucesso. Fiz um servidor de icecast2 rodando ogg/vorbis e tudo mais, só pra descobrir que no windows ninguém tem codec ogg/vorbis instalado! Grandes meldas minha rádio né? que ninguém ia ouvir porque só o otário aqui usa linux!

Por fim, apelei: fui no site do shoutcast e, pasmem, descobri que ele tem um server e um cliente de linha de comando pra linux. Não é open source, claro. Mas funciona! Ralei um pouco pra editar os arquivos de configuração, que não são muito fáceis. Mas em 2 ou 3 horas consegui! Server e cliente rodando perfeitos. Neguim do windows e do linux (e do mac... o carlão acessou) acessando! Show de bola. Acessem aí: http://amsx.no-ip.org:8008/

--girino 22:37, 9 Dezembro 2007 (BRST)

Monitor novo, paginação e outras notícias...

De presente de casamento, ganhei um monitor novo. Um Samsung SyncMaster 931BW. Dessa vez, finalmente, nenhum dead pixel! Considerando a briga com o submarino com o monitor da Phillips com dead e stuck pixels (no final acabei devolvendo e recebendo a grana de volta) achei quase um milagre abrir a caia e ele estar perfeito. Nem massagem ou coisa do gênero precisou!

Aproveitei o monitor novo e fiquei até de madrugada no micro. Implementei, como podem ver, um esquema de paginação no blog (o mediawiki já suportava isso, só precisei aprender a usar) e acrescentei os widgets do linkTo pra ver se traz mais algum público pro blog, que anda mesmo meio parado. Pelo menos o numero de hits parece ter aumentado bastante. Vamos ver.

--girino 16:23, 24 Novembro 2007 (BRST)

BH, Hospital, Paella, etc...

Fui, feliz da vida passar o final de semana prolongado (sim, sim, funcionário público tem essas mamatas de ponto facultativo pra emendar feriado) em BH. A Anita tava lá já desde o último feriado e eu fiquei de ir "buscá-la". Lá fui eu então, no Expresso pão de queijo.

No ônibus

A coisa já começou bem. Na minha frente, um moleque com a madrinha. Ela, uma dessas patricinhas acima do peso que não para de falar. Ele um moleque perguntador que não para de falar e atrapalha todo mundo de ver o filme. A menina do meu lado com um fone de ouvido tocando música a toda altura. Pelo menos era MPB, e outras coisas aceitáveis que não atrapalharam meu sono.

Lá no fundo do ônibus, a favela. Meus preconceitos todos ativados a pleno vapor. Uma turma que parecia um time de futebol, ou algo do gênero. Todos de boné com o óculos escuro por cima do boné. Todos afro-descendentes[1]. Camisas abertas pra mostrar os cabelos peitudos[2]. Todos com uma latinha de cerveja vagabunda na mão. Todos gritando, falando alto e correndo pelos corredores do ônibus pra conversar com os colegas que estavam na outra ponta do ônibus, ou com um sujeito mais velho que devia ser o "treinador". Se início, achei que era dessa vez que íamos ser assaltados, mas no final relaxei. Se fossem assaltantes estariam mais tensos, não fariam tanta bagunça pra não "aparecer". Era só um time de futebol adolescente ou algo que o valha mesmo.

Sei que no final, o pior de todos foi o garoto! A favela só incomodou antes da partida e na parada do ônibus, quando gritavam e conversavam a toda altura. Quando o ônibus andava, ficavam todos quietos e não incomodavam mais ninguém... Já a overweight-cheerleader e seu afilhado não me deixaram assistir o filme (que era Borat, meio chatinho mas com cenas hilárias[3]):

  • Que isso dinha?
  • Ele tá pelado?
  • Porque ele fez isso?
  • O que tem dentro do saco?
  • Isso é um urso?
  • Mas porquê?

No final, cheguei vivo. O Moleque me acordou um pouco mais cedo do que eu gostaria, já brincando de fazer cócegas com a overweight-cheerleader, mas como já estávamos dentro dos limites de BH e logo logo o ônibus pararia na gameleira, não esquentei.

Cheguei e dormi a manhã toda. Depois fomos almoçar na casa de uma tia da Anita e logo depois do almoço, uma ligação:

Hospital

  • Filho, tou com uma dor de cabeça muito grande desde de manhã. Já liguei pro tiotávio[4] e ele me falou pra tomar mais um remédio pra enxaqueca. se a dor não passar, eu queria que você viesse aqui pra me levar no hospital.

Depois do AVC do meu sogro, nada melhor pra me assustar do que minha mãe com uma dor de cabeça que não para. Já imaginei logo o pior, e preocupado, despedimos e fomos correndo pra casa dela.

Não tinha mesmo jeito. Fomos nós pro hospital. Minha mãe mal conseguia se levantar. Muita tonteira, ânsia de vômito e tudo mais. Conseguimos entrar com ela no carro onde ela foi deitada no banco de trás, e fomos pro Hospital Belo Horizonte. Não que ela não tivesse nenhum outro convênio, mas era o hospital mais próximo e não achávamos que ele era tão desequipado. Esperamos na recepção onde minha mãe vomitou a primeira vez. Depois fomos atendidos pela médica que deu uns remedinhos, e colocou minha mãe na salinha de observação enquanto esperava o exame de sangue. Isso já eram cerca de 5 da tarde.

Nove horas da noite, dou uma cutucada na médica que estava de plantão (afinal a outra já tinha ido embora) e ela conclui: no exame de sangue não tem nada. Vamos fazer uma tomografia e chamar o neurologista. Só que não tem técnico de plantão pra operar a maquina de tomografia. Tem de ligar pra um e esperar ele chegar. Mais um remédio pra dor de cabeça e mais espera. Aproveito a espera pra tomar banho em casa, lanchar e voltar. Na volta a notícia: A tomografia não tem nada, vamos ter de esperar no dia seguinte por uma ressonância, pois não tem ressonância no hospital.

Aí minha mãe voltou ao normal:

  • Peraí, Eu vou ter de dormir aqui na sala de observação? E meu filho vai ficar dormindo onde? no corredor?

Barraco pra lá, barraco pra cá, eu e minha mãe batemos pé:

  • Não saio do lado da minha mãe!
  • Não vou deixar meu filho dormir no chão!

Convencemos a médica a internar minha mãe e a Anita preferiu que eu dormisse em casa (eu estava ultra-mega-power nervoso, se ficasse no hospital nem eu nem minha mãe íamos dormir). Nisso já era meia noite e pela manhã o médico examinaria minha mãe e só aí marcaríamos a ressonância.

Acordo as 7, ligo pro hospital as 8, chego lá as 9, mas a ressonância vai ser só as 10. Minha mãe tá bem melhor. Consegue fazer sudoku e tudo mais. A cabeça ainda dói, mas sem tonteira e sem enjôo. Mesmo assim, vamos fazer todos os exames pra garantir que não foi nada grave.

Um breve passei ode ambulância e chegamos no laboratório onde tem a ressonância. A minha mãe não tinha hora marcada, ia ser um encaixe (claro, uma emergência nunca é programada, duh!). Aguardamos nossa vez e vamos lá pra dentro. O aparelho é divertidinho no início, mas meio monótono, por isso prefiro sair da sala depois de um tempo. Se isso importa pra alguém, era um aparelho da Sony.

Volta de ambulância e o diagnóstico do médico: NADA. Não sabemos o que foi, mas como já passou, deram alta pra ela. Enfim, voltamos pra casa depois de 24h de hospital sem saber o que aconteceu. O neurologista marcou uma consulta pra próxima semana e vamos ver no que dá.

Paella de porco

Sexta feira a tarde eu só fiz dormir, claro. E no sábado, minha mãe tinha sido convidada pra um Paella de porco, feita por um autêntico espanhol. É um congresso ibero-americano de biohidrometalurgiaque acontece em Ouro Preto essa semana. A área é meio fechada, por isso a turma toda já se conhece dos vários congressos. Um deles, espanhol, prometeu uma paella no último congresso e teve de cumprir. As brasileiras compraram os ingredientes. Ele trouxe da espanha o arroz especial e alguns temperos.

Fomos pro retiro do chalé, condomínio fora de BH, no meio das montanhas, sobe e desce, sobe e desce, até chegar. A língua oficial no encontro era, claro, o espanhol. Ou o portunhol, se preferirem. Entre os 15 participantes, um espanhol (o cozinheiro), um argentino, um chileno, uma cubana e uma que não sabemos bem de onde, um casal de Araraquara e o resto de belo horizonte mesmo. Bom, quase de Belo Horizonte. Eu e Anita de Brasília, um outro casal de Ouro Preto, e os donos da casa de Nova Lima, já que o condomínio já é fora dos limites de BH.

A curiosidade geral era pra ver como se fazia a paella. Uma pausa, claro, pra provar uma Anísio Santiago[5] que por alguns momentos foi a estrela da festa até que a paella retomasse essa posição.

A paellera mal cabia no fogão, mas nosso chef foi logo exigindo um fogo melhor, já que aquele fogo com 4 bocas não iria esquentar a panela por inteiro. Solução? Churrasqueira e fogo de lenha. Acendia churrasqueira, coloquei uma grelha pra apoiar a panela e boas! O espanhol adorou a solução. Vestiu logo seu avental verde e amarelo e foi pra cozinha: refogou pimentões e fritou dentes de alho inteiros. Fritou a carne (lombo cortado em cubinhos e costelinha de porco) e deixou ferver com água por alguns minutos pra amaciar. Depois ferveu água em várias panelas pra que ela já chegasse quente na paellera.

Na churrasqueira, meu fogo ardia forte[6], com bastante lenha. O chef colocou a paellera no fogo e cobriu o fundo com molho de tomate (uma massa de tomates sem tempero e com uns pedaços grandes de tomate), juntou um monte de temperos, incluindo um "pozinho mágico" que ele trouxe da Espanha[7], e esperou começar a ferver. Espalhou as carnes por cima, e depois o arroz. Daí foi derramando a água devagarzinho pra não deixar parar de ferver, até que a panela tava até a borda de água. Mexeu enquanto fervia até o arroz ficar al dente, então tirou do fogo (que eu fui encarregado de apagar), enfeitou com os pimentões e alhos, cobriu com um jornal de mulher pelada (a mulher pelada foi mera coincidência, mas motivo suficiente para as gozações) e esperou, cronometrados, 20 minutos.

Deliciosa, mas a carne poderia ser mais magra! Sei que comi 3 pratadas 😉

O que nos leva de volta ao domingo e a nossa..

Viagem de volta

No mesmo busão. Dessa vez do meu lado vinha a anita, e do outro lado do corredor, um metaleiro com direito a touquinha preta, cavanhaque e cabelos grandes mal cuidados. A overweight-cheerleader estava lá com seu afilhado, fazendo o mesmo barulho, mas o barulho do walkman do metaleiro era pior. O filme? Um HORROROSO de um técnico de basquete que vai treinar um bando de retardados numa high-school qualquer. No final ele prefere treinar crianças no lugar de voltar pra liga universitária onde ele era o bam-bam-bam! Nem seção da tarde merece tanto!

Os marginaizinhos da vinda estavam mais quietos. Devem ter perdido o jogo, sei-la. Enfim, cheguei vivo e tirando uma dor de cabeça(oh... oh...), não tive nenhuma seqüela!

Notas

  1. ? pra ser politicamente correto, e ainda assim mostrar que sou racista, fazer o que
  2. ? ou não, já que pela idade de recém saídos da puberdade não tinham muito pra mostrar
  3. ? na verdade a única cena realmente bacana é dos dois correndo pelados pelos corredores do hotel. Eles jogando dinheiro pros "judeus" transformados em barata também é divertidinho. O resto é ruim de doer!
  4. ? meu tio médico
  5. ? Nota mental, contar algum dia a estória da Havana que esperou eu e meu irmão podermos beber juntos com meu pai pra ser bebida, num natal em Toulouse.
  6. ? ui...
  7. ? No rótulo dizia: tomilho, alecrim, sal (35%), cravo e açafrão(25%).

--girino 17:54, 19 Novembro 2007 (BRST)