(no subject)

View: New views
2 Messages — Rating Filter:   Alert me  

(no subject)

by Aily Raesi :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


This is the class that I need to run,but imagine I want to run the class from a web browser,that's why I need to run this class from actionscript..
I add this class to the webapps in the server to test app for example,and a method to the application class that call this class, and I used the code below to run that method,this is the actionscript code:

nc=new NetConnection();
nc.connect("rtmp://localhost/test");
nc.onStatus=function(obj)
{
    for (e in obj)
    {
        trace(e + " : " +obj[e]);
    }
};
nc.onResult=function(obj)
{
trace("The result is " + obj);
};
nc.call("sample",nc)


and this is the java class that I need to be run from the browser client:
package org;
import java.io.File;
import java.util.Timer;

import org.apache.log4j.PropertyConfigurator;
import org.red5.io.ITag;
import org.red5.io.ITagReader;
import org.red5.io.flv.IFLV;
import org.red5.io.flv.impl.FLVReader;
import org.red5.io.flv.impl.FLVService;
import org.red5.io.flv.meta.IMetaData;
import org.red5.io.flv.meta.MetaData;
import org.red5.io.flv.meta.MetaService;
import org.red5.io.object.Deserializer;
import org.red5.io.object.Serializer;
import org.red5.io.utils.ObjectMap;
import org.red5.server.api.event.IEvent;
import org.red5.server.api.event.IEventDispatcher;
import org.red5.server.api.service.IPendingServiceCall;
import org.red5.server.api.service.IPendingServiceCallback;
import org.red5.server.cache.NoCacheImpl;
import org.red5.server.net.rtmp.Channel;
import org.red5.server.net.rtmp.RTMPClient;
import org.red5.server.net.rtmp.RTMPConnection;
import org.red5.server.net.rtmp.RTMPClient.INetStreamEventHandler;
import org.red5.server.net.rtmp.codec.RTMP;
import org.red5.server.net.rtmp.event.ChunkSize;
import org.red5.server.net.rtmp.event.IRTMPEvent;
import org.red5.server.net.rtmp.event.Notify;
import org.red5.server.net.rtmp.message.Header;
import org.red5.server.net.rtmp.status.StatusCodes;
import org.red5.server.stream.FileStreamSource;
import org.red5.server.*;
import org.red5.server.stream.message.RTMPMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class test extends RTMPClient implements INetStreamEventHandler, IPendingServiceCallback, IEventDispatcher
{
     private static final Logger logger = LoggerFactory.getLogger(test.class);

     private int streamId;
     String host = "127.0.0.1";
     String app = "oflaDemo";
     int port = 1935;
     static RTMPClient rClient=new RTMPClient();
      
     

     public test() {
        
             super();
             PropertyConfigurator.configure("C:/Users/aily/workspace/streamTest/src/log4j.properties");

             logger.debug("connecting, host: " + host + ", app: " + app + ", port: " + port);
             connect(host, port, app, this);
             logger.debug("done.");
            
                   
//             this.createStream(this);
     }
     protected void onChunkSize(RTMPConnection conn,
             Channel channel,
             Header source,
             ChunkSize chunkSize){}

     @Override
     public void connectionClosed(RTMPConnection conn, RTMP state) {
             logger.debug("connection closed");
             super.connectionClosed(conn, state);
             System.exit(0);
     }

     public void createStream(IPendingServiceCallback callback) {
        
             super.createStream(callback);
            
             logger.debug("create stream");
      //       invoke("createStream", this);
     }


    
     public void dispatchEvent(IEvent eve) {
             logger.debug("dispatchEvent : " + eve);

     }



    
     public void onStreamEvent(Notify notify) {
             logger.debug("onStreamEvent - " + notify);



             if (notify.getCall().getServiceMethodName().equals("onStatus")) {

                     ObjectMap<String, String> map = (ObjectMap) notify.getCall().getArguments()[0];
                     String code = (String) map.get("code");
                     String description = (String) map.get("description");
                     String details = (String) map.get("details");


                     if (StatusCodes.NS_PUBLISH_START.equals(code)) {
//                             log.debug("{} for {}", new Object[]{code,details});

                             FLVService service = new FLVService();
                             service.setSerializer(new Serializer());
                             service.setDeserializer(new Deserializer());

                             log.info("Started Publishing");

                         // Read In File And Publish The Data !!
                             try {

                                             File f = new File("../teststreams/IronMan.flv");
                                             log.debug("test: {}", f);

                                             IFLV flv = (IFLV) service.getStreamableFile(f);
                                             flv.setCache(NoCacheImpl.getInstance());

                                             ITagReader reader = flv.getReader();
                                             double framerate = 0.0;
                                             double duration = 0.0;
                                             if(reader.hasMoreTags())
                                             {
                                                 ITag tag = reader.readTag();
                                                 MetaService metaSr = new MetaService();
                                                 metaSr.setDeserializer(new Deserializer());
                                                 IMetaData metaData = null;
                                                 metaData=metaSr.readMetaData(tag.getBody());
                                                 framerate = metaData.getFrameRate();
                                                 duration=metaData.getDuration();
                                                 System.out.println("framerate = " + metaData.getFrameRate()+"Duratrion = "+duration);
                                                
                                             }
                                    
                                      //       FLVReader reader = new FLVReader(f,true);
                                             log.info(" reader created");
                                             
                                             //reader.

                                             FileStreamSource src = new FileStreamSource(reader);
                                             int i=0;
                                             log.info(" src created");
                              //               reader.decodeHeader();
                                             
                                             System.out.println("header = "+flv.getMetaData());

                                             while (src.hasMore())
                                             {
                                      //           i++;
                                      //           System.out.println("\nhas data seq ="+i);
                                                     IRTMPEvent event = src.dequeue();
                                                     RTMPMessage rtmpMsg = new RTMPMessage();
                                                     rtmpMsg.setBody(event);
                                                     publishStreamData(streamId, rtmpMsg);
                                    //                 log.info(" published seq nr");
                                     //                System.out.println("="+i);
                                           
                                  //                   Timer sendingTimer = new Timer("sending timer");
                               //                      while(j<5842000)
                               //                      {
                               //                          j++;
                                //                     }
                                             }
                                             System.out.println("\nEND!!!!!!!!!!");
////
////
                                             disconnect();
                                             //deleteStream(streamId, this);
                                             //unpublish(streamId);

                             } catch (Exception ex) {
                                     
                                     log.error(ex.getCause().toString());
                             }
                     }

                     if (StatusCodes.NS_PLAY_STOP.equals(code)) {
                             logger.debug("onStatus code == NetStream.Play.Stop, disconnecting");
                             disconnect();
           }          }
      

     }
     



     
     synchronized public void resultReceived(IPendingServiceCall call) {
        
             logger.debug("service call result: " + call);

             Object result = call.getResult();

             if (result instanceof ObjectMap) {
                     if ("connect".equals(call.getServiceMethodName())) {
                             log.info("Connected");
                             createStream(this);
                     }
             }
             else {
                     if ("createStream".equals(call.getServiceMethodName())) {
                             if (result instanceof Integer) {
                                     Integer streamIdInt = (Integer) result;
                                     streamId = streamIdInt.intValue();
                                     log.debug("createStream result stream id: " + streamId);
                                     publish(streamId, "red5StreamDemo", "live", this);
                                     log.debug("published stream: " + streamId);
                             } else {
                                     log.debug("DISCONNECT!!!!!");
                                     disconnect();
                             }
                     }
             }
     

     }
     public static void main(String[] args)
     {
        new test();
        
         
     }
   
     }
 
     

   





_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

Re: (no subject)

by Andy Shaules :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.
You do not wait for onstatus event befor you make your call.
 
Fatal mistake.
----- Original Message -----
From: aily_r@...
Sent: Tuesday, July 07, 2009 12:01 PM
Subject: [Red5] (no subject)


This is the class that I need to run,but imagine I want to run the class from a web browser,that's why I need to run this class from actionscript..
I add this class to the webapps in the server to test app for example,and a method to the application class that call this class, and I used the code below to run that method,this is the actionscript code:

nc=new NetConnection();
nc.connect("rtmp://localhost/test");
nc.onStatus=function(obj)
{
    for (e in obj)
    {
        trace(e + " : " +obj[e]);
    }
};
nc.onResult=function(obj)
{
trace("The result is " + obj);
};
nc.call("sample",nc)


and this is the java class that I need to be run from the browser client:
package org;
import java.io.File;
import java.util.Timer;

import org.apache.log4j.PropertyConfigurator;
import org.red5.io.ITag;
import org.red5.io.ITagReader;
import org.red5.io.flv.IFLV;
import org.red5.io.flv.impl.FLVReader;
import org.red5.io.flv.impl.FLVService;
import org.red5.io.flv.meta.IMetaData;
import org.red5.io.flv.meta.MetaData;
import org.red5.io.flv.meta.MetaService;
import org.red5.io.object.Deserializer;
import org.red5.io.object.Serializer;
import org.red5.io.utils.ObjectMap;
import org.red5.server.api.event.IEvent;
import org.red5.server.api.event.IEventDispatcher;
import org.red5.server.api.service.IPendingServiceCall;
import org.red5.server.api.service.IPendingServiceCallback;
import org.red5.server.cache.NoCacheImpl;
import org.red5.server.net.rtmp.Channel;
import org.red5.server.net.rtmp.RTMPClient;
import org.red5.server.net.rtmp.RTMPConnection;
import org.red5.server.net.rtmp.RTMPClient.INetStreamEventHandler;
import org.red5.server.net.rtmp.codec.RTMP;
import org.red5.server.net.rtmp.event.ChunkSize;
import org.red5.server.net.rtmp.event.IRTMPEvent;
import org.red5.server.net.rtmp.event.Notify;
import org.red5.server.net.rtmp.message.Header;
import org.red5.server.net.rtmp.status.StatusCodes;
import org.red5.server.stream.FileStreamSource;
import org.red5.server.*;
import org.red5.server.stream.message.RTMPMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class test extends RTMPClient implements INetStreamEventHandler, IPendingServiceCallback, IEventDispatcher
{
     private static final Logger logger = LoggerFactory.getLogger(test.class);

     private int streamId;
     String host = "127.0.0.1";
     String app = "oflaDemo";
     int port = 1935;
     static RTMPClient rClient=new RTMPClient();
      
     

     public test() {
        
             super();
             PropertyConfigurator.configure("C:/Users/aily/workspace/streamTest/src/log4j.properties");

             logger.debug("connecting, host: " + host + ", app: " + app + ", port: " + port);
             connect(host, port, app, this);
             logger.debug("done.");
            
                   
//             this.createStream(this);
     }
     protected void onChunkSize(RTMPConnection conn,
             Channel channel,
             Header source,
             ChunkSize chunkSize){}

     @Override
     public void connectionClosed(RTMPConnection conn, RTMP state) {
             logger.debug("connection closed");
             super.connectionClosed(conn, state);
             System.exit(0);
     }

     public void createStream(IPendingServiceCallback callback) {
        
             super.createStream(callback);
            
             logger.debug("create stream");
      //       invoke("createStream", this);
     }


    
     public void dispatchEvent(IEvent eve) {
             logger.debug("dispatchEvent : " + eve);

     }



    
     public void onStreamEvent(Notify notify) {
             logger.debug("onStreamEvent - " + notify);



             if (notify.getCall().getServiceMethodName().equals("onStatus")) {

                     ObjectMap<String, String> map = (ObjectMap) notify.getCall().getArguments()[0];
                     String code = (String) map.get("code");
                     String description = (String) map.get("description");
                     String details = (String) map.get("details");


                     if (StatusCodes.NS_PUBLISH_START.equals(code)) {
//                             log.debug("{} for {}", new Object[]{code,details});

                             FLVService service = new FLVService();
                             service.setSerializer(new Serializer());
                             service.setDeserializer(new Deserializer());

                             log.info("Started Publishing");

                         // Read In File And Publish The Data !!
                             try {

                                             File f = new File("../teststreams/IronMan.flv");
                                             log.debug("test: {}", f);

                                             IFLV flv = (IFLV) service.getStreamableFile(f);
                                             flv.setCache(NoCacheImpl.getInstance());

                                             ITagReader reader = flv.getReader();
                                             double framerate = 0.0;
                                             double duration = 0.0;
                                             if(reader.hasMoreTags())
                                             {
                                                 ITag tag = reader.readTag();
                                                 MetaService metaSr = new MetaService();
                                                 metaSr.setDeserializer(new Deserializer());
                                                 IMetaData metaData = null;
                                                 metaData=metaSr.readMetaData(tag.getBody());
                                                 framerate = metaData.getFrameRate();
                                                 duration=metaData.getDuration();
                                                 System.out.println("framerate = " + metaData.getFrameRate()+"Duratrion = "+duration);
                                                
                                             }
                                    
                                      //       FLVReader reader = new FLVReader(f,true);
                                             log.info(" reader created");
                                             
                                             //reader.

                                             FileStreamSource src = new FileStreamSource(reader);
                                             int i=0;
                                             log.info(" src created");
                              //               reader.decodeHeader();
                                             
                                             System.out.println("header = "+flv.getMetaData());

                                             while (src.hasMore())
                                             {
                                      //           i++;
                                      //           System.out.println("\nhas data seq ="+i);
                                                     IRTMPEvent event = src.dequeue();
                                                     RTMPMessage rtmpMsg = new RTMPMessage();
                                                     rtmpMsg.setBody(event);
                                                     publishStreamData(streamId, rtmpMsg);
                                    //                 log.info(" published seq nr");
                                     //                System.out.println("="+i);
                                           
                                  //                   Timer sendingTimer = new Timer("sending timer");
                               //                      while(j<5842000)
                               //                      {
                               //                          j++;
                                //                     }
                                             }
                                             System.out.println("\nEND!!!!!!!!!!");
////
////
                                             disconnect();
                                             //deleteStream(streamId, this);
                                             //unpublish(streamId);

                             } catch (Exception ex) {
                                     
                                     log.error(ex.getCause().toString());
                             }
                     }

                     if (StatusCodes.NS_PLAY_STOP.equals(code)) {
                             logger.debug("onStatus code == NetStream.Play.Stop, disconnecting");
                             disconnect();
           }          }
      

     }
     



     
     synchronized public void resultReceived(IPendingServiceCall call) {
        
             logger.debug("service call result: " + call);

             Object result = call.getResult();

             if (result instanceof ObjectMap) {
                     if ("connect".equals(call.getServiceMethodName())) {
                             log.info("Connected");
                             createStream(this);
                     }
             }
             else {
                     if ("createStream".equals(call.getServiceMethodName())) {
                             if (result instanceof Integer) {
                                     Integer streamIdInt = (Integer) result;
                                     streamId = streamIdInt.intValue();
                                     log.debug("createStream result stream id: " + streamId);
                                     publish(streamId, "red5StreamDemo", "live", this);
                                     log.debug("published stream: " + streamId);
                             } else {
                                     log.debug("DISCONNECT!!!!!");
                                     disconnect();
                             }
                     }
             }
     

     }
     public static void main(String[] args)
     {
        new test();
        
         
     }
   
     }
 
     

   





_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org

_______________________________________________
Red5 mailing list
Red5@...
http://osflash.org/mailman/listinfo/red5_osflash.org