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 <[email protected]>
> 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 <[email protected]>
>
> 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
-~----------~----~----~----~------~----~------~--~---