Publicando a webcam na internet com FlashCom/Flash Media Server

Sabemos como conectar e saber se nossa conexão esta funcionando perfeitamente, veremos então como publicar nossa cam pela internet.

Iniciando com a chamada da webcam:

ActionScript

  1. var teste_cam:Camera = Camera.get();
  2. aovivo.attachVideo(teste_cam);

Vamos modificar o nosso codigo, a conexão agora estará dentro de uma função:
Dentro da função doConnect iniciaremos a conexao com o servidor FlashCom

ActionScript

  1. function doConnect() {
  2.     client_nc = new NetConnection();
  3.     client_nc.onStatus = function(info) {
  4.         trace("Level: "+info.level+"   Code: "+info.code);
  5.         txt_status.text = "Level: "+info.level+"   Code: "+info.code;
  6.     };
  7.     //client_nc.connect("rtmp://dominio");
  8.     client_nc.connect("rtmp:/cam");
  9. }

Feito isto, iniciaremos outra função para publicar as imagens da cam pelo FlashCom

ActionScript

  1. function publishMe() {
  2.     out_ns = new NetStream(_root.client_nc);
  3.     out_ns.attachVideo(teste_cam);
  4.     out_ns.publish("myTestStream");
  5. }

Finalizando com a função que dara o play para visualizarmos a cam via stream:

ActionScript

  1. function playMe() {
  2.     in_ns = new NetStream(_root.client_nc);
  3.     Published_video.attachVideo(in_ns);
  4.     in_ns.play("myTestStream");
  5. }

Agora basta chamarmos cada função:

ActionScript

  1. // Connect to the server
  2. doConnect();
  3. // Publish the live stream
  4. publishMe();
  5. // Play back the stream from the server
  6. playMe();

O codigo completo:

ActionScript

  1. var teste_cam:Camera = Camera.get();
  2. aovivo.attachVideo(teste_cam);
  3. /////////////////
  4. function doConnect() {
  5.     client_nc = new NetConnection();
  6.     client_nc.onStatus = function(info) {
  7.         trace("Level: "+info.level+"   Code: "+info.code);
  8.         txt_status.text = "Level: "+info.level+"   Code: "+info.code;
  9.     };
  10.     //client_nc.connect("rtmp://dominio");
  11.     client_nc.connect("rtmp:/cam");
  12. }
  13. function publishMe() {
  14.     out_ns = new NetStream(_root.client_nc);
  15.     out_ns.attachVideo(teste_cam);
  16.     out_ns.publish("myTestStream");
  17. }
  18. function playMe() {
  19.     in_ns = new NetStream(_root.client_nc);
  20.     Published_video.attachVideo(in_ns);
  21.     in_ns.play("myTestStream");
  22. }
  23. // Connect to the server
  24. doConnect();
  25. // Publish the live stream
  26. publishMe();
  27. // Play back the stream from the server
  28. playMe();

Lembrando que foi criado dois movieclips do tipo video com os respectivos nomes de instâncias “aovivo” e “Published_video”. Publique seu swf para ver o resultado.
Esse exemplo foi retirado do proprio help do FlashCom.

Veja a aplicação em funcionamento

Flash Media Server Developer Center
http://www.macromedia.com/devnet/flashmediaserver/

FlashComGuru
http://www.flashcomguru.com/

FlashCom.com.br
http://www.flashcom.com.br/

Flash Media Server Fun
http://www.fczone.com/

E-Learning, Flash, Flash Media Server, Flash Platform, Principal, RIA

