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

Escrito por leonardofranca on janeiro 24, 2006. Arquivado em Flash Media Server. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

2 respostas a Gravando Streaming com Flash Communication Server/Flash Media Server

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

  2. Pingback: Piano

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>