org.red5.server.stream

## Class StreamService

- java.lang.Object
- - org.red5.server.stream.StreamService

All Implemented Interfaces:
  IScopeService, IStreamService

    public class StreamService
    extends Object
    implements IStreamService

Stream service

### Field Summary

### Fields inherited from interface org.red5.server.api.stream.IStreamService

`BEAN_NAME`

### Constructor Summary

Constructors
Constructor and Description
`StreamService()`

### Method Summary

Methods
`void` `closeStream()` Close stream
`void` `closeStream(IConnection connection, int streamId)` Close stream.
`int` `createStream()` Create a stream and return a corresponding id.
`void` `deleteStream(int streamId)` Close the stream if not been closed.
`void` `deleteStream(IStreamCapableConnection conn, int streamId)` Delete stream
`IBroadcastScope` `getBroadcastScope(IScope scope, String name)` Return broadcast scope object for given scope and child scope name
`void` `initStream(int streamId)` Called by FMS.
`void` `pause(Boolean pausePlayback, int position)` Pause at given position.
`void` `pauseRaw(Boolean pausePlayback, int position)` Undocumented Flash Plugin 10 call, assuming to be the alias to pause(boolean, int)
`void` `play(Boolean dontStop)` Play stream without initial stop
`void` `play(String name)` Play stream with name
`void` `play(String name, int start)` Play stream with name from start position
`void` `play(String name, int start, int length)` Play stream with name from start position and for given amount if time
`void` `play(String name, int start, int length, boolean flushPlaylist)` Publishes stream from given position for given amount of time
`void` `play(String name, int start, int length, Object reset)` Plays back a stream based on the supplied name, from the specified position for the given length of time.
`void` `play2(Map<String,?> playOptions)` Dynamic streaming play method.
`void` `play2(ObjectMap params)` Dynamic streaming play method.
`void` `play2(String oldStreamName, int start, String transition, int length, double offset, String streamName)` Dynamic streaming play method.
`void` `publish(Boolean dontStop)` Publish
`void` `publish(String name)` Publishes stream with given name
`void` `publish(String name, String mode)` Publishes stream with given name and mode
`void` `receiveAudio(boolean receive)` Can recieve audio?
`void` `receiveVideo(boolean receive)` Can recieve video?
`void` `releaseStream(String streamName)` Called by FME.
`void` `seek(int position)` Seek to position
`static void` `sendNetStreamStatus(IConnection conn, String statusCode, String description, String name, String status, int streamId)` Send `NetStream.Status` to client (Flash Player)

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### StreamService

    public StreamService()

### Method Detail

#### createStream

    public int createStream()

Create a stream and return a corresponding id.

Specified by:
  `createStream` in interface `IStreamService`
Returns:
  ID of created stream

#### initStream

    public void initStream(int streamId)

Called by FMS.

Specified by:
  `initStream` in interface `IStreamService`
Parameters:
  `streamId` - Stream id

#### closeStream

    public void closeStream()

Close stream

#### closeStream

    public void closeStream(IConnection connection,
                   int streamId)

Close stream. This method can close both IClientBroadcastStream (coming from Flash Player to Red5) and ISubscriberStream (from Red5 to Flash Player). Corresponding application handlers (streamSubscriberClose, etc.) are called as if close was initiated by Flash Player. It is recommended to remember stream id in application handlers, ex.:

     public void streamBroadcastStart(IBroadcastStream stream) {
            super.streamBroadcastStart(stream);
            if (stream instanceof IClientBroadcastStream) {
                    int publishedStreamId = ((ClientBroadcastStream)stream).getStreamId();
                    Red5.getConnectionLocal().setAttribute(PUBLISHED_STREAM_ID_ATTRIBUTE, publishedStreamId);
            }
     }

     public void streamPlaylistItemPlay(IPlaylistSubscriberStream stream, IPlayItem item, boolean isLive) {
            super.streamPlaylistItemPlay(stream, item, isLive);
            Red5.getConnectionLocal().setAttribute(WATCHED_STREAM_ID_ATTRIBUTE, stream.getStreamId());
     }

When stream is closed, corresponding NetStream status will be sent to stream provider / consumers. Implementation is based on Red5's StreamService.close()

Specified by:
  `closeStream` in interface `IStreamService`
Parameters:
  `connection` - client connection
  `streamId` - stream ID (number: 1,2,...)

#### releaseStream

    public void releaseStream(String streamName)

Called by FME.

Specified by:
  `releaseStream` in interface `IStreamService`
Parameters:
  `streamName` - stream name

#### deleteStream

    public void deleteStream(int streamId)

Close the stream if not been closed. Deallocate the related resources.

Specified by:
  `deleteStream` in interface `IStreamService`
Parameters:
  `streamId` - Stream id

#### deleteStream

    public void deleteStream(IStreamCapableConnection conn,
                    int streamId)

Delete stream

Specified by:
  `deleteStream` in interface `IStreamService`
Parameters:
  `conn` - Stream capable connection
  `streamId` - Stream id

#### pauseRaw

    public void pauseRaw(Boolean pausePlayback,
                int position)

Undocumented Flash Plugin 10 call, assuming to be the alias to pause(boolean, int)

Specified by:
  `pauseRaw` in interface `IStreamService`
Parameters:
  `pausePlayback` - Pause or resume flash
  `position` - Pause position

#### pause

    public void pause(Boolean pausePlayback,
             int position)

Pause at given position. Required as "pausePlayback" can be "null" if no flag is passed by the client

Specified by:
  `pause` in interface `IStreamService`
Parameters:
  `pausePlayback` - Pause playback or not
  `position` - Pause position

#### play

    public void play(String name,
            int start,
            int length,
            Object reset)

Plays back a stream based on the supplied name, from the specified position for the given length of time.

Parameters:
  `name` - - The name of a recorded file, or the identifier for live data. If
  `start` - - The start time, in seconds. Allowed values are -2, -1, 0, or a positive number. The default value is -2, which looks for a live stream, then a recorded stream, and if it finds neither, opens a live stream. If -1, plays only a live stream. If 0 or a positive number, plays a recorded stream, beginning start seconds in.
  `length` - - The duration of the playback, in seconds. Allowed values are -1, 0, or a positive number. The default value is -1, which plays a live or recorded stream until it ends. If 0, plays a single frame that is start seconds from the beginning of a recorded stream. If a positive number, plays a live or recorded stream for length seconds.
  `reset` - - Whether to clear a playlist. The default value is 1 or true, which clears any previous play calls and plays name immediately. If 0 or false, adds the stream to a playlist. If 2, maintains the playlist and returns all stream messages at once, rather than at intervals. If 3, clears the playlist and returns all stream messages at once.

#### play

    public void play(String name,
            int start,
            int length,
            boolean flushPlaylist)

Publishes stream from given position for given amount of time

Specified by:
  `play` in interface `IStreamService`
Parameters:
  `name` - Stream published name
  `start` - Start position
  `length` - Playback length
  `flushPlaylist` - Flush playlist?

#### play

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

Play stream with name from start position and for given amount if time

Specified by:
  `play` in interface `IStreamService`
Parameters:
  `name` - Stream name
  `start` - Start position
  `length` - Playback length

#### play

    public void play(String name,
            int start)

Play stream with name from start position

Specified by:
  `play` in interface `IStreamService`
Parameters:
  `name` - Stream name
  `start` - Start position

#### play

    public void play(String name)

Play stream with name

Specified by:
  `play` in interface `IStreamService`
Parameters:
  `name` - Stream name

#### play

    public void play(Boolean dontStop)

Play stream without initial stop

Specified by:
  `play` in interface `IStreamService`
Parameters:
  `dontStop` - Stoppage flag

#### play2

    public void play2(String oldStreamName,
             int start,
             String transition,
             int length,
             double offset,
             String streamName)

Dynamic streaming play method. This is a convenience method.

Parameters:
  `oldStreamName` -
  `start` -
  `transition` -
  `length` -
  `offset` -
  `streamName` -

#### play2

    public void play2(ObjectMap params)

Dynamic streaming play method. This is a convenience method.

Parameters:
  `params` -

#### play2

    public void play2(Map<String,?> playOptions)

Dynamic streaming play method. The following properties are supported on the play options:

                    streamName: String. The name of the stream to play or the new stream to switch to.
                    oldStreamName: String. The name of the initial stream that needs to be switched out. This is not needed and ignored
                                   when play2 is used for just playing the stream and not switching to a new stream.
                    start: Number. The start time of the new stream to play, just as supported by the existing play API. and it has the
                                   same defaults. This is ignored when the method is called for switching (in other words, the transition
                                   is either NetStreamPlayTransition.SWITCH or NetStreamPlayTransitions.SWAP)
                    len: Number. The duration of the playback, just as supported by the existing play API and has the same defaults.
                    transition: String. The transition mode for the playback command. It could be one of the following:
                                                            NetStreamPlayTransitions.RESET
                                                            NetStreamPlayTransitions.APPEND
                                                            NetStreamPlayTransitions.SWITCH
                                                            NetStreamPlayTransitions.SWAP

NetStreamPlayTransitions:

                            APPEND : String = "append" - Adds the stream to a playlist and begins playback with the first stream.
                            APPEND_AND_WAIT : String = "appendAndWait" - Builds a playlist without starting to play it from the first stream.
                            RESET : String = "reset" - Clears any previous play calls and plays the specified stream immediately.
                            RESUME : String = "resume" - Requests data from the new connection starting from the point at which the previous connection ended.
                            STOP : String = "stop" - Stops playing the streams in a playlist.
                            SWAP : String = "swap" - Replaces a content stream with a different content stream and maintains the rest of the playlist.
                            SWITCH : String = "switch" - Switches from playing one stream to another stream, typically with streams of the same content.

See Also:
  ActionScript guide to dynamic streaming, Dynamic streaming in Flash Media Server - Part 1: Overview of the new capabilities, NetStreamPlayTransitions

#### publish

    public void publish(Boolean dontStop)

Publish

Specified by:
  `publish` in interface `IStreamService`
Parameters:
  `dontStop` - Whether need to stop first

#### publish

    public void publish(String name,
               String mode)

Publishes stream with given name and mode

Specified by:
  `publish` in interface `IStreamService`
Parameters:
  `name` - Stream published name
  `mode` - Stream publishing mode

#### publish

    public void publish(String name)

Publishes stream with given name

Specified by:
  `publish` in interface `IStreamService`
Parameters:
  `name` - Stream published name

#### seek

    public void seek(int position)

Seek to position

Specified by:
  `seek` in interface `IStreamService`
Parameters:
  `position` - Seek position

#### receiveVideo

    public void receiveVideo(boolean receive)

Can recieve video?

Specified by:
  `receiveVideo` in interface `IStreamService`
Parameters:
  `receive` - Boolean flag

#### receiveAudio

    public void receiveAudio(boolean receive)

Can recieve audio?

Specified by:
  `receiveAudio` in interface `IStreamService`
Parameters:
  `receive` - Boolean flag

#### getBroadcastScope

    public IBroadcastScope getBroadcastScope(IScope scope,
                                    String name)

Return broadcast scope object for given scope and child scope name

Parameters:
  `scope` - Scope object
  `name` - Child scope name
Returns:
  Broadcast scope

#### sendNetStreamStatus

    public static void sendNetStreamStatus(IConnection conn,
                           String statusCode,
                           String description,
                           String name,
                           String status,
                           int streamId)

Send `NetStream.Status` to client (Flash Player)

Parameters:
  `conn` - connection
  `statusCode` - NetStream status code
  `description` - description
  `name` - name
  `status` - The status - error, warning, or status
  `streamId` - stream id