org.red5.server.net.rtmp
Class RTMPClient

java.lang.Object
  extended by org.red5.server.net.rtmp.BaseRTMPHandler
      extended by org.red5.server.net.rtmp.RTMPClient
All Implemented Interfaces:
IRTMPHandler, Constants, StatusCodes, org.springframework.context.ApplicationContextAware

public class RTMPClient
extends BaseRTMPHandler

RTMP client object. Initial client mode code by Christian Eckerle.

Author:
The Red5 Project (red5@osflash.org), Christian Eckerle (ce@publishing-etc.de), Joachim Bauch (jojo@struktur.de), Paul Gregoire (mondain@gmail.com), Steven Gong (steven.gong@gmail.com)

Nested Class Summary
static interface RTMPClient.INetStreamEventHandler
           
 
Field Summary
protected static org.slf4j.Logger log
          Logger
 
Fields inherited from class org.red5.server.net.rtmp.BaseRTMPHandler
appCtx
 
Fields inherited from interface org.red5.server.net.rtmp.message.Constants
ACTION_CLOSE_STREAM, ACTION_CONNECT, ACTION_CREATE_STREAM, ACTION_DELETE_STREAM, ACTION_DISCONNECT, ACTION_PAUSE, ACTION_PLAY, ACTION_PUBLISH, ACTION_RECEIVE_AUDIO, ACTION_RECEIVE_VIDEO, ACTION_RELEASE_STREAM, ACTION_SEEK, ACTION_STOP, HANDSHAKE_SIZE, HEADER_CONTINUE, HEADER_NEW, HEADER_SAME_SOURCE, HEADER_TIMER_CHANGE, MEDIUM_INT_MAX, SO_CLIENT_CLEAR_DATA, SO_CLIENT_DELETE_DATA, SO_CLIENT_INITIAL_DATA, SO_CLIENT_SEND_MESSAGE, SO_CLIENT_STATUS, SO_CLIENT_UPDATE_ATTRIBUTE, SO_CLIENT_UPDATE_DATA, SO_CONNECT, SO_DELETE_ATTRIBUTE, SO_DISCONNECT, SO_SEND_MESSAGE, SO_SET_ATTRIBUTE, TYPE_AUDIO_DATA, TYPE_BYTES_READ, TYPE_CHUNK_SIZE, TYPE_CLIENT_BANDWIDTH, TYPE_FLEX_MESSAGE, TYPE_FLEX_SHARED_OBJECT, TYPE_FLEX_STREAM_SEND, TYPE_INVOKE, TYPE_NOTIFY, TYPE_PING, TYPE_SERVER_BANDWIDTH, TYPE_SHARED_OBJECT, TYPE_STREAM_METADATA, TYPE_VIDEO_DATA
 
Fields inherited from interface org.red5.server.net.rtmp.status.StatusCodes
APP_GC, APP_RESOURCE_LOWMEMORY, APP_SCRIPT_ERROR, APP_SCRIPT_WARNING, APP_SHUTDOWN, NC_CALL_BADVERSION, NC_CALL_FAILED, NC_CONNECT_APPSHUTDOWN, NC_CONNECT_CLOSED, NC_CONNECT_FAILED, NC_CONNECT_INVALID_APPLICATION, NC_CONNECT_REJECTED, NC_CONNECT_SUCCESS, NS_CLEAR_FAILED, NS_CLEAR_SUCCESS, NS_DATA_START, NS_FAILED, NS_INVALID_ARGUMENT, NS_PAUSE_NOTIFY, NS_PLAY_COMPLETE, NS_PLAY_FAILED, NS_PLAY_FILE_STRUCTURE_INVALID, NS_PLAY_INSUFFICIENT_BW, NS_PLAY_NO_SUPPORTED_TRACK_FOUND, NS_PLAY_PUBLISHNOTIFY, NS_PLAY_RESET, NS_PLAY_START, NS_PLAY_STOP, NS_PLAY_STREAMNOTFOUND, NS_PLAY_SWITCH, NS_PLAY_UNPUBLISHNOTIFY, NS_PUBLISH_BADNAME, NS_PUBLISH_START, NS_RECORD_FAILED, NS_RECORD_NOACCESS, NS_RECORD_START, NS_RECORD_STOP, NS_SEEK_FAILED, NS_SEEK_NOTIFY, NS_UNPAUSE_NOTIFY, NS_UNPUBLISHED_SUCCESS, SO_CREATION_FAILED, SO_NO_READ_ACCESS, SO_NO_WRITE_ACCESS, SO_PERSISTENCE_MISMATCH
 
Constructor Summary
RTMPClient()
          Constructs a new RTMPClient.
 
Method Summary
 void connect(String server, int port, Map<String,Object> connectionParams)
          Connect RTMP client to server via given port and with given connection parameters
 void connect(String server, int port, Map<String,Object> connectionParams, IPendingServiceCallback connectCallback)
           
 void connect(String server, int port, String application)
          Connect RTMP client to server's application via given port
 void connect(String server, int port, String application, IPendingServiceCallback connectCallback)
          Connect RTMP client to server's application via given port with given connection callback
 void connectionOpened(RTMPConnection conn, RTMP state)
          Connection open event
 void createStream(IPendingServiceCallback callback)
           
 void deleteStream(int streamId, IPendingServiceCallback callback)
           
 void disconnect()
          Disconnect the first connection in the connection map
 void disconnect(String clientId)
          Disconnect the connection with the matching id
 IClientSharedObject getSharedObject(String name, boolean persistent)
          Connect to client shared object.
 void invoke(String method, IPendingServiceCallback callback)
          Invoke a method on the server.
 void invoke(String method, Object[] params, IPendingServiceCallback callback)
          Invoke a method on the server and pass parameters.
protected  void onChunkSize(RTMPConnection conn, Channel channel, Header source, ChunkSize chunkSize)
          Chunk size change event handler.
protected  void onInvoke(RTMPConnection conn, Channel channel, Header source, Notify invoke, RTMP rtmp)
          Invocation event handler.
protected  void onPing(RTMPConnection conn, Channel channel, Header source, Ping ping)
          Ping event handler.
protected  void onSharedObject(RTMPConnection conn, Channel channel, Header source, SharedObjectMessage object)
          Shared object event handler.
 void play(int streamId, String name, int start, int length)
           
 void publish(int streamId, String name, String mode, RTMPClient.INetStreamEventHandler handler)
           
 void publishStreamData(int streamId, IMessage message)
           
 void setServiceProvider(Object serviceProvider)
          Register object that provides methods that can be called by the server.
 
Methods inherited from class org.red5.server.net.rtmp.BaseRTMPHandler
connectionClosed, getHostname, getStreamId, handlePendingCallResult, messageReceived, messageSent, onStreamBytesRead, setApplicationContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static org.slf4j.Logger log
Logger

Constructor Detail

RTMPClient

public RTMPClient()
Constructs a new RTMPClient.

Method Detail

connect

public void connect(String server,
                    int port,
                    String application)
Connect RTMP client to server's application via given port

Parameters:
server - Server
port - Connection port
application - Application at that server

connect

public void connect(String server,
                    int port,
                    String application,
                    IPendingServiceCallback connectCallback)
Connect RTMP client to server's application via given port with given connection callback

Parameters:
server - Server
port - Connection port
application - Application at that server
connectCallback - Connection callback

connect

public void connect(String server,
                    int port,
                    Map<String,Object> connectionParams)
Connect RTMP client to server via given port and with given connection parameters

Parameters:
server - Server
port - Connection port
connectionParams - Connection parameters

connect

public void connect(String server,
                    int port,
                    Map<String,Object> connectionParams,
                    IPendingServiceCallback connectCallback)
Parameters:
server -
port -
connectionParams -
connectCallback -

disconnect

public void disconnect()
Disconnect the first connection in the connection map


disconnect

public void disconnect(String clientId)
Disconnect the connection with the matching id


setServiceProvider

public void setServiceProvider(Object serviceProvider)
Register object that provides methods that can be called by the server.

Parameters:
serviceProvider - Service provider

getSharedObject

public IClientSharedObject getSharedObject(String name,
                                           boolean persistent)
Connect to client shared object.

Parameters:
name - Client shared object name
persistent - SO persistence flag
Returns:
Client shared object instance

invoke

public void invoke(String method,
                   IPendingServiceCallback callback)
Invoke a method on the server.

Parameters:
method - Method name
callback - Callback handler

invoke

public void invoke(String method,
                   Object[] params,
                   IPendingServiceCallback callback)
Invoke a method on the server and pass parameters.

Parameters:
method - Method
params - Method call parameters
callback - Callback object

createStream

public void createStream(IPendingServiceCallback callback)

deleteStream

public void deleteStream(int streamId,
                         IPendingServiceCallback callback)

publish

public void publish(int streamId,
                    String name,
                    String mode,
                    RTMPClient.INetStreamEventHandler handler)

publishStreamData

public void publishStreamData(int streamId,
                              IMessage message)

play

public void play(int streamId,
                 String name,
                 int start,
                 int length)

connectionOpened

public void connectionOpened(RTMPConnection conn,
                             RTMP state)
Connection open event

Specified by:
connectionOpened in interface IRTMPHandler
Overrides:
connectionOpened in class BaseRTMPHandler
Parameters:
conn - Connection
state - RTMP state

onInvoke

protected void onInvoke(RTMPConnection conn,
                        Channel channel,
                        Header source,
                        Notify invoke,
                        RTMP rtmp)
Invocation event handler.

Specified by:
onInvoke in class BaseRTMPHandler
Parameters:
conn - Connection
channel - Channel
source - Header
invoke - Invocation event context
rtmp - RTMP connection state

onChunkSize

protected void onChunkSize(RTMPConnection conn,
                           Channel channel,
                           Header source,
                           ChunkSize chunkSize)
Chunk size change event handler. Abstract, to be implemented in subclasses.

Specified by:
onChunkSize in class BaseRTMPHandler
Parameters:
conn - Connection
channel - Channel
source - Header
chunkSize - New chunk size

onPing

protected void onPing(RTMPConnection conn,
                      Channel channel,
                      Header source,
                      Ping ping)
Ping event handler.

Specified by:
onPing in class BaseRTMPHandler
Parameters:
conn - Connection
channel - Channel
source - Header
ping - Ping event context

onSharedObject

protected void onSharedObject(RTMPConnection conn,
                              Channel channel,
                              Header source,
                              SharedObjectMessage object)
Shared object event handler.

Specified by:
onSharedObject in class BaseRTMPHandler
Parameters:
conn - Connection
channel - Channel
source - Header
object - Shared object event context


Copyright © 2006-2007 the Red5 project.