Package org.red5.server.stream
Class ServerStream
- java.lang.Object
-
- org.red5.server.stream.AbstractStream
-
- org.red5.server.stream.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 controllerprotected org.red5.server.api.stream.IPlayItem
currentItem
Current itemprotected org.red5.server.api.stream.IPlaylistController
defaultController
Default playlist controllerprotected CopyOnWriteArrayList<org.red5.server.api.stream.IPlayItem>
items
List of items in this playlistprotected String
publishedName
Stream published name
-
Constructor Summary
Constructors Constructor Description ServerStream()
Constructs a new ServerStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addItem(org.red5.server.api.stream.IPlayItem item)
void
addItem(org.red5.server.api.stream.IPlayItem item, int index)
void
addStreamListener(org.red5.server.api.stream.IStreamListener listener)
void
close()
org.red5.server.api.stream.IPlayItem
getCurrentItem()
int
getCurrentItemIndex()
org.red5.server.api.stream.IPlayItem
getItem(int index)
CopyOnWriteArrayList<org.red5.server.api.stream.IPlayItem>
getItems()
int
getItemSize()
protected org.red5.server.stream.message.RTMPMessage
getNextRTMPMessage()
Getter for next RTMP message.org.red5.server.messaging.IProvider
getProvider()
String
getPublishedName()
String
getSaveFilename()
Collection<org.red5.server.api.stream.IStreamListener>
getStreamListeners()
boolean
hasMoreItems()
boolean
isRandom()
boolean
isRepeat()
boolean
isRewind()
protected void
moveToNext()
Move to the next item updating the currentItemIndex.protected void
moveToPrevious()
Move to the previous item updating the currentItemIndex.void
nextItem()
protected void
notifyBroadcastClose()
Notifies handler on stream broadcast stopprotected void
notifyBroadcastStart()
Notifies handler on stream broadcast startprotected void
onItemEnd()
Play next item on item endvoid
onOOBControlMessage(org.red5.server.messaging.IMessageComponent source, org.red5.server.messaging.IPipe pipe, org.red5.server.messaging.OOBControlMessage oobCtrlMsg)
void
onPipeConnectionEvent(org.red5.server.messaging.PipeConnectionEvent event)
Pipe connection event handler.void
pause()
Toggles the paused state.protected void
play(org.red5.server.api.stream.IPlayItem item)
Play a specific IPlayItem.void
previousItem()
void
pushMessage(org.red5.server.messaging.IPipe pipe, org.red5.server.messaging.IMessage message)
void
removeAllItems()
void
removeItem(int index)
void
removeStreamListener(org.red5.server.api.stream.IStreamListener listener)
void
saveAs(String name, boolean isAppend)
protected void
scheduleNextMessage()
Pull the next message from IMessageInput and schedule it for push according to the timestamp.void
seek(int position)
Seek to a given position in the stream.void
setItem(int index)
void
setPlaylistController(org.red5.server.api.stream.IPlaylistController controller)
void
setPublishedName(String name)
void
setRandom(boolean random)
void
setRepeat(boolean repeat)
void
setRewind(boolean rewind)
void
start()
Start this server-side streamprotected void
startBroadcastVOD()
Begin VOD broadcastingvoid
stop()
Stop this server-side streamvoid
stopRecording()
Stops any currently active recording.String
toString()
-
Methods inherited from class org.red5.server.stream.AbstractStream
addStateChangeListener, fireStateChange, getCodecInfo, getCreationTime, getMetaData, getName, getScope, getStartTime, getState, getStreamAwareHandler, removeStateChangeListener, setCodecInfo, setMetaData, setName, setScope, setState
-
-
-
-
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
-
-
Method Detail
-
addItem
public void addItem(org.red5.server.api.stream.IPlayItem item)
- Specified by:
addItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
addItem
public void addItem(org.red5.server.api.stream.IPlayItem item, int index)
- Specified by:
addItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
removeItem
public void removeItem(int index)
- Specified by:
removeItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
removeAllItems
public void removeAllItems()
- Specified by:
removeAllItems
in interfaceorg.red5.server.api.stream.IPlaylist
-
getItemSize
public int getItemSize()
- Specified by:
getItemSize
in interfaceorg.red5.server.api.stream.IPlaylist
-
getItems
public CopyOnWriteArrayList<org.red5.server.api.stream.IPlayItem> getItems()
-
getCurrentItemIndex
public int getCurrentItemIndex()
- Specified by:
getCurrentItemIndex
in interfaceorg.red5.server.api.stream.IPlaylist
-
getCurrentItem
public org.red5.server.api.stream.IPlayItem getCurrentItem()
- Specified by:
getCurrentItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
getItem
public org.red5.server.api.stream.IPlayItem getItem(int index)
- Specified by:
getItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
previousItem
public void previousItem()
- Specified by:
previousItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
hasMoreItems
public boolean hasMoreItems()
- Specified by:
hasMoreItems
in interfaceorg.red5.server.api.stream.IPlaylist
-
nextItem
public void nextItem()
- Specified by:
nextItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
setItem
public void setItem(int index)
- Specified by:
setItem
in interfaceorg.red5.server.api.stream.IPlaylist
-
isRandom
public boolean isRandom()
- Specified by:
isRandom
in interfaceorg.red5.server.api.stream.IPlaylist
-
setRandom
public void setRandom(boolean random)
- Specified by:
setRandom
in interfaceorg.red5.server.api.stream.IPlaylist
-
isRewind
public boolean isRewind()
- Specified by:
isRewind
in interfaceorg.red5.server.api.stream.IPlaylist
-
setRewind
public void setRewind(boolean rewind)
- Specified by:
setRewind
in interfaceorg.red5.server.api.stream.IPlaylist
-
isRepeat
public boolean isRepeat()
- Specified by:
isRepeat
in interfaceorg.red5.server.api.stream.IPlaylist
-
setRepeat
public void setRepeat(boolean repeat)
- Specified by:
setRepeat
in interfaceorg.red5.server.api.stream.IPlaylist
-
setPlaylistController
public void setPlaylistController(org.red5.server.api.stream.IPlaylistController controller)
- Specified by:
setPlaylistController
in interfaceorg.red5.server.api.stream.IPlaylist
-
saveAs
public void saveAs(String name, boolean isAppend) throws IOException
- Specified by:
saveAs
in interfaceorg.red5.server.api.stream.IBroadcastStream
- Throws:
IOException
-
getSaveFilename
public String getSaveFilename()
- Specified by:
getSaveFilename
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
getProvider
public org.red5.server.messaging.IProvider getProvider()
- Specified by:
getProvider
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
getPublishedName
public String getPublishedName()
- Specified by:
getPublishedName
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
setPublishedName
public void setPublishedName(String name)
- Specified by:
setPublishedName
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
start
public void start()
Start this server-side stream- Specified by:
start
in interfaceorg.red5.server.api.stream.IStream
-
stop
public void stop()
Stop this server-side stream- Specified by:
stop
in interfaceorg.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 interfaceIServerStream
-
seek
public void seek(int position)
Seek to a given position in the stream.- Specified by:
seek
in interfaceIServerStream
- Parameters:
position
- new playback position in milliseconds
-
close
public void close()
- Specified by:
close
in interfaceorg.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 interfaceorg.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 interfaceorg.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 interfaceorg.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 interfaceorg.red5.server.api.stream.IBroadcastStream
-
getStreamListeners
public Collection<org.red5.server.api.stream.IStreamListener> getStreamListeners()
- Specified by:
getStreamListeners
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
removeStreamListener
public void removeStreamListener(org.red5.server.api.stream.IStreamListener listener)
- Specified by:
removeStreamListener
in interfaceorg.red5.server.api.stream.IBroadcastStream
-
-