MXStudio » Flash Media Server » Gravando Streaming com Flash Communication Server/Flash Media Server

Gravando Streaming com Flash Communication Server/Flash Media Server

Gravando Streaming com Flash Communication Server/Flash Media Server.

Introdução

Algumas vezes é frustrante para o usuário ter que baixar o arquivo todo para depois assistir seu conteúdo ainda mais tratando-se de conexões discadas. E como evolução natural desta situação, o conteúdo via streaming. Afinal, uma série de serviços, como notícias e transmissões ao vivo, rádios online, não seriam viaveis sem esta tecnologia. E somente agora que os provedores de hospedagem brasileiros começam a apostar no Flash Communication Server/ Flash Media Server.

Pré-Requisitos

Macromedia Flash 8, Flash Communication Server ou Flash Media Server.

Objetivo

Mostrar como gravar streaming usando o servidor Flash Communication Server ou Flash Media Server(Ainda não foi testado no Red5).

Conceitos

Streaming é basicamente uma tecnologia que permite ao usuário ter acesso ao conteúdo multimídia sem a obrigação de baixar o arquivo. Funciona da seguinte forma: Quando o usuário clica em um link solicitando a reprodução de um arquivo streaming, inicia-se o download das informações. Antes de começar a executar o streaming, o player armazena um certo volume de dados em um buffer, para que a transmissão ocorra sem interrupções. Quando o buffer é preenchido, o player reproduz o conteúdo.

Conteúdo

Gravar streaming usando o FlashCom/Flash Media Server é bastante facil, não precisaremos escrever o codigo em asc(ActionScript Communication File) ainda, so usaremos o action script do lado do cliente.

