com.wowza.wms.stream
Interface IMediaReader


public interface IMediaReader

IMediaReader: generic media reader interface. All media types implement this interface to interact with PlaylistPlayer.


Field Summary
static String DEFAULT_RANDOMACCESSREADER
           
static int PLAYEVENT_AFTERBUFFERFILL
           
static int PLAYEVENT_AFTERMETADATA
           
static int PLAYEVENT_BEFOREBUFFERFILL
           
static int PLAYEVENT_BEFOREMETADATA
           
static int PLAYEVENT_STARTPLAYBACK
           
static int SEEK_EXACT
          Seek direction: closest frame (audio, video) (key, no-key)
static int SEEK_KEYCLOSE
          Seek direction: closest key frame
static int SEEK_KEYDOWN
          Seek direction: down to closets key frame
static int SEEK_KEYUP
          Seek direction: up to closets key frame
static int SEEKTARGET_AUDIO
           
static int SEEKTARGET_ENHANCED
           
static int SEEKTARGET_VIDEOKEYFRAME
           
 
Method Summary
 void close()
          close file
 long getDuration()
          Get duration or time (milliseconds) of the media file
 long getLength()
          Get the stream length in bytes
 String getMediaExtension()
          Get media extension
 java.util.List getMetadata()
          Get a collection of metadata packets in ByteBuffers for this file.
 String getPath()
          Get abstract path to the media item
 IMediaReaderStreamPosition getStreamPosition()
          Get a reference to the current stream position
 void init(IApplicationInstance appInstance, IMediaStream stream, String mediaReadType, String basePath, String mediaName)
          Initialize mediaReader
 boolean isOpen()
          is file open
 void open(String basePath, String name)
          Open the file for reading
 void rewind()
          rewind file to start
 com.wowza.wms.stream.PlaylistSeekResult seek(long timecode, int seektype)
          seek to timecode in file
 int sendZeroLengthPacket(int type, int timecode, boolean isAbsolute, IMediaStream stream, java.io.OutputStream out, AMFObj wmsObj, com.wowza.wms.stream.file.PlaylistCursor flvCursor, com.wowza.wms.stream.file.PlaylistWriteControl control, com.wowza.wms.stream.file.PlaylistReaderWriteResults results, long[] sizes, boolean isForceTCZero)
           
 void setMediaReaderItem(com.wowza.wms.stream.MediaReaderItem mediaReaderItem)
          Set the mediaReader item definition
 void setProperties(WMSProperties properties)
          Set the properties for this media reader
 void setStreamPosition(IMediaReaderStreamPosition pos)
          Set the file position within the media file
 void startPlayback()
          Called each time the player being playback (before the buffer it filled)
 int writeGeneratedKeyFrame(IMediaStream stream, java.io.OutputStream out, AMFObj wmsObjAudio, AMFObj wmsObjVideo, AMFObj wmsObjData, com.wowza.wms.stream.file.PlaylistCursor flvCursor, com.wowza.wms.stream.file.PlaylistWriteControl control, com.wowza.wms.stream.file.PlaylistReaderWriteResults results, long[] sizes, FastPlaySettings fastPlaySettings, boolean isForceTCZero)
          From current location in file generate a key frame (enhanced seek) and write it to out
 int writePackets(IMediaStream stream, java.io.OutputStream out, AMFObj wmsObjAudio, AMFObj wmsObjVideo, AMFObj wmsObjData, com.wowza.wms.stream.file.PlaylistCursor flvCursor, com.wowza.wms.stream.file.PlaylistWriteControl control, com.wowza.wms.stream.file.PlaylistReaderWriteResults results, long[] sizes, FastPlaySettings fastPlaySettings, boolean isForceTCZero)
          From current location in file write packets to output
 int writePackets(java.util.List<AMFPacket> packetList, com.wowza.wms.stream.file.PlaylistCursor flvCursor, com.wowza.wms.stream.file.PlaylistWriteControl control, com.wowza.wms.stream.file.PlaylistReaderWriteResults results, long[] sizes, FastPlaySettings fastPlaySettings)
          Write packets to the packetList as AMFPackets
 