31 comments


  1. Roger

    Olá Leonardo,
    VC tem algum exemplo ou dica de como eu poderia restringir a conexão para apenas duas pessoas, e retornar uma menssagem caso a sala esteja cheia?
    Atenciosamente
    Roger

  2. julio

    preciso de uma aplicação de vídeo chat entre usuários, quanto vc cobra…?

  3. Marcelo

    Leonardo, preciso só de uma luz: Tenho que publicar as imagens de uma camera ip para um ip global onde todos os usuarios da internet possam acessá-la. Seria esse o caminho? O que deve ser exibido para o usuário é somente o swf com a imagem da cam.
    Agradeço desde já,
    Marcelo Moreles

  4. danielgarcia

    no meu teste deu um erro

    Level: error Code: NetConnection.Connect.Failed

    mas o video fica aparecendo normal

    usei o flash 8 normal acho que não instalei os componentes flashcom

    tb gostaria de saber como faço para gravar o video?

  5. Esse exemplo não utiliza os componentes do Flashcom.
    Imagino que so esteja aparecendo a cam local, tem que aparecer duas janelinhas uma com a cam local e outra com o video publicado.
    Quanto ao erro do netconnection, verifique se vc esta usando o servidor do Flashcom esta iniciado ou se o endereço do rtmp esta correto. 😉

  6. Daniel Garcia

    Realmente so está aparecendo a cam local!

    O que estava querendo era gravar um video a partir de uma webcam, não sei se esse artigo faz isso, gostaria muito de aprender a gravar e salvar o video a partir de uma webcam!

  7. daniel Garcia

    tenho no meu IIS o //localhost/natalhelp, como faria para fazer a conexão certo?

    e gravar o video tb!

  8. para gravar o video basta adicionar o parametro “record” do metodo publish

    publish(ListItem.text, “record”);

    http://www.leonardofranca.com.br/index.php/2006/03/04/criando-uma-playlist-com-flash-communication-serverflash-media-server/pt/

    Se o servidor estiver no seu pc, utilize:
    client_nc.connect(“rtmp:/natalhelp”);
    com uma barra apenas.
    não importando se vc tem o IIS ou outro servidor web instalado na maquina 😉

  9. danielgarcia

    Eu queria tirar aquela msg em inglês que confirma a gravação!

  10. danielgarcia

    Aquele poupup do inicio da aplicação!

  11. danielgarcia

    Leonardo gostaria que me ajudasse, existe alguma forma de colocar para video terminar de gravar após 15 segundos, ao invés do botão record!!

    Tenho quase nenhuma experiência em action script!

  12. vc pode usar a propriedade time do flash media server
    http://livedocs.macromedia.com/fms/2/docs/00000595.html#wp158176
    ou então criar uma função com o setInterval para contar o tempo e para de gravar.

    ah, não entendi essa do popup

  13. danielgarcia

    Oi leonardo sou eu denovo,

    Queria saber como defino para o meu video ficar num resolução 320X240???

    è caso de vida ou morte!

  14. danielgarcia

    o video que falo é o flv que foi gravado!

  15. Marcelo

    Olá ?

    Gostaria de saber como integrar o flashcomm com o servidor apache
    Pois intale o flashcomm com ilimitado numero de usuarios que está instalado em C:\Arquivos de programas\macromedia\Flash Communication Server MX

    Enquanto o apache tá instalado em C:\Arquivos de programas\Apache Software Foundation

    Quando eu testo a minha apresentação está tudo legal localmente no –> aplication directory do arquivo fla está como rtmp:/sample_firstapp/sharedobjects/_definst_ e quando coloco rtmp:/sample_firstapp tudo ocorre bem mais quando coloco ela no apache em C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs

    Só consigo ver localmente tipo http:\\localhost

    Mais as pessoas não consegue entrar no chat e logar no chat e ligar cam e mic
    MEU EXEMPLO É ESSE
    https://locaweb.com.br/flashcom/exemplos/default.asp
    mais não consigo fazer funcionar no meu servidor caseiro com apache

    Obrigado

  16. Ola Marcelo,
    não entendi bem qual sua duvida, mas eu uso normalmente o Flashcom com o Apache na minha maquina, no diretorio do Flashcom guardo apenas os arquivos .asc, flv e mp3. Acesso a aplicação normalente usando http://localhost/minhaplicacao.html
    Se vc esta querendo que outras pessoas acessem seu pc. será necessário Disponibilizar o ip da sua maquina para que eles acessem.por exemplo:
    http://ip da sua maquina/sua aplicacao.html

    ate mais

  17. Marcelo

    Olá?

    Bem é o seguinte
    Tenho o apache em minha maquina roteado pra porta 8080
    utilize o serviço NO-IP que fica assim o meu endereço
    http://meu dominio.no-ip.org:8080
    Utilizo a porta 8080 devido ao hub que eu uso e adsl que não permite usar a porta 80 pra o apache
    Tudo está funcionando normalmente
    Depois instale o Flash Media Serviçe o FMS fica em c:\Arquivos de programas\Macromedia\Flash Media Service
    O apache fica em C:\Arquivos de programas\Apache Group\
    Apóis intale note que não poderia jamais fazer os trabalhos na pasta do flash media e levar pra o htdocs do Apache pois a direção estaria errada e ele não estaria ativo externamente quando fosse acessar o meu endereço http://meu dominio.no-ip.org:8080 note que havia um arquivo chamado FMS.INI no FMS e no FCS o nome é VHOST dentro de config lá tem assim ….

    # Application directory for the virtual host
    # For example:
    # VHOST.APPSDIR = C:\myapps
    #
    VHOST.APPSDIR = C:\Arquivos de programas\Macromedia\Flash Media Server 2\Aplications

    coloque então a linha do VHOST assim
    C:\Arquivos de programas\Apache Software Foundation\Apache2.2

    Pois iria criar algo em htdocs e ficar ativo até ai tudo bem está ativo localmente
    Mais entenda o modem é roteado ele é que fica com o IP verdadeiro , o ip interno é outro também e fora isso não tenho noção de como ficara isso em rtmp:// pois tenho que rotear ele pra porta 8080
    Exite varios arquivos dentro do flash comm e flash MS os XML que traz exemplos pra router mais já fiz de tudo e não consigo nada sobre isso , já busque google já li manual e nada encontre, ele sempre fica ativo localmente mais nunca externamente nem acessando o ip interno de outro pc via browser
    A questão da dificuldade está no roteamento via porta 8080, espero que alguem aqui me ajude
    Um abraço

  18. Thiago

    Como eu faço um chata somente com webcam’s???…vc sabe onde tem tutorial explçicando ou vc tem script????

  19. Tenho uma videoconferencia, mas a logica esta nesse artigo, breve escrevei um mais detalhando sobre como fazer uma conferencia

    Ate mais
    Leonardo França

  20. Roger

    Olá,

    Gostaria de saber como faço para tocar um bip do lado do servidor quando um cliente estiver online, tipo o skype.

  21. Roger

    Olá,
    Como faço para conectar somente um ´cliente de cada vez, caso o atendimento esteja cheio, ele retorna uma menssagen dizendo “Todos os atendentes estão ocupados no momento, tente mais tarde”.

  22. vc pode verificar se a instancia do NetStream já esta em uso, caso sim mostra a mensagem para o usuario ou ainda guardar isso em um SharedObject 😉

  23. você pode fazer algo do tipo:
    client_nc = new NetConnection();
    client_nc.onStatus = function(info) {
    trace(“Level: “+info.level+” Code: “+info.code);
    if(info.code == “NetConnection.Connect.Success”){
    tocasom();
    }
    };
    e na funcão tocasom, vc implementa a rotina do Flash para carregar um som 😉

  24. Roger

    Ok, consegui. O que tá pegando é que eu preciso restringir a conexão para somente dois usuários, e colocar um botão que possa desconectar um usuário que deseje.
    Obrigado pela força.

  25. Roger

    Olá,

    Estou precisando de um help. Como faço para implementar um peoplelist para que eu possa desconectar um usuário que escolher?
    Grato
    Roger

  26. Olá, gostaria de saber se existe a possibilidade de manipular quatro câmeras pelo FLASH na mesma tela, sendo uma delas IP?

    Caso seja positiva a sua resposta, tem como você me indicar uma literatura que me ajude para esta configuração, ou seja, alguma literatura que informe como é possível a leitura de câmeras externas pelo FLASH?

    Muito Obrigado desde já.

  27. Muniz Alves

    Ola, estou com uma duvida, sou doido pra aprender o Flashcom
    O que eu preciso inicialmente?
    Preciso pagar uma hospedagem super cara para começar meus testes?
    Tem como fazer testes no meu pc e hospedar em servidores comum?
    Obrigado, desde ja

  28. vc pode instalar o servidor Flash Media Server no seu pc e usar para os testes tranquilamente 😉

  29. ops…
    disculpa o comentario anterior ,mas…
    como fazer para somente gravar o video no computador?

  30. Eduardo

    Olá Leonardo, td bem?
    por favor, estou precisando de um favor, tenho instalado no meu pc wm recorder, pra gravar videos da internet, ele funciona mto bem e automaticamente para sites q disponibilizam o conteudo em windows media player… mas qdo vejo algum site que tem transmissao ao vivo, mtos sao com algum programa em flash, o q nao me deixa garvar, jah baixei o flv recorder, ele cria os arquivos mtu grandes, e mtas vezes perco partes do video.

    deixo um site da web, q transmite jogos ao vivo, http://www.channelsurfing.net um dos canais eh q estou tentando gravar, descobri no proprio video q aparece a opção rtmp, porém nao sei com q programa posso gravar… de um tamanho consideravel…. e com som, de preferencia…
    se vc puder me ajudar agradeceria…
    obrigado, Eduardo.

Leave a Reply