Infra - Linux

Linux: Faça um incrível espetáculo de efeitos visuais com vídeo em tempo real

Se você possui uma placa de vídeo com captura, através deste documento será possível criar efeitos especiais como o do filme Matrix (desviar de balas em camêra lenta, se materializar em um determinado ponto e até o efeito dos caracteres escorrendo pelo vídeo). E tudo isto em tempo de execução.

por Alessandro de Oliveira Faria



Se você possui uma placa de vídeo com captura, através deste documento será possível criar efeitos especiais como o do filme Matrix (desviar de balas em camêra lenta, se materializar em um determinado ponto e até o efeito dos caracteres escorrendo pelo vídeo). E tudo isto em tempo de execução.

Introdução:

Ao trabalhar com as funções da api do video4linux, constatei que existe numeroso projetos no mundo Linux que usam estas chamadas de funções.

O mais impressionante no projeto effectv, é consegui fazer com uma placa de baixo custo o que profissionais no mundo Windows desejam fazer com caríssimas placas de vídeo captura da pinnacle.

Abaixo segue um pequeno vídeo e imagens para demonstrar o que será possível fazer com este tutorial:

Filme com efeito de invisibilidade: http://www.netitec.com.br/linux/images/chameleon.mpg


Efeito Matrix


Efeito de invisibilidade


Efeito radioativo


Efeito deslocamento com rastro


Efeito de raios


Efeito de fantasma

Download e compilação:

Efetue o download dos fontes em http://prdownloads.sourceforge.net/effectv/effectv-0.3.9.tar.gz

Extraindo os arquivos:

cabelo@linux:~> cd programas/
cabelo@linux:~/programas> tar -zxvf effectv-0.3.9.tar.gz
effectv-0.3.9/
effectv-0.3.9/ChangeLog
effectv-0.3.9/COPYING
:: :: :: 
:: :: :: 
:: :: :: 
effectv-0.3.9/v4lutils/README
effectv-0.3.9/v4lutils/v4lutils.c
effectv-0.3.9/v4lutils/v4lutils.h
cabelo@linux:~/programas>

Compilando o projeto: Antes de continuar, vale a pena informar que precisamos da biblioteca SDL-Devel. Caso não encontre este pacote em sua distribuição, faça o download em http://www.libsdl.org/.

É requirito também o NASM que pode ser instalado da sua distribuição ou em http://nasm.sourceforge.net/.

cabelo@linux:~/programas> cd effectv-0.3.9/
cabelo@linux:~/programas/effectv-0.3.9>
cabelo@linux:~/programas/effectv-0.3.9> make
make[1]: Entering directory `/home/cabelo/programas/effectv-0.3.9/effects"
make[2]: Entering directory `/home/cabelo/programas/effectv-0.3.9/effects"
gcc -DUSE_NASM -DUSE_MMX -DUSE_VLOOPBACK -DVLOOPBACK_VERSION=91 
-DDEFAULT_VIDEO_DEVICE=\""/dev/video0"\" 
-DI686 -march=pentiumpro -O3 -fomit-frame-pointer -funroll-loops -I.. -I../v4lutils `sdl-config 
--cflags` -Wall -c -o dumb.o dumb.c
:: :: :: 
:: :: :: 
:: :: :: 
gcc -o effectv main.o screen.o video.o frequencies.o palette.o utils.o yuv.o buffer.o image.o 
vloopback.o effects/libeffects.a v4lutils/libv4lutils.a -lm `sdl-config --libs`
make[1]: Leaving directory `/home/cabelo/programas/effectv-0.3.9"
cabelo@linux:~/programas/effectv-0.3.9>

Executando o espetáculo:

Para executarmos o programa, para chamar o binário effectv com o parametro -channel 1 (video composto).

cabelo@linux:~/programas/effectv-0.3.9> effectv -channel 1
DumbTV OK.
QuarkTV OK.
FireTV OK.
BurningTV OK.
RadioacTV OK.
StreakTV OK.
BaltanTV OK.
1DTV OK.
DotTV OK.
MosaicTV OK.
PuzzleTV OK.
PredatorTV OK.
SpiralTV OK.
SimuraTV OK.
EdgeTV OK.
ShagadelicTV OK.
NoiseTV OK.
AgingTV OK.
TransFormTV OK.
LifeTV OK.
SparkTV OK.
warpTV OK.
HolographicTV OK.
cycleTV OK.
RippleTV OK.
DiceTV OK.
VertigoTV OK.
DeinterlaceTV OK.
NervousTV OK.
RndmTV OK.
RevTV OK.
RandomDotStereoTV OK.
lensTV OK.
DiffTV OK.
BrokenTV OK.
WarholTV OK.
36 effects are available.
cabelo@linux:~/programas/effectv-0.3.9>

Após a execução do programa, aparecera a listas dos efeitos inicializados com sucesso. Abaixo, segue os comando para controlar os efeitos:

Principais parâmetros do programa:

effectv [opções] [nome do efeito]

Opções:

-device ARQUIVO

Nome do ARQUIVO device para o video4linux (padrão é /dev/video0).

-channel NUMERO
Determina o numero para o vídeo de origem (padrão is 0).

-norm {ntsc,pal,secam,pal-nc,pal-m,pal-n,ntsc-jp}
Determina o modo do vídeo(padrão é ntsc).

-freqtab
{us-bcast,us-cable,us-cable-hrc,japan-bcast,japan-cable,europe-west,europe-east,italy,newzealand,australia,ireland,france,china-bcast,southafrica,argentina,canada-cable,australia-optus} Determina a frequência da sintonia da TV

-fullscreen
Executa o EffecTV em tela cheia.

-hardware
Usa a memória de vídeo (quando possível).

-doublebuffer
habilita o modo double buffering (quando possível).

-fps
Mostra o número de frames por segundo.

-size WxH
Determina a resolução de apresentação da imagem

-vloopback FILE
Usa o ARQUIVO device para vloopback device.

effect name
Executa apenas o efeito especificado.

Teclas de navegação e controle dos efeitos

Up/Down Mudança deefeito.

Right/Left Mudança do canal de TV.

Space Captura a imagem de fundo(para os efeitos FireTV, BurningTV, etc).
Mudança de modo(para os efeitos SpiralTV, TransFormTV)

ALT+Enter Tela Cheia.

TAB Vira na Horizontal.

Escape Sair

O recusro vloopback

O programa effetv suporte o recurso vloopbak, este recurso permite criar um ARQUIVO device virtual para ser utilizado por outros programas.

Resumindo para gravarmos os efeitos em mpeg podemos utilizar o seguinte truque com o vloopback:

$ effectv -vloopback /dev/video1 -channel 1

No comando acima é criado em /dev/video1, a saída do efeito processado.

$ ffmpeg -vd /dev/video1 -s 320x240 effect.mpg

Agora gravamos o efeito com o ffmpeg usando o resultado em /dev/video1.

Para utilizar este recurso, voce terá que instalar o módulo do kernel vloopback.o. Para maiores detalhes, acesse: http://motion.sourceforge.net/vloopback/

O download, encontra-se em http://motion.sourceforge.net/download/vloopback-0.91.tar.gz

Alessandro de Oliveira Faria

Alessandro de Oliveira Faria - Sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software nas mais diversas linguagens e plataforma, levando o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.