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.
[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.
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
Pingback: Anonymous
Valeu.. Flash nao e minha especialidade, mas estou aprendendo bastante aqui no seu blog