Field Detail

DEFAULT_RANDOMACCESSREADER

static final String DEFAULT_RANDOMACCESSREADER
See Also:
Constant Field Values

PLAYEVENT_AFTERBUFFERFILL

static final int PLAYEVENT_AFTERBUFFERFILL
See Also:
Constant Field Values

PLAYEVENT_AFTERMETADATA

static final int PLAYEVENT_AFTERMETADATA
See Also:
Constant Field Values

PLAYEVENT_BEFOREBUFFERFILL

static final int PLAYEVENT_BEFOREBUFFERFILL
See Also:
Constant Field Values

PLAYEVENT_BEFOREMETADATA

static final int PLAYEVENT_BEFOREMETADATA
See Also:
Constant Field Values

PLAYEVENT_STARTPLAYBACK

static final int PLAYEVENT_STARTPLAYBACK
See Also:
Constant Field Values

SEEK_EXACT

static final int SEEK_EXACT
Seek direction: closest frame (audio, video) (key, no-key)

See Also:
Constant Field Values

SEEK_KEYCLOSE

static final int SEEK_KEYCLOSE
Seek direction: closest key frame

See Also:
Constant Field Values

SEEK_KEYDOWN

static final int SEEK_KEYDOWN
Seek direction: down to closets key frame

See Also:
Constant Field Values

SEEK_KEYUP

static final int SEEK_KEYUP
Seek direction: up to closets key frame

See Also:
Constant Field Values

SEEKTARGET_AUDIO

static final int SEEKTARGET_AUDIO
See Also:
Constant Field Values

SEEKTARGET_ENHANCED

static final int SEEKTARGET_ENHANCED
See Also:
Constant Field Values

SEEKTARGET_VIDEOKEYFRAME

static final int SEEKTARGET_VIDEOKEYFRAME
See Also:
Constant Field Values
Method Detail

close

void close()
close file


getDuration

long getDuration()
Get duration or time (milliseconds) of the media file

Returns:
duration or time (milliseconds) of the media file

getLength

long getLength()
Get the stream length in bytes

Returns:
stream length in bytes

getMediaExtension

String getMediaExtension()
Get media extension

Returns:
media extension

getMetadata

java.util.List getMetadata()
Get a collection of metadata packets in ByteBuffers for this file. You can use 'new AMFDataList(data)' to convert to AMF objects.

Returns:
collection of metadata packets in ByteBuffers

getPath

String getPath()
Get abstract path to the media item

Returns:
abstract path to the media item

getStreamPosition

IMediaReaderStreamPosition getStreamPosition()
Get a reference to the current stream position

Returns:
stream position

init

void init(IApplicationInstance appInstance,
          IMediaStream stream,
          String mediaReadType,
          String basePath,
          String mediaName)
Initialize mediaReader

Parameters:
stream - parent stream
mediaReadType - media reader type id. Example: flv
basePath - Base path for application instance
mediaName - name of the media item

isOpen

boolean isOpen()
is file open

Returns:
is file open

open

void open(String basePath,
          String name)
Open the file for reading

Parameters:
basePath - base path to file
name - file name without extension

rewind

void rewind()
rewind file to start


seek

com.wowza.wms.stream.PlaylistSeekResult seek(long timecode,
                                             int seektype)
seek to timecode in file

Parameters:
timecode - timecode (milliseconds) to seek to
seektype - seek type IMediaReader.SEEK_*
Returns:
detailed results object of seek or null if failure

sendZeroLengthPacket

int sendZeroLengthPacket(int type,
                         int timecode,
                         boolean isAbsolute,
                         IMediaStream stream,
                         java.io.OutputStream out,
                         AMFObj wmsObj,
                         com.wowza.wms.stream.file.PlaylistCursor flvCursor,
                         com.wowza.wms.stream.file.PlaylistWriteControl control,
                         com.wowza.wms.stream.file.PlaylistReaderWriteResults results,
                         long[] sizes,
                         boolean isForceTCZero)

