Esse é o conectar:

private function init():void
            {
                if(bConectar.label == "Conectado")
                {
                    bConectar.label = "Conectar ao servidor";
                    statusImage.source = "off.png";
                } else {
                    if(nc != null)
                    nc = null;
                nc = new NetConnection();
                nc.addEventListener( NetStatusEvent.NET_STATUS, netStatus );
                nc.connect("rtmp://empresa.com.br/oflaDemo/test");
                // Este aplicxativo contém os métodos chamados pelo servidor
                nc.client = this;
                usuario.editable = true;
                }
            }

e o transmitir:

private function controlador():void
            {
                if(controller.source == "play.png"){
                     controller.source = "stop.png";
                    nsPub = new NetStream (nc);
                    var camera:Camera = Camera.getCamera();
                    camera.setMode(320, 240, 15, false);
                      camera.setQuality(0, 80);
                      camera.setKeyFrameInterval(15);
                    nsPub.attachCamera(camera);
                    var microphone:Microphone = Microphone.getMicrophone();
                    nsPub.attachAudio(microphone);
                    // nome que será publicado
                    nsPub.publish("hostStream", "live");
                } else {
                    controller.source = "play.png";
                    nsPub.close()
                    nsPub = null
                }
            }



2009/7/8 Vinão <vinu...@gmail.com>

> Erko,
>
> Estou utilizando o projeto oflaDemo agora e alterei o meu onClick e agora
> está dessa forma:
>
> private function onClick():void {
>             // Record the stream by triggering a server event.
>             if (record.label == "Record") {
>                 Alert.show("Application.appConnect");
>                 // Tell the remote server to start recording.
>                 nc.call("Application.appConnect", null);
>                 // Re-label the button.
>                 record.label = "Stop";
>             // Stop recording the stream.
>             } else if (record.label == "Stop") {
>                 // Tell the remote server to stop recording.
>                 nc.call("Application.appDisconnect", null);
>                 // Re-label the button.
>                 record.label = "Record";
>             }
>
> O oflaDemo contém essas classes:
>
> Application:
> package org.red5.server.webapp.oflaDemo;
>
> import org.red5.server.adapter.ApplicationAdapter;
> import org.red5.server.api.IBandwidthConfigure;
> import org.red5.server.api.IConnection;
> import org.red5.server.api.IScope;
> import org.red5.server.api.stream.IServerStream;
> import org.red5.server.api.stream.IStreamCapableConnection;
> import org.red5.server.api.stream.support.SimpleConnectionBWConfig;
>
> public class Application extends ApplicationAdapter {
>     private IScope appScope;
>
>     private IServerStream serverStream;
>
>     /** {...@inheritdoc} */
>     @Override
>     public boolean appStart(IScope app) {
>         appScope = app;
>         return true;
>     }
>
>     /** {...@inheritdoc} */
>     @Override
>     public boolean appConnect(IConnection conn, Object[] params) {
>         // Trigger calling of "onBWDone", required for some FLV players
>         measureBandwidth(conn);
>         if (conn instanceof IStreamCapableConnection) {
>             IStreamCapableConnection streamConn =
> (IStreamCapableConnection) conn;
>             SimpleConnectionBWConfig bwConfig = new
> SimpleConnectionBWConfig();
>
> bwConfig.getChannelBandwidth()[IBandwidthConfigure.OVERALL_CHANNEL] =
>                 1024 * 1024;
>
> bwConfig.getChannelInitialBurst()[IBandwidthConfigure.OVERALL_CHANNEL] =
>                 128 * 1024;
>             streamConn.setBandwidthConfigure(bwConfig);
>         }
>
> //        if (appScope == conn.getScope()) {
> //            serverStream = StreamUtils.createServerStream(appScope,
> "live0");
> //            SimplePlayItem item = new SimplePlayItem();
> //            item.setStart(0);
> //            item.setLength(10000);
> //            item.setName("on2_flash8_w_audio");
> //            serverStream.addItem(item);
> //            item = new SimplePlayItem();
> //            item.setStart(20000);
> //            item.setLength(10000);
> //            item.setName("on2_flash8_w_audio");
> //            serverStream.addItem(item);
> //            serverStream.start();
> //            try {
> //                serverStream.saveAs("aaa", false);
> //                serverStream.saveAs("bbb", false);
> //            } catch (Exception e) {}
> //        }
>
>         return super.appConnect(conn, params);
>     }
>
>     /** {...@inheritdoc} */
>     @Override
>     public void appDisconnect(IConnection conn) {
>         if (appScope == conn.getScope() && serverStream != null) {
>             serverStream.close();
>         }
>         super.appDisconnect(conn);
>     }
> }
>
> DemoService:
> package org.red5.server.webapp.oflaDemo;
>
> import java.io.File;
> import java.io.IOException;
> import java.text.SimpleDateFormat;
> import java.util.Date;
> import java.util.HashMap;
> import java.util.Locale;
> import java.util.Map;
>
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
>
> import org.red5.server.api.IScope;
> import org.red5.server.api.Red5;
> import org.springframework.core.io.Resource;
>
> public class DemoService {
>
>     protected static Logger log =
> LoggerFactory.getLogger(DemoService.class);
>
>     private String formatDate(Date date) {
>         SimpleDateFormat formatter;
>         String pattern = "dd/MM/yy H:mm:ss";
>         Locale locale = new Locale("en", "US");
>         formatter = new SimpleDateFormat(pattern, locale);
>         return formatter.format(date);
>     }
>
>     /**
>      * Getter for property 'listOfAvailableFLVs'.
>      *
>      * @return Value for property 'listOfAvailableFLVs'.
>      */
>     public Map getListOfAvailableFLVs() {
>         IScope scope = Red5.getConnectionLocal().getScope();
>         Map<String, Map> filesMap = new HashMap<String, Map>();
>         try {
>             log.debug("getting the FLV files");
>             Resource[] flvs = scope.getResources("streams/*.flv");
>             addToMap(filesMap, flvs);
>
>             Resource[] mp3s = scope.getResources("streams/*.mp3");
>             addToMap(filesMap, mp3s);
>
>
>         } catch (IOException e) {
>             log.error("{}", e);
>         }
>         return filesMap;
>     }
>
>     private void addToMap(Map<String, Map> filesMap, Resource[] files)
>             throws IOException {
>         if (files != null) {
>             for (Resource flv : files) {
>                 File file = flv.getFile();
>                 Date lastModifiedDate = new Date(file.lastModified());
>                 String lastModified = formatDate(lastModifiedDate);
>                 String flvName = flv.getFile().getName();
>                 String flvBytes = Long.toString(file.length());
>                 if (log.isDebugEnabled()) {
>                     log.debug("flvName: {}", flvName);
>                     log.debug("lastModified date: {}", lastModified);
>                     log.debug("flvBytes: {}", flvBytes);
>                     log.debug("-------");
>                 }
>                 Map<String, Object> fileInfo = new HashMap<String,
> Object>();
>                 fileInfo.put("name", flvName);
>                 fileInfo.put("lastModified", lastModified);
>                 fileInfo.put("size", flvBytes);
>                 filesMap.put(flvName, fileInfo);
>             }
>         }
>     }
>
> }
>
> DemoServiceImpl:
> package org.red5.server.webapp.oflaDemo;
>
> import java.util.HashMap;
> import java.util.Map;
>
> public class DemoServiceImpl implements IDemoService {
>     /**
>      * Getter for property 'listOfAvailableFLVs'.
>      *
>      * @return Value for property 'listOfAvailableFLVs'.
>      */
>     public Map getListOfAvailableFLVs() {
>         System.out.println("getListOfAvailableFLVs empty");
>         return new HashMap(1);
>     }
>
>     public Map getListOfAvailableFLVs(String string) {
>         System.out.println("getListOfAvailableFLVs, Got a string: " +
> string);
>         return getListOfAvailableFLVs();
>     }
>
> }
>
>
> IDemoService:
> package org.red5.server.webapp.oflaDemo;
>
> import java.util.Map;
>
> public interface IDemoService {
>
>     /**
>      * Getter for property 'listOfAvailableFLVs'.
>      *
>      * @return Value for property 'listOfAvailableFLVs'.
>      */
>     public Map getListOfAvailableFLVs();
>
>     public Map getListOfAvailableFLVs(String string);
>
> }
>
> Estou conseguiu transmitir e assistir, mas não grava. Usando o exemplo do
> Red5 que usa também o oflaDemo grava direitinho. Queria dar uma olhada no
> fonte, ma sé um swf.
>
> Obrigado,
> Vinicius.
>
>
>
> 2009/7/8 Erko Bridee de Almeida Cabrera <erko.bri...@gmail.com>
>
> Vinicius,
>>
>> - então aonde você vai mudar não é no Flex...
>>
>> - você tem que implementar o suporte no lado do Red5, código java lá
>>
>> ----
>>
>> observe os arquivos em anexo:
>>
>> 1 - red5-web.xml
>> você vai precisar fazer essa configuração
>>
>> 2 - vai precisar implementar classes de suporte para gerenciar o stream e
>> efetuar a gravação
>> essas classes estão mapeadas no XML, veja a classe StreamManager.java é
>> nela que é
>> feito a gravação para arquivo do Stream, observe a linha 29, veja que está
>> monitorando *hostStream*
>>
>> 3 - observe a classe ActionScript
>> métodos:
>> - initConnection() > linha 71
>> ali é feito a conexão do Flex/Flash com o Red5
>>
>> - publish() > linha 80
>> observe o código do método, e importate observe a linha: 86
>>
>> ali você define a parte fundamental, lembre que lá na codificação de
>> suporte java no Red5, você está monitorando
>> a publicação com nome *hostStream* ali é onde você define no Flex/Flash
>> para publicar com esse nome, com isso
>> vai ser captado pela funcionalidade que irá gravar o vídeo no Red5
>>
>> ---
>>
>> será que ajudou em algo ? =D
>>
>> qq coisa diga ae o/
>>
>>
>> --
>> Att,
>> Erko Bridee de Almeida Cabrera
>> http://erkobridee.com/
>> http://gospel.erkobridee.com/
>> http://www.cwbfx.com/
>> http://www.portaljava.com/
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Reply via email to