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":

    Library->New 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 320x240.
  • 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:
  1. myCam = Camera.getCamera();
  2. cam.attachCamera(myCam);

Agora basta fazer com que nosso filme escute o evento "ActivityEvent" da webcam.

ACTIONSCRIPT3:
  1. myCam.addEventListener(ActivityEvent.ACTIVITY,handlerMotion);

E no método handlerMotion, implementamos as ações na ProgressBar.

ACTIONSCRIPT3:
  1. function handlerMotion(evt:ActivityEvent):void
  2. {
  3.     trace(evt.target.activityLevel);
  4.     pbar.setProgress(evt.target.activityLevel,100);
  5.     if(evt.target.activityLevel <10)
  6.     {
  7.         trace("muito quieto! =õ(");
  8.     }
  9.     else
  10.     {
  11.         trace("eba! festa!!! \\o/\\O/\\o/");
  12.     }
  13. }

Veja o exemplo em funcionamento:

This movie requires Flash Player 9

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:
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
    3.                xmlns:s="library://ns.adobe.com/flex/spark"
    4.                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="450" minHeight="400" width="450" height="400">
    5.     <s:VideoDisplay id="cam" x="48" y="38" width="360" height="240"/>
    6.     <mx:ProgressBar id="pbar" x="125" y="297"/>
    7. </s:Application>

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:
  1. protected function application1_creationCompleteHandler(event:FlexEvent):void
  2. {
  3.     pbar.mode = "manual";
  4.     myCam = Camera.getCamera();
  5.     var vd:Video = new Video(320,240);
  6.     vd.attachCamera(myCam);
  7.     cam.addChild(vd);
  8.     myCam.addEventListener(ActivityEvent.ACTIVITY, handlerMotion);
  9. }
  10.  
  11. private function handlerMotion(evt:ActivityEvent):void
  12. {
  13.     trace(evt.target.activityLevel);
  14.     pbar.setProgress(evt.target.activityLevel,100);
  15.     if(evt.target.activityLevel <10)
  16.     {
  17.         pbar.label = "muito quieto! =õ(";
  18.     }
  19.     else
  20.     {
  21.         pbar.label = "eba! festa!!! \\o/\\O/\\o/";
  22.     }
  23. }

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

Esses artigos podem ser interessantes também

ActionScript 3.0, Adobe AIR, Flash, Flex , , ,

2 comments


  1. Pingback: Anonymous

  2. Valeu.. Flash nao e minha especialidade, mas estou aprendendo bastante aqui no seu blog

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>