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:
- 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:
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.
-
cam.attachCamera(myCam);
Agora basta fazer com que nosso filme escute o evento “ActivityEvent” da webcam.
E no método handlerMotion, implementamos as ações na ProgressBar.
-
{
-
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/");
-
}
-
}
Veja o exemplo em funcionamento:
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:
-
<?xml version="1.0" encoding="utf-8"?>
-
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
-
xmlns:s="library://ns.adobe.com/flex/spark"
-
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="450" minHeight="400" width="450" height="400">
-
<s:VideoDisplay id="cam" x="48" y="38" width="360" height="240"/>
-
<mx:ProgressBar id="pbar" x="125" y="297"/>
-
</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.
-
protected function application1_creationCompleteHandler(event:FlexEvent):void
-
{
-
pbar.mode = "manual";
-
vd.attachCamera(myCam);
-
cam.addChild(vd);
-
}
-
-
{
-
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/";
-
}
-
}
Agora é so aplicar a lógica para que seja transmitido ou não o stream da webcam do usuário.
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








