DevSecOpsARTIGO

Configurando uma webcam em Actionscript 3

Texto
original de Andrew Christensen, disponível em http://blog.728media.com/2009/02/24/actionscript-3-webcam-configure/

?

Configurar uma webcam em Flash sempre foi
muito simples. Sinto que existem dois casos em Flash em que você utilizaria a
webcam para um projeto: streaming de vídeo para vídeo chat ou como uma
ferramenta para tirar foto. Esses dois casos têm objetivos completamente
diferentes, e você deve configurar sua câmera corretamente para
cada um deles.

Configure sua câmera

Primeiramente, vamos configurar sua câmera e uma instância de vídeo para
reprodução. Este código irá configurar uma câmera padrão e uma instância de
vídeo padrão. Ambos serão configurados para uma reprodução 320×240.

var camera:Camera = Camera.getCamera();
var video:Video = new Video();
video.attachCamera(camera);
addChild(video);

Configure
sua câmera para vídeo chat streaming

Configurar sua câmara para vídeo chat streaming envolve um pouco mais de
trabalho e planejamento do que utilizá-la apenas para tirar uma foto dentro do
player. O streaming de vídeo precisa que você sacrifique a qualidade do vídeo
para melhor velocidade, especialmente se você precisa sincronizar o vídeo com o
áudio. Existem dois métodos da classe da câmera que iremos usar para balancear
a qualidade do vídeo e a frame rate com a largura da banda: Camera.setQuality() e Camera.setMode().
setQuality() são usados para especificar a largura de banda e a qualidade geral do
output de vídeo da câmera. A documentação de ajuda da Adobe diz o seguinte:

  • Para indicar que o uso da largura de banda tem
    precedência, passe um valor para a largura de banda e 0 para qualidade. O
    Flash Player transmite o vídeo com a melhor qualidade possível dentro da
    largura de banda especificada. Se necessário, o Flash Player reduz a
    qualidade da imagem para evitar exceder a largura de banda especificada.
    No geral, se o movimento aumenta, a qualidade diminui.
  • Para indicar que a qualidade tem precedência,
    passe um valor numérico para a qualidade e 0 para a largura de banda. O
    Flash Player usa a quantidade de banda necessária para manter a qualidade
    especificada. Se necessário, o Flash Player reduz a frame rate para
    manter a qualidade de imagem. No geral, se o movimento aumenta, o uso da
    banda também aumenta.
  • Para especificar que tanto a largura de banda
    quanto a qualidade são igualmente importantes, passe valores numéricos para
    ambos os parâmetros. O Flash Player transmite o vídeo que atinge a
    qualidade especificada e que não excede a largura de banda especificada.
    Se necessário, o Flash Player reduz a frame rate para manter a
    qualidade de imagem sem exceder a largura de banda especificada.

Vamos configurar nosso código para ter uma qualidade comprimida média e uma frame rate de 15.

var bandwidth:int = 0; // Specifies the maximum amount of bandwidth that the current outgoing video feed can use, in bytes per second. To specify that Flash Player video can use as much bandwidth as needed to maintain the value of quality , pass 0 for bandwidth . The default value is 16384.
var quality:int = 50; // this value is 0-100 with 1 being the lowest quality. Pass 0 if you want the quality to vary to keep better framerates
var camera:Camera = Camera.getCamera();
camera.setQuality(bandwidth, quality);
camera.setMode(320,240,15,true); // setMode(videoWidth, videoHeight, video fps, favor area)

// Now attach the webcam stream to a video object.
var video:Video = new Video();
video.attachCamera(camera);
addChild(video);

Dependendo do seu projeto, você pode mudar as
configurações da largura de banda, a qualidade e a frame rate para
encontrar a melhor combinação. Eu sugiro configurar o tamanho de captura do
vídeo menor, e então esticá-lo. Isso permitirá uma maior frame rate, uma
vez que você está enviando um vídeo menor que está esticado. O vídeo fica um
pouco embaçado, mas, se você está planejando ter muito movimento, ter uma taxa maior
de quadros será mais importante.

Configure sua câmera para tirar uma foto


Este tipo de configuração não é muito diferente do exemplo acima. A principal
diferença é que não estamos passando quantidades constantes de dados para um
servidor streaming a cada segundo. Em vez disso, precisamos apenas pegar
os dados da câmera uma vez. Portanto, podemos aumentar a qualidade e a frame rate o quanto quisermos (se o hardware do usuário permitir essas
configurações).

Aqui está o exemplo acima, mas com sua configuração maximizada para uma
qualidade de foto alta.

var bandwidth:int = 0; // Specifies the maximum amount of bandwidth that the current outgoing video feed can use, in bytes per second. To specify that Flash Player video can use as much bandwidth as needed to maintain the value of quality , pass 0 for bandwidth . The default value is 16384.
var quality:int = 100; // this value is 0-100 with 1 being the lowest quality. Pass 0 if you want the quality to vary to keep better framerates
var camera:Camera = Camera.getCamera();
camera.setQuality(bandwidth, quality);
camera.setMode(320,240,30,false); // setMode(videoWidth, videoHeight, video fps, favor area)
var video:Video = new Video();
video.attachCamera(camera);
addChild(video);

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil