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 -~----------~----~----~----~------~----~------~--~---
Broadcast.as
Description: Binary data
package net.sziebert.tutorials; import org.red5.logging.Red5LoggerFactory; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.IConnection; import org.slf4j.Logger; /** * <code>Application</code> is a simple <code>ApplicationAdapter</code> * delegate which gets a reference to the publishing stream, plays it into a * server stream and records it. */ public class Application extends ApplicationAdapter { private static final Logger logger = Red5LoggerFactory.getLogger(Application.class, "recorder"); /* ----- ApplicationAdapter delegate methods ----- */ /** * Delegate method used to accept/reject incoming connection requests. * * @param conn * @param params * @return true/false */ @Override public boolean roomConnect(IConnection conn, Object[] params) { logger.debug("New connection attempt from {}...", conn.getRemoteAddress()); // Insure that the listeners are properly attached. return super.roomConnect(conn, params); } /** * Delegate method which logs connection/client/user disconnections. * * @param conn */ @Override public void roomDisconnect(IConnection conn) { logger.debug("Connection closed by {}...", conn.getRemoteAddress()); // Call the super class to insure that all listeners are properly dismissed. super.roomDisconnect(conn); } /* ----- Application utility methods ----- */ }
package net.sziebert.tutorials; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.IConnection; import org.red5.server.stream.ClientBroadcastStream; import org.slf4j.Logger; /** * <code>StreamManager</code> provides services for recording * the broadcast stream. */ public class StreamManager { private static final Logger logger = Red5LoggerFactory.getLogger(StreamManager.class, "recorder"); // Application components private Application app; /** * Start recording the publishing stream for the specified * <code>IConnection</code>. * * @param conn */ public void recordShow(IConnection conn) { logger.debug("Recording show for: {}", conn.getScope().getContextPath()); String streamName = String.valueOf(System.currentTimeMillis()); // Get a reference to the current broadcast stream. ClientBroadcastStream stream = (ClientBroadcastStream) app.getBroadcastStream(conn.getScope(), "hostStream"); try { // Save the stream to disk. stream.saveAs(streamName, false); } catch (Exception e) { logger.error("Error while saving stream: {}", streamName); } } /** * Stops recording the publishing stream for the specified * <code>IConnection</code>. * * @param conn */ public void stopRecordingShow(IConnection conn) { logger.debug("Stop recording show for: {}", conn.getScope().getContextPath()); // Get a reference to the current broadcast stream. ClientBroadcastStream stream = (ClientBroadcastStream) app.getBroadcastStream(conn.getScope(), "hostStream"); // Stop recording. stream.stopRecording(); } /* ----- Spring injected dependencies ----- */ public void setApplication(Application app) { this.app = app; } }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="/WEB-INF/red5-web.properties"/> </bean> <bean id="web.context" class="org.red5.server.Context" autowire="byType"/> <bean id="web.scope" class="org.red5.server.WebScope" init-method="register"> <property name="server" ref="red5.server"/> <property name="parent" ref="global.scope"/> <property name="context" ref="web.context"/> <property name="handler" ref="web.handler"/> <property name="contextPath" value="${webapp.contextPath}"/> <property name="virtualHosts" value="${webapp.virtualHosts}"/> </bean> <bean id="streamManager.service" class="net.sziebert.tutorials.StreamManager"> <property name="application" ref="web.handler"/> </bean> <bean id="web.handler" class="net.sziebert.tutorials.Application"/> </beans>