Abra um documeno novo no Flash, vamos criar dois movies clips do tipo video, para adicionar um objeto video na sua library, abra o painel library (windomVideo object to your library, open the Library panel (Window > Library ou Ctrl+L ou F11) a adicione um embedded Video object selecionando New Video nas opções da library.

Criando New Video Object

Criaremos um botao para quando clicando mandara a gravação para o Flash Communication Server/Flash Media Server e outro botão para parar a gravação. Um botão Play servirá para mostrar o video gravado.

Usaremos o ActionScript para capturar a camera e atachar ao video objeto, criar uma conexão com o servidor, gravar os dados da camera e mandar como streaming ao servidor e tocar a gravação no segundo video object. Quando você grava um streaming no Flash, o servidor cria arquivos com as extensões .flv para video e .idx para audio.

Arraste dois embedded Video objects da library para o palco e de os nomes de instância de Live_video e Replay_video.

O botões que encadearão as ações serão criados dinâmicamentes, certifique que os botoes estejam na library do filme. No primeiro frame da timeline, abra o painel Actions(F9).

  1. var Play_btn = _root.createClassObject(mx.controls.Button,”Play_btn”,_root.getNextHighestDepth(),{_x:120,_y:375,label:”Play”});
    var Record_btn = _root.createClassObject(mx.controls.Button,”Record_btn”,_root.getNextHighestDepth(),{_x:15,_y:375,label:”Record”});

Para definir sua aplicação no servidor, crie um diretorio chamado “gravando_stream” no seu servidor do Flash Communication Server/Flash Media Server.

Vamos chamar os metodos que ligam a camera e o microfone

  1. client_cam = Camera.get();
    client_mic = Microphone.get();
    Live_video.attachVideo(client_cam);

Agora criaremos uma função para conectar ao servidor Flash Communication Server/Flash Media Server, além de mandar o video ao servidor e pegar o video novamente via streaming

  1. function initStreams() {
    client_nc = new NetConnection();
    /*quando for usar um servidor que não seja localhost use rtmp://*/

    client_nc.connect(“rtmp:/gravando_stream”);
    client_nc.onStatus = function(info) {
    trace(“Level: ” + info.level + ” Code: ” + info.code);
    }
    out_ns = new NetStream(client_nc);
    in_ns = new NetStream(client_nc);
    Replay_video.attachVideo(in_ns);
    }
    initStreams();

Outra função será criada para gravar o video no servidor. Note que é adicionado o parametro “record” ao metodo publish, isso dira ao servidor Flash Communication Server/Flash Media Server que é para gravar o stream no servidor.

  1. function doRecord(){
    if (Record_btn.label == “Record”){
    out_ns.attachVideo(client_cam);
    out_ns.attachAudio(client_mic);
    out_ns.publish(“my_recorded_stream”, “record”);
    Play_btn.enabled = false;
    Record_btn.label = “Stop”;
    } else if (Record_btn.label == “Stop”){
    out_ns.close();
    Play_btn.enabled = true;
    Record_btn.label = “Record”;
    }
    }

Função para o botao Play, tocará o video gravado via stream

  1. function doPlay() {
    in_ns.play(“my_recorded_stream”);
    }

Dê ctrl+enter para testar a aplicação
Clique no botão Record para começar a gravar o stream depois Stop, click no botão Play para ver o video.
Apos a gravação, no seu servidor deve ser formar algo parecido com esta imagem, criada a pasta stream e dentro dela a pasta gravando_stream e dentro desta os nosso arquivos .flv e .idx.

Gravando Stream

Segue o codigo completo:

  1. client_cam = Camera.get();
    client_mic = Microphone.get();
    Live_video.attachVideo(client_cam);
    function initStreams() {
    client_nc = new NetConnection();
    client_nc.connect(“rtmp:/gravando_stream”);
    client_nc.onStatus = function(info) {
    trace(“Level: “+info.level+” Code: “+info.code);
    };
    out_ns = new NetStream(client_nc);
    in_ns = new NetStream(client_nc);
    Replay_video.attachVideo(in_ns);
    }
    initStreams();
    function doRecord() {
    if (Record_btn.label == “Record”) {
    out_ns.attachVideo(client_cam);
    out_ns.attachAudio(client_mic);
    out_ns.publish(“my_recorded_stream”, “record”);
    Play_btn.enabled = false;
    Record_btn.label = “Stop”;
    } else if (Record_btn.label == “Stop”) {
    out_ns.close();
    Play_btn.enabled = true;
    Record_btn.label = “Record”;
    }
    }
    function doPlay() {
    in_ns.play(“my_recorded_stream”);
    }
    var Play_btn = _root.createClassObject(mx.controls.Button, “Play_btn”, _root.getNextHighestDepth(), {_x:120, _y:375, label:”Play”});
    var Record_btn = _root.createClassObject(mx.controls.Button, “Record_btn”, _root.getNextHighestDepth(), {_x:15, _y:375, label:”Record”});
    Record_btn.onRelease = function():Void {
    doRecord();
    };
    Play_btn.onRelease = function():Void {
    doPlay();
    };

Veja a aplicaçao em funcionamento

Considerações Finais

Simples e fácil gravar streaming usando o Flash Communication Server/Flash Media Server.

Para saber mais:

Meu Blog FCS/FMS
http://www.dotpix.com.br/~leo/?cat=11

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/

Autor: Leonardo França – Colunista R.I.A do Portal MXSTUDIO

Qualquer dúvida envie um email para leo@dotpix.com.br ou acesse o nosso fórum e visitem meu BLOG


Assine o nosso Feed
1.404 assinantes,
assine você também!
Publique esse artigo no Twitter Salve este artigo no Delicious Cadastre esse artigo no Dihitt Cadastre esse artigo no UEBA Cadastre esse artigo no Rec6

1 Comment to Gravando Streaming com Flash Communication Server/Flash Media Server

  1. guilherme's Gravatar guilherme
    Abril 7, 2009 at 4:58 pm | Permalink

    Gostei muito do seu tutorial mais nao funcionou, teria como vc enviar o arquivo aberto para eu ver? obrigado.

1 Trackback to Gravando Streaming com Flash Communication Server/Flash Media Server

  1. By on Novembro 9, 2009 at 5:01 am

Deixe um Comentario

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">

leonardofranca