Detectando movimentos da webcam com Adobe Flash

Um recurso interessante e que pouca gente conhece no Flash Player ou Adobe AIR, é que além de acessar recursos como a webcam do usuário, ele pode também detectar se há ou não movimentos na camera. Isso pode ser útil se você está implementando um sistema de stream ao vivo e quer economizar a banda usada. Por exemplo, só será publicado o stream se a camera tiver algum movimento.

O Flash Player ou Adobe AIR, além de acessar recursos como a webcam do usuário, pode também detectar se há ou não movimentos na camera.

Vamos ver um exemplo usando o Adobe Flash Professional CS5 e com Flash Builder 4(usando o framework Flex 4).

Adobe Flash Professional CS5

  • Crie um arquivo do tipo ActionScript 3.0
  • Aperte F11 para abrir a library, peça para criar um novo simbolo do tipo “video”:
  • Aparecerá uma nova janela, de o nome de “cam” e deixe a opção “Video (ActionScript-controlled)” selecionada:

    cam

  • Arraste o componente que você acabou de criar para o stage e de o nome de instância de “cam”, depois redimesione para 320×240.
  • Arraste um componente do tipo ProgressBar da library User Interface. Dê o nome de instância “pbar”.
  • Feito isto, você deve ter algo parecido com isto:

    Stage pronto para começar a programação

Temos nosso stage pronto para começar a programação ActionScript 3.0. Vamos começar com o Flash Player pedindo para ter acesso a webcam e em seguida colocar a imagem da webcam em nosso componente de video.
[ACTIONSCRIPT3]
myCam = Camera.getCamera();
cam.attachCamera(myCam);
[/ACTIONSCRIPT3]
Agora basta fazer com que nosso filme escute o evento “ActivityEvent” da webcam.
[ACTIONSCRIPT3]
myCam.addEventListener(ActivityEvent.ACTIVITY,handlerMotion);
[/ACTIONSCRIPT3]
E no método handlerMotion, implementamos as ações na ProgressBar.
[ACTIONSCRIPT3]
function handlerMotion(evt:ActivityEvent):void
{
trace(evt.target.activityLevel);
pbar.setProgress(evt.target.activityLevel,100);
if(evt.target.activityLevel < 10) { trace("muito quieto! =õ("); } else { trace("eba! festa!!! \\o/\\O/\\o/"); } } [/ACTIONSCRIPT3] Veja o exemplo em funcionamento: [SWF]http://www.leonardofranca.com.br/wp-content/uploads/2010/08/motion_camera.swf,450,400[/SWF] Adobe Flex 4
Agora veremos um exemplo usando o Adobe Flex, vou capturar a camera usando o componente VideoDisplay.

  • Crie um projeto do tipo web(Flex) ou desktop(AIR).
  • Arraste um componente do tipo VideoDisplay e outro do tipo ProgressBar para o palco.
  • Devemos ter algo parecido com isso:
    [MXML]





    [/MXML]

Basta implementar a programação ActionScript agora, é bem parecido com o modo de como fizemos no Flash. Mudaremos pouca coisa no código ActionScript 3.0.
[ACTIONSCRIPT3]
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
pbar.mode = “manual”;
myCam = Camera.getCamera();
var vd:Video = new Video(320,240);
vd.attachCamera(myCam);
cam.addChild(vd);
myCam.addEventListener(ActivityEvent.ACTIVITY, handlerMotion);
}

private function handlerMotion(evt:ActivityEvent):void
{
trace(evt.target.activityLevel);
pbar.setProgress(evt.target.activityLevel,100);
if(evt.target.activityLevel < 10) { pbar.label = "muito quieto! =õ("; } else { pbar.label = "eba! festa!!! \\o/\\O/\\o/"; } } [/ACTIONSCRIPT3] Agora é so aplicar a lógica para que seja transmitido ou não o stream da webcam do usuário.

DOWNLOAD SOURCE FLEX

Para saber mais:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html?allClasses=1

Livros recomendados:
Adobe Flash CS4 Professional Como Fazer 100 Técnicas Essenciais
Flex 3 em Ação
Adobe Flex 3 Treinamento Direto da Fonte

2 thoughts on “Detectando movimentos da webcam com Adobe Flash

  1. Pingback: Anonymous

Leave a Reply