quarta-feira, 25 de agosto de 2010

Fazer um vídeo Screensaver

Como colocar um Vídeo como protecção de tela (screensaver)?
Esta dica é para o Ubuntu mas deve ser compatível com todas a distribuições que utilizam o Gnome 2.3

Para começar, vamos precisar do mplayer. Se ainda não tem o mplayer instalado no seu sistema, abra um terminal e use o seguinte comando:

sudo apt-get install mplayer

Agora vamos criar um arquivo video.desktop dentro da pasta /usr/share/applications/screensavers/.

Novamente na consola.

sudo touch /usr/share/applications/screensavers/video.desktop

Abra o arquivo video.desktop no editor de texto gedit, com o seguinte comando:

sudo gedit /usr/share/applications/screensavers/video.desktop

Com o editor de texto aberto, copie para o arquivo o seguinte:

[Desktop Entry]
Encoding=UTF-8
Name=Video
Comment=Video
TryExec=video.sh
Exec=video.sh
StartupNotify=false
Terminal=false
Type=Application
Categories=Screensaver;
OnlyShowIn=GNOME;

Agora vamos criar um arquivo video.sh na pasta /usr/lib/gnome-screensaver/gnome-screensaver, que será um script responsável por executar o mplayer.

sudo touch /usr/lib/gnome-screensaver/gnome-screensaver/video.sh

Vamos abrir o video.sh com o gedit:

sudo gedit /usr/lib/gnome-screensaver/gnome-screensaver/video.sh

Copie para dentro do arquivo o seguinte:

#!/bin/bash

#path video
VIDEO=/home/tuxmind/video-screensaver/arquivo-de-video.ogv

exec mplayer -nosound -nolirc -wid $XSCREENSAVER_WINDOW -nostop-xscreensaver -fs -really-quiet "$VIDEO" -loop 0


Altere a variável VIDEO com o caminho (path) para o seu vídeo.
/home/tuxmind/video-screensaver/arquivo-de-video.ogv é um exemplo :P
Dica: Use um link simbólico para você poder mudar o vídeo, sem ter de editar o scrip, que precisa de privilégios administrativos.

Guarde as alterações, feche o editor de texto, e torne o arquivo executável com o seguinte comando:

sudo chmod 755 /usr/lib/gnome-screensaver/gnome-screensaver/video.sh

E pronto! Agora vá até sistema > Preferências > Protecção de tela (ou ecrã). Procure na lista de sceensaver disponíveis o "Video". É só pré visualizar o resultado final :)


O truque desta dica é a variável $XSCREENSAVER_WINDOW, que diz ao mplayer qual a window ID do secreensaver.
Há uns tempos atrás tentei fazer isto com o mplayer, mas acabei desistindo porque não consegui passar o parâmetro -wid correcto para o mplayer. Tentei de tudo!
Passado tanto tempo "descubro" a variável $XSCREENSAVER_WINDOW na FAQ do gnome-screensaver. Era a peça que faltava. :)

http://live.gnome.org/GnomeScreensaver/FrequentlyAskedQuestions#Can_I_use_xscreensaver_.22hacks.22_with_gnome-screensaver.3F

Moral da história... leiam sempre a FAQ :P

terça-feira, 24 de agosto de 2010

Marca de água no ffmpeg 0.6 Ubuntu 10.04

Como devem saber o filtro vhook que permitia colocar marcas de água (watermark) sobre vídeos foi descontinuado.
Para o substituir, surgiu o libavfilter que contém um conjunto de filtros para serem aplicados nos vídeos.
Mas o projecto ainda está em fase integração com o ffmpeg. A versão "completa" do libavfilter ainda não está na versão final do ffmpeg.

Se você quiser usar todos os filtros do libavfilter terá que utilizar o "libavfilter repository"

svn checkout svn://svn.ffmpeg.org/soc/libavfilter

Para mais informações:
http://ffmpeg.org/libavfilter.html

Embora no site do ffmpeg somos alertados para uma possível instabilidade do libavfilter (porque ainda se encontra em estado inacabado) o certo é que eu instalei, e até agora não tive problemas em adicionar marcas de água nos vídeos. Funciona tão bem como no antigo vhook.

Então vamos começar.

Adicionando repositórios adicionas. (caso você ainda não tenha)

sudo software-properties-gtk -e universe

sudo software-properties-gtk -e multiverse

sudo apt-get update

Remover o ffmpeg libx264 libvpx do repositório caso você já os tenha instalados.

sudo apt-get purge -y ffmpeg x264 libx264-dev libvpx

sudo apt-get update

Instalando as dependências:

sudo apt-get install -y build-essential subversion checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libtheora-dev libxvidcore-dev libsdl1.2-dev libvorbis-dev libopencore-amrwb-dev libopencore-amrnb-dev git-core libx11-dev libxfixes-dev zlib1g-dev

Vamos para pasta do utilizador.

cd ~

E criamos uma pasta source-ffmpeg, e mudamos para essa pasta.

mkdir source-ffmpeg
cd source-ffmpeg

Vamos começar com o x264(opcional):
Execute os seguintes comandos:

git clone git://git.videolan.org/x264.git

cd x264

./configure

make

sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | head -c 7`" --default

cd ..

Agora o libvpx (opcional):

git clone git://review.webmproject.org/libvpx.git

cd libvpx

./configure --disable-install-docs --enable-vp8

make

sudo checkinstall --fstrans=no --install=yes --pkgname=libvpx --pkgversion "0.9.1-`date +%Y%m%d%H%M`-git" --default

cd ..

Finalmente o "libavfilter/ffmpeg":

svn co svn://svn.ffmpeg.org/soc/libavfilter

cd libavfilter

Agora vamos rodar o checkout.sh (e um script que está dentro da pasta libavfilter) que vai aplicar os pachs, e preparar o ffmpeg para "receber" o libvfilter.


./checkout.sh

Mudamos agora para a pasta do ffmpeg:

cd ffmpeg

./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-avfilter --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvorbis --enable-x11grab --enable-version3 --enable-libvpx --enable-filter=movie --enable-avfilter

make

sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | awk '/Revision/ { print $NF }'`" --default

E pronto! Para começar dê uma olhada em todos os filtros disponíveis para o ffmpeg.

ffmpeg -filters

Filters:
aspect Set the frame aspect ratio.
crop Crop the input video to x:y:width:height.
drawbox (null)
fade (null)
fifo (null)
format Convert the input video to one of the specified pixel formats.
fps (null)
hflip Horizontally flip the input video.
negate (null)
noformat Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
null Pass the source unchanged to the output.
overlay Overlay a video source on top of the input.
pad Pad input image to width:height[:x:y[:color]] (default x and y: 0, default color: black).
pixdesctest Test pixel format definitions.
pixelaspect Set the pixel aspect ratio.
rotate (null)
scale Scale the input video to width:height size and/or convert the image format.
setpts (null)
slicify Pass the images of input video on to next video filter as multiple slices.
split (null)
transpose (null)
unsharp Sharpen or blur the input video.
vflip Flip the input video vertically.
buffer Buffer video frames, and make them accessible to the filterchain.
color Provide an uniformly colored input, syntax is: [color[:size[:rate]]]
movie (null)
nullsrc Null video source, never return images.
nullsink Do absolutely nothing with the input video.

E agora um teste:

ffmpeg -i in.mp4 -sameq -vf "movie=0:png:logo.png [wm];[in][wm] overlay=0:0:1[out]" out.mp4

No comando em cima a imagem que utilizar como marca de água tem o nome de logo.png, e o tamanho da imagem terá de ser igual ao tamanho do frame do seu vídeo. Use o Gimp para criar a imagem e posicionar a sua marca de água ou logótipo, ou alterar a transparência. :)

IMPORTANTE: Como estamos utilizando sempre a ultima "versão" disponível do ffmpeg, libvpx, x264, etc... poderá ocorrer algum erro durante a execução do comando make. Você terá de ter paciência e esperar que o desenvolvedores" corrijam eventuais problemas das últimas revisões que estão no git ou svn.
Se você não pode esperar, a solução é usar uma revisão estável que não tenha dado problemas.
Esta é a versão que estou a usar com libavfilter: FFmpeg version SVN-r24819

quinta-feira, 19 de agosto de 2010

Bandeira ao vento em 3D no Blender

Nas minhas "navegações" pelo Youtube, encontrei um excelente tutorial para fazer uma animação 3d de uma Bandeira ao vento.

http://www.youtube.com/watch?v=hF8WILhC68A

Só fiz algumas alterações, depois apliquei uma belíssima textura. A minha ideia era criar uma Bandeira 3d do Brasil ao vento, com a música, e a letra do "Hino Nacional do Brasil".
Demorou uma hora e quarenta e dois minutos só para renderizar a animação com uma resolução de 960x540 num core 2 duo t9400 . Só o render baking durou cerca de uma hora, gerando cerca de 740MB de cache.

Já coloquei o resultado final no Youtube.

Visita Guiada ao render farm do Blender Institute

Um curiosa e divertida visita guiada ao "render farm" do Blender Institute.



O curioso, é o local onde eles alojaram o cluster. No banheiro (WC) LOL
Eu ri muito com este vídeo por causa das semelhanças com os quadradinhos do nerdson
Na empresa "devdevdev" o servidor também se encontrava no banheiro.

Instalar Unity no Ubuntu 10.04

Já não é novidade. Com certeza já viram o Ubuntu Unity, que foi especialmente concebido para os fabricantes OEM instalar nos netbooks.

Mas, como instalar o Unity no seu Ubuntu 10.04 LTS?
EDIT: Veja aqui como instalar o Unity no Ubuntu 10.10
É fácil, basta executar o seguinte comando numa consola:

sudo add-apt-repository ppa:canonical-dx-team/une && sudo apt-get update && sudo apt-get install -y unity

Reinicia a sua máquina, e depois no ecrã de Login escolha a sessão "Unity UNE Session".

Na apresentação do Unity Mark Shuttleworth foi "surpreendido" pelo épico clippy da MS LOL...