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 no Grupo "flexdev" nos Grupos 
do Google.
 Para postar neste grupo, envie um e-mail para flexdev@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para 
flexdev+unsubscr...@googlegroups.com
 Para ver mais opções, visite este grupo em 
http://groups.google.com/group/flexdev?hl=pt-BR
-~----------~----~----~----~------~----~------~--~---

Responder a