[Red5commits] [1531] added simple RTMP client from Trac #94
jbauch
luke at codegent.com
Wed Jan 24 10:50:17 EST 2007
added simple RTMP client from Trac #94
Timestamp: 11/09/06 19:28:19 EST (3 months ago)
Change: 1531
Author: jbauch
Files (see diff or trac for details):
java/server/trunk/src/org/red5/samples/client
java/server/trunk/src/org/red5/samples/client/SimpleClient.java
Trac: http://mirror1.cvsdude.com/trac/osflash/red5/changeset/1531
Index: /java/server/trunk/src/org/red5/samples/client/SimpleClient.java
===================================================================
--- /java/server/trunk/src/org/red5/samples/client/SimpleClient.java (revision 1531)
+++ /java/server/trunk/src/org/red5/samples/client/SimpleClient.java (revision 1531)
@@ -0,0 +1,83 @@
+package org.red5.samples.client;
+
+import java.net.InetSocketAddress;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.mina.transport.socket.nio.SocketConnector;
+import org.red5.io.object.Deserializer;
+import org.red5.io.object.Serializer;
+import org.red5.server.net.protocol.ProtocolState;
+import org.red5.server.net.rtmp.Channel;
+import org.red5.server.net.rtmp.IRTMPHandler;
+import org.red5.server.net.rtmp.RTMPConnection;
+import org.red5.server.net.rtmp.RTMPMinaIoHandler;
+import org.red5.server.net.rtmp.codec.RTMP;
+import org.red5.server.net.rtmp.codec.RTMPCodecFactory;
+import org.red5.server.net.rtmp.event.Invoke;
+import org.red5.server.net.rtmp.message.Packet;
+import org.red5.server.service.PendingCall;
+
+/**
+ * Sample class that uses the client mode of the RTMP library
+ * to connect to the "oflaDemo" application on the current server.
+ *
+ * @see http://mirror1.cvsdude.com/trac/osflash/red5/ticket/94
+ * @author ce at publishing-etc.de
+ */
+public class SimpleClient implements IRTMPHandler {
+
+ public static void main(String[] args) {
+ RTMPCodecFactory codecFactory=new RTMPCodecFactory();
+ codecFactory.setDeserializer(new Deserializer());
+ codecFactory.setSerializer(new Serializer());
+ codecFactory.init();
+
+ RTMPMinaIoHandler ioHandler=new RTMPMinaIoHandler();
+ ioHandler.setCodecFactory(codecFactory);
+ ioHandler.setMode(RTMP.MODE_CLIENT);
+ ioHandler.setHandler(new SimpleClient());
+
+ SocketConnector connector = new SocketConnector();
+ connector.connect(new InetSocketAddress("localhost",1935), ioHandler);
+ }
+
+ public void connectionOpened(RTMPConnection conn, RTMP state) {
+ System.out.println("opened");
+ Channel channel=conn.getChannel((byte)3);
+ Map<String,Object> params=new HashMap<String, Object>();
+ params.put("app","test");
+ params.put("flashVer", "WIN 9,0,16,0");
+ params.put("swfUrl","http://localhost/test.swf");
+ params.put("tcUrl", "rtmp://localhost/oflaDemo");
+ params.put("fpad", false);
+ params.put("audioCodecs",(double)615);
+ params.put("videoCodecs",(double)76);
+ params.put("pageUrl","http://localhost/test.html");
+ params.put("objectEncoding",(double)0);
+ PendingCall pendingCall=new PendingCall("connect");
+ Invoke invoke=new Invoke(pendingCall);
+ invoke.setConnectionParams(params);
+ invoke.setInvokeId(1);
+ channel.write(invoke);
+ }
+
+ public void messageReceived(RTMPConnection conn, ProtocolState state, Object message) throws Exception {
+ System.out.println("message received "+message);
+ if(message instanceof Packet) {
+ Packet p=(Packet)message;
+ System.out.println("got packet "+p.getMessage());
+ }
+ }
+
+ public void messageSent(RTMPConnection conn, Object message) {
+ System.out.println("message sent "+message);
+
+ }
+
+ public void connectionClosed(RTMPConnection conn, RTMP state) {
+ System.out.println("connection closed");
+
+ }
+
+}
Note:
Diffs are chopped if more than 25k.
This is to get past the limit on the mailing list.
More information about the Red5commits
mailing list