Class ServerStream

  • All Implemented Interfaces:
    org.red5.server.api.stream.IBroadcastStream, org.red5.server.api.stream.IPlaylist, IServerStream, org.red5.server.api.stream.IStream, org.red5.server.messaging.IConsumer, org.red5.server.messaging.IFilter, org.red5.server.messaging.IMessageComponent, org.red5.server.messaging.IPipeConnectionListener, org.red5.server.messaging.IProvider, org.red5.server.messaging.IPushableConsumer

    public class ServerStream
    extends org.red5.server.stream.AbstractStream
    implements IServerStream, org.red5.server.messaging.IFilter, org.red5.server.messaging.IPushableConsumer, org.red5.server.messaging.IPipeConnectionListener
    An implementation for server side stream.
    Author:
    The Red5 Project, Steven Gong ([email protected]), Paul Gregoire ([email protected])
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.red5.server.api.stream.IPlaylistController controller
      Actual playlist controller
      protected org.red5.server.api.stream.IPlayItem currentItem
      Current item
      protected org.red5.server.api.stream.IPlaylistController defaultController
      Default playlist controller
      protected CopyOnWriteArrayList<org.red5.server.api.stream.IPlayItem> items
      List of items in this playlist
      protected String publishedName
      Stream published name
      • Fields inherited from class org.red5.server.stream.AbstractStream

        creationTime, startTime, state
      • Fields inherited from interface org.red5.server.messaging.IPushableConsumer

        KEY
    • Constructor Summary

      Constructors 
      Constructor Description
      ServerStream()
      Constructs a new ServerStream.
    • Field Detail

      • publishedName

        protected String publishedName
        Stream published name
      • controller

        protected org.red5.server.api.stream.IPlaylistController controller
        Actual playlist controller
      • defaultController

        protected org.red5.server.api.stream.IPlaylistController defaultController
        Default playlist controller
      • items

        protected CopyOnWriteArrayList<org.red5.server.api.stream.IPlayItem> items
        List of items in this playlist
      • currentItem

        protected org.red5.server.api.stream.IPlayItem currentItem
        Current item
    • Constructor Detail

      • ServerStream

        public ServerStream()
        Constructs a new ServerStream.
    • Method Detail

      • addItem

        public void addItem​(org.red5.server.api.stream.IPlayItem item)
        Specified by:
        addItem in interface org.red5.server.api.stream.IPlaylist
      • addItem

        public void addItem​(org.red5.server.api.stream.IPlayItem item,
                            int index)
        Specified by:
        addItem in interface org.red5.server.api.stream.IPlaylist
      • removeItem

        public void removeItem​(int index)
        Specified by:
        removeItem in interface org.red5.server.api.stream.IPlaylist
      • removeAllItems

        public void removeAllItems()
        Specified by:
        removeAllItems in interface org.red5.server.api.stream.IPlaylist
      • getItemSize

        public int getItemSize()
        Specified by:
        getItemSize in interface org.red5.server.api.stream.IPlaylist
      • getCurrentItemIndex

        public int getCurrentItemIndex()
        Specified by:
        getCurrentItemIndex in interface org.red5.server.api.stream.IPlaylist
      • getCurrentItem

        public org.red5.server.api.stream.IPlayItem getCurrentItem()
        Specified by:
        getCurrentItem in interface org.red5.server.api.stream.IPlaylist
      • getItem

        public org.red5.server.api.stream.IPlayItem getItem​(int index)
        Specified by:
        getItem in interface org.red5.server.api.stream.IPlaylist
      • previousItem

        public void previousItem()
        Specified by:
        previousItem in interface org.red5.server.api.stream.IPlaylist
      • hasMoreItems

        public boolean hasMoreItems()
        Specified by:
        hasMoreItems in interface org.red5.server.api.stream.IPlaylist
      • nextItem

        public void nextItem()
        Specified by:
        nextItem in interface org.red5.server.api.stream.IPlaylist
      • setItem

        public void setItem​(int index)
        Specified by:
        setItem in interface org.red5.server.api.stream.IPlaylist
      • isRandom

        public boolean isRandom()
        Specified by:
        isRandom in interface org.red5.server.api.stream.IPlaylist
      • setRandom

        public void setRandom​(boolean random)
        Specified by:
        setRandom in interface org.red5.server.api.stream.IPlaylist
      • isRewind

        public boolean isRewind()
        Specified by:
        isRewind in interface org.red5.server.api.stream.IPlaylist
      • setRewind

        public void setRewind​(boolean rewind)
        Specified by:
        setRewind in interface org.red5.server.api.stream.IPlaylist
      • isRepeat

        public boolean isRepeat()
        Specified by:
        isRepeat in interface org.red5.server.api.stream.IPlaylist
      • setRepeat

        public void setRepeat​(boolean repeat)
        Specified by:
        setRepeat in interface org.red5.server.api.stream.IPlaylist
      • setPlaylistController

        public void setPlaylistController​(org.red5.server.api.stream.IPlaylistController controller)
        Specified by:
        setPlaylistController in interface org.red5.server.api.stream.IPlaylist
      • saveAs

        public void saveAs​(String name,
                           boolean isAppend)
                    throws IOException
        Specified by:
        saveAs in interface org.red5.server.api.stream.IBroadcastStream
        Throws:
        IOException
      • getSaveFilename

        public String getSaveFilename()
        Specified by:
        getSaveFilename in interface org.red5.server.api.stream.IBroadcastStream
      • getProvider

        public org.red5.server.messaging.IProvider getProvider()
        Specified by:
        getProvider in interface org.red5.server.api.stream.IBroadcastStream
      • getPublishedName

        public String getPublishedName()
        Specified by:
        getPublishedName in interface org.red5.server.api.stream.IBroadcastStream
      • setPublishedName

        public void setPublishedName​(String name)
        Specified by:
        setPublishedName in interface org.red5.server.api.stream.IBroadcastStream
      • start

        public void start()
        Start this server-side stream
        Specified by:
        start in interface org.red5.server.api.stream.IStream
      • stop

        public void stop()
        Stop this server-side stream
        Specified by:
        stop in interface org.red5.server.api.stream.IStream
      • stopRecording

        public void stopRecording()
        Stops any currently active recording.
      • pause

        public void pause()
        Toggles the paused state.
        Specified by:
        pause in interface IServerStream
      • seek

        public void seek​(int position)
        Seek to a given position in the stream.
        Specified by:
        seek in interface IServerStream
        Parameters:
        position - new playback position in milliseconds
      • close

        public void close()
        Specified by:
        close in interface org.red5.server.api.stream.IStream
      • onOOBControlMessage

        public void onOOBControlMessage​(org.red5.server.messaging.IMessageComponent source,
                                        org.red5.server.messaging.IPipe pipe,
                                        org.red5.server.messaging.OOBControlMessage oobCtrlMsg)
        Specified by:
        onOOBControlMessage in interface org.red5.server.messaging.IMessageComponent
      • pushMessage

        public void pushMessage​(org.red5.server.messaging.IPipe pipe,
                                org.red5.server.messaging.IMessage message)
                         throws IOException
        Specified by:
        pushMessage in interface org.red5.server.messaging.IPushableConsumer
        Throws:
        IOException
      • onPipeConnectionEvent

        public void onPipeConnectionEvent​(org.red5.server.messaging.PipeConnectionEvent event)
        Pipe connection event handler. There are two types of pipe connection events so far, provider push connection event and provider disconnection event. Pipe events handling is the most common way of working with pipes.
        Specified by:
        onPipeConnectionEvent in interface org.red5.server.messaging.IPipeConnectionListener
        Parameters:
        event - Pipe connection event context
      • play

        protected void play​(org.red5.server.api.stream.IPlayItem item)
        Play a specific IPlayItem. The strategy for now is VOD first, Live second.
        Parameters:
        item - Item to play
      • onItemEnd

        protected void onItemEnd()
        Play next item on item end
      • startBroadcastVOD

        protected void startBroadcastVOD()
        Begin VOD broadcasting
      • notifyBroadcastClose

        protected void notifyBroadcastClose()
        Notifies handler on stream broadcast stop
      • notifyBroadcastStart

        protected void notifyBroadcastStart()
        Notifies handler on stream broadcast start
      • scheduleNextMessage

        protected void scheduleNextMessage()
        Pull the next message from IMessageInput and schedule it for push according to the timestamp.
      • getNextRTMPMessage

        protected org.red5.server.stream.message.RTMPMessage getNextRTMPMessage()
        Getter for next RTMP message.
        Returns:
        Next RTMP message
      • moveToNext

        protected void moveToNext()
        Move to the next item updating the currentItemIndex.
      • moveToPrevious

        protected void moveToPrevious()
        Move to the previous item updating the currentItemIndex.
      • addStreamListener

        public void addStreamListener​(org.red5.server.api.stream.IStreamListener listener)
        Specified by:
        addStreamListener in interface org.red5.server.api.stream.IBroadcastStream
      • getStreamListeners

        public Collection<org.red5.server.api.stream.IStreamListener> getStreamListeners()
        Specified by:
        getStreamListeners in interface org.red5.server.api.stream.IBroadcastStream
      • removeStreamListener

        public void removeStreamListener​(org.red5.server.api.stream.IStreamListener listener)
        Specified by:
        removeStreamListener in interface org.red5.server.api.stream.IBroadcastStream