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 [email protected] Para sair da lista, envie um email em branco para [email protected] 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>