setMediaReaderItem

void setMediaReaderItem(com.wowza.wms.stream.MediaReaderItem mediaReaderItem)
Set the mediaReader item definition

Parameters:
mediaReaderItem -

setProperties

void setProperties(WMSProperties properties)
Set the properties for this media reader

Parameters:
properties - properties

setStreamPosition

void setStreamPosition(IMediaReaderStreamPosition pos)
Set the file position within the media file

Parameters:
pos - stream position

startPlayback

void startPlayback()
Called each time the player being playback (before the buffer it filled)


writeGeneratedKeyFrame

int writeGeneratedKeyFrame(IMediaStream stream,
                           java.io.OutputStream out,
                           AMFObj wmsObjAudio,
                           AMFObj wmsObjVideo,
                           AMFObj wmsObjData,
                           com.wowza.wms.stream.file.PlaylistCursor flvCursor,
                           com.wowza.wms.stream.file.PlaylistWriteControl control,
                           com.wowza.wms.stream.file.PlaylistReaderWriteResults results,
                           long[] sizes,
                           FastPlaySettings fastPlaySettings,
                           boolean isForceTCZero)
From current location in file generate a key frame (enhanced seek) and write it to out

Parameters:
stream - parent mediaStream
out - output stream
wmsObjAudio - audio channel amfObj
wmsObjVideo - video channel amfObj
wmsObjData - data channel amfObj
flvCursor - current cursor that keeps track of timecodes and flags indicating position in media file
control - write control flags. Mainly used to control when it should stop writing
results - write results returned from this routine
sizes - array of values that keep track of number of bytes written and number of packets for each data type (audio, video, data). See IMediaStreamPlay.PLAYSIZES_*
fastPlaySettings - current fastPlay settings for the stream
isForceTCZero - are we forcing all timecodes to zero
Returns:
number of bytes written

writePackets

int writePackets(IMediaStream stream,
                 java.io.OutputStream out,
                 AMFObj wmsObjAudio,
                 AMFObj wmsObjVideo,
                 AMFObj wmsObjData,
                 com.wowza.wms.stream.file.PlaylistCursor flvCursor,
                 com.wowza.wms.stream.file.PlaylistWriteControl control,
                 com.wowza.wms.stream.file.PlaylistReaderWriteResults results,
                 long[] sizes,
                 FastPlaySettings fastPlaySettings,
                 boolean isForceTCZero)
From current location in file write packets to output

Parameters:
stream - parent mediaStream
out - output stream
wmsObjAudio - audio channel amfObj
wmsObjVideo - video channel amfObj
wmsObjData - data channel amfObj
flvCursor - current cursor that keeps track of timecodes and flags indicating position in media file
control - write control flags. Mainly used to control when it should stop writing
results - write results returned from this routine
sizes - array of values that keep track of number of bytes written and number of packets for each data type (audio, video, data). See IMediaStreamPlay.PLAYSIZES_*
fastPlaySettings - current fastPlay settings for the stream
isForceTCZero - are we forcing all timecodes to zero
Returns:
number of bytes written

writePackets

int writePackets(java.util.List<AMFPacket> packetList,
                 com.wowza.wms.stream.file.PlaylistCursor flvCursor,
                 com.wowza.wms.stream.file.PlaylistWriteControl control,
                 com.wowza.wms.stream.file.PlaylistReaderWriteResults results,
                 long[] sizes,
                 FastPlaySettings fastPlaySettings)
Write packets to the packetList as AMFPackets

Parameters:
packetList - list to which to write packets
flvCursor - current cursor that keeps track of timecodes and flags indicating position in media file
control - write control flags. Mainly used to control when it should stop writing
results - write results returned from this routine
sizes - array of values that keep track of number of bytes written and number of packets for each data type (audio, video, data). See IMediaStreamPlay.PLAYSIZES_*
fastPlaySettings - current fastPlay settings for the stream
Returns:
number of bytes written