Package org.red5.server.stream
Class SingleItemSubscriberStream
java.lang.Object
org.red5.server.stream.AbstractStream
org.red5.server.stream.AbstractClientStream
org.red5.server.stream.SingleItemSubscriberStream
- All Implemented Interfaces:
IClientStream
,ISingleItemSubscriberStream
,IStream
,ISubscriberStream
public class SingleItemSubscriberStream
extends AbstractClientStream
implements ISingleItemSubscriberStream
Stream of a single play item for a subscriber
- Author:
- Paul Gregoire (mondain@gmail.com)
-
Nested Class Summary
Modifier and TypeClassDescriptionclass
Handles notifications in a separate thread. -
Field Summary
Modifier and TypeFieldDescriptionprotected int
Interval in ms to check for buffer underruns in VOD streams.protected long
Timestamp this stream was created.protected PlayEngine
Plays items backprivate IPlayItem
Scheduled job namesprivate static final org.slf4j.Logger
protected ISchedulingService
Service used to provide notifications, keep client buffer filled, clean up, etc...protected int
Number of pending messages at which aFields inherited from class org.red5.server.stream.AbstractStream
lock, state
Fields inherited from interface org.red5.server.api.stream.IClientStream
MODE_APPEND, MODE_LIVE, MODE_PUBLISH, MODE_READ, MODE_RECORD
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Cancels a scheduled job by name.void
close()
Close this stream.(package private) PlayEngine
createEngine
(ISchedulingService schedulingService, IConsumerService consumerService, IProviderService providerService) Creates a play engine based on current services (scheduling service, consumer service, and provider service).boolean
isPaused()
Check if the stream is currently paused.void
onChange
(StreamState state, Object... changed) Notification of state change and associated parameters.void
pause
(int position) Pause at a position for current playing item.void
play()
Start playing.void
receiveAudio
(boolean receive) Should the stream send audio to the client?void
receiveVideo
(boolean receive) Should the stream send video to the client?void
resume
(int position) Resume from a position for current playing item.Schedule a job to be executed only once after a 10ms delay.scheduleWithFixedDelay
(IScheduledJob job, int interval) Schedule a job to be executed regularly at the given interval.void
seek
(int position) Seek into a position for current playing item.private void
Seek to current position to restart playback with audio and/or video.void
setBufferCheckInterval
(int bufferCheckInterval) Set interval to check for buffer underruns.void
setPlayItem
(IPlayItem item) Setter for property 'playItem'.void
setUnderrunTrigger
(int underrunTrigger) Set maximum number of pending messages at which avoid
start()
Start this stream.void
stop()
Stop playing.Methods inherited from class org.red5.server.stream.AbstractClientStream
getBroadcastStreamPublishName, getClientBufferDuration, getConnection, getStreamId, setBroadcastStreamPublishName, setClientBufferDuration, setConnection, setStreamId
Methods inherited from class org.red5.server.stream.AbstractStream
getAbsoluteStartTimeMs, getCodecInfo, getCreationTime, getMetaData, getName, getScope, getState, getStreamAwareHandler, setCodecInfo, setMetaData, setName, setScope, setState
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.red5.server.api.stream.IClientStream
getBroadcastStreamPublishName, getClientBufferDuration, getConnection, getStreamId, setBroadcastStreamPublishName, setClientBufferDuration
Methods inherited from interface org.red5.server.api.stream.IStream
getCodecInfo, getCreationTime, getName, getScope
Methods inherited from interface org.red5.server.api.stream.ISubscriberStream
getState, setState
-
Field Details
-
log
private static final org.slf4j.Logger log -
schedulingService
Service used to provide notifications, keep client buffer filled, clean up, etc... -
jobs
Scheduled job names -
bufferCheckInterval
protected int bufferCheckIntervalInterval in ms to check for buffer underruns in VOD streams. -
underrunTrigger
protected int underrunTriggerNumber of pending messages at which aNetStream.Play.InsufficientBW
message is generated for VOD streams. -
creationTime
protected long creationTimeTimestamp this stream was created. -
item
-
engine
Plays items back
-
-
Constructor Details
-
SingleItemSubscriberStream
public SingleItemSubscriberStream()
-
-
Method Details
-
setPlayItem
Description copied from interface:ISingleItemSubscriberStream
Setter for property 'playItem'.- Specified by:
setPlayItem
in interfaceISingleItemSubscriberStream
- Parameters:
item
- Value to set for property 'playItem'.
-
play
Description copied from interface:ISubscriberStream
Start playing.- Specified by:
play
in interfaceISubscriberStream
- Throws:
IOException
- if an IO error occurred while starting to play the stream
-
pause
public void pause(int position) Pause at a position for current playing item.- Specified by:
pause
in interfaceISubscriberStream
- Parameters:
position
- Position for pause in millisecond.
-
resume
public void resume(int position) Resume from a position for current playing item.- Specified by:
resume
in interfaceISubscriberStream
- Parameters:
position
- Position for resume in millisecond.
-
stop
public void stop()Stop playing.- Specified by:
stop
in interfaceIStream
- Specified by:
stop
in interfaceISubscriberStream
-
seek
Seek into a position for current playing item.- Specified by:
seek
in interfaceISubscriberStream
- Parameters:
position
- Position for seek in millisecond.- Throws:
OperationNotSupportedException
- if the stream doesn't support seeking.
-
isPaused
public boolean isPaused()Description copied from interface:ISubscriberStream
Check if the stream is currently paused.- Specified by:
isPaused
in interfaceISubscriberStream
- Returns:
- stream is paused
-
receiveVideo
public void receiveVideo(boolean receive) Should the stream send video to the client?- Specified by:
receiveVideo
in interfaceISubscriberStream
- Parameters:
receive
- toggle
-
receiveAudio
public void receiveAudio(boolean receive) Should the stream send audio to the client?- Specified by:
receiveAudio
in interfaceISubscriberStream
- Parameters:
receive
- toggle
-
createEngine
PlayEngine createEngine(ISchedulingService schedulingService, IConsumerService consumerService, IProviderService providerService) Creates a play engine based on current services (scheduling service, consumer service, and provider service). This method is useful during unit testing. -
setBufferCheckInterval
public void setBufferCheckInterval(int bufferCheckInterval) Set interval to check for buffer underruns. Set to0
to disable.- Parameters:
bufferCheckInterval
- interval in ms
-
setUnderrunTrigger
public void setUnderrunTrigger(int underrunTrigger) Set maximum number of pending messages at which aNetStream.Play.InsufficientBW
message will be generated for VOD streams- Parameters:
underrunTrigger
- the maximum number of pending messages
-
start
public void start()Description copied from interface:IStream
Start this stream. -
close
public void close()Description copied from interface:IStream
Close this stream. -
onChange
Notification of state change and associated parameters.- Specified by:
onChange
in interfaceISubscriberStream
- Parameters:
state
- new statechanged
- parameters associated with the change
-
seekToCurrentPlayback
private void seekToCurrentPlayback()Seek to current position to restart playback with audio and/or video. -
scheduleOnceJob
Schedule a job to be executed only once after a 10ms delay.- Specified by:
scheduleOnceJob
in interfaceISubscriberStream
- Parameters:
job
- scheduled job- Returns:
- jobName
-
scheduleWithFixedDelay
Schedule a job to be executed regularly at the given interval.- Specified by:
scheduleWithFixedDelay
in interfaceISubscriberStream
- Parameters:
job
- scheduled jobinterval
- interval- Returns:
- jobName
-
cancelJob
Cancels a scheduled job by name.- Specified by:
cancelJob
in interfaceISubscriberStream
- Parameters:
jobName
- job name
-