Se esta querendo aprender ou iniciar novos projetos em Flex, clique aqui

Bha galera, publicar uma WebCam em um servidor FMS ou Wowza é algo mais simples que muito gente imagina, mais se não tratado com carinho pode dar um pouco de dor de cabeça.

Se você apenas publicar vídeo não é necessário definir o objectEncoding. tanto que se utilizar o Flash Media Streaming Server, não possui suporte ao AMF. Basicamente para publicar vídeo é necessário uma instância do NetConnection e uma do NetStream.

Veja abaixo o principio da conexão:

// instanciando um NetConnection
nc = new NetConnection();
// Conectando
nc.connect("rtmp://localhost/servico");
// Nova instancia do NetStream
nsPub = new NetStream ( nc );
// Adicionando a camera ao NetStream
nsPub.attachCamera(Camera.getCamera());
// Publica com o nome "teste"
nsPub.publish("teste");

Este é o principio básico de uma conexão, porém não necessariamente irá funcionar, pois ele tentará publicar antes que a conexão seja aceita pelo servidor.

Arquivo main.mxml
private function init():void
{
    if(nc != null)
        nc = null;
    nc = new NetConnection();
    nc.addEventListener( NetStatusEvent.NET_STATUS, netStatus );
    nc.connect("rtmp://localhost/fitcDemo");
    nc.client = this;
}
private function netStatus( e:NetStatusEvent ):void
{
    RED5Status.text = e.info.code;
    switch( e.info.code )
    {
        case "NetConnection.Connect.Success":
            statusConnection = true;
            break;
        case "NetConnection.Connect.Closed":
            statusConnection = false
            break;
        case "NetConnection.Connect.Rejected":
            statusConnection = false
            break;
    }
}

Agora melhoramos o nosso código, acrescentando um evento que verifica o status da conexão, e só prosseguimos se a conexão for bem sucedido.

Arquivo main.mxml
private function publicar():void
{
    nsPub = new NetStream ( nc );
    nsPub.attachCamera(Camera.getCamera());

    // nome que será publicado
    nsPub.publish("teste");
    vdMinhaWebCam.attachCamera(Camera.getCamera());
}
private function visualizar():void
{
    btVisualizar.label="Parar Visualização!"; 

    nsCli = new NetStream ( nc )

    var vid:Video = new Video();
    vid.height = uiCaixaDoVideo.height;
    vid.width  = uiCaixaDoVideo.width;
    vid.attachNetStream( nsCli );

    uiCaixaDoVideo.addChild( vid );

    // nome que foi publicado
    nsCli.play("teste");
}

Adicionamos mais duas funções que publica e visualiza o conteúdo publicado. Veja que quando publico, inicio uma instância do NetStream adiciono a câmera e publico com o nome de “teste”. Logo defino a mesma WebCam no primeiro display e para visualizar o que esta sendo publicado.

Quando visualizo, uso uma instância do NetStream e utilizo o método play para visualizar o que foi publicado no servidor. Este método é adicionado a um componente Video que deve ser adicionado dentro de um UIComponent.

Abaixo há um exemplo com fonte, mais para que funcione, você deve ter instalado um servidor Wowza ou FMS.

Veja o código fonte aqui.

Gostou? Não esqueça de curtir!

Ou compartilhe o link com seus amigos

5 comentários

Deixe uma resposta

  1. Olá Eduardo tudo bom?
    Então, na empresa que eu trabalho estamos precisando criar a opção de 2 usuários logados poderem conversar via videoconferencia. Já estamos com o RED5 rodando, portanto eu não consigo fazer as publicações das webcams, até por que o meu conhecimento em Flex é limitadissímo. A minha dúvida é: Como eu faço o que você fez aí em cima, funcionar no meu site PHP?

     
  2. Boa tarde !
    Muito bom seu manual Parabéns!

    Estou com uma duvida.

    Ex:
    Estou publicando minha webcam conforme teu manual, mais 3 amigos estão publicando tambem, como localizo a sessao deles para que eu possa assistir a camera deles tb ?

    Obrigado !

     
  3. Olá Alemão, estou a tentar fazer alguma coisa bonita com o fms3 ou red5. para transmitir um evento na minha vila... coisa simples, para depois varias pessoas poderem ver em directo....

    Ja instalei o red5 no meu windows xp, e ja está a correr.... mas como eu faço para que funcione o exemplo... ja o inseri no flex, mas penso que tenho que inserir dentro de alguma pasta ou algo parecido... podes explicar essa parte?

     
  4. @João Nunca mexi com esta tecnologia. Mais é excelente e o GMail Vídeo/Voz usa o mesmo protocolo.

     
  5. Olá Eduardo, tudo bem?

    gostaria de saber se você já tentou fazer integração deste sistema com o SteamStream? A minha necessidade é de mostrar um RTSP no Flex e me indicaram usar o RED5.

    Alguns links de referência:
    http://www.red5wiki.com/wiki/SteamStream