org.red5.io.mp4

## Interface IMP4

All Superinterfaces:
  IStreamableFile

All Known Implementing Classes:
  MP4

    public interface IMP4
    extends IStreamableFile

Represents MP4 file

Author:
  Paul Gregoire (mondain@gmail.com)

### Method Summary

Methods
`void` `flushHeaders()` Flushes Header
`Map<?,?>` `getKeyFrameData()` Gets the keyframe data
`IMetaData<?,?>` `getMetaData()` Returns a map of the metadata
`boolean` `hasKeyFrameData()` Returns a boolean stating whether a mp4 has keyframedata
`boolean` `hasMetaData()` Returns a boolean stating whether the mp4 has metadata
`ITagReader` `readerFromNearestKeyFrame(int seekPoint)` Returns a Reader closest to the nearest keyframe
`void` `refreshHeaders()` Refreshes the headers.
`void` `setKeyFrameData(Map<?,?> keyframedata)` Sets the keyframe data of a mp4 file
`void` `setMetaData(IMetaData<?,?> metadata)` Sets the metadata
`void` `setMetaService(IMetaService service)` Sets the MetaService through Spring
`ITagWriter` `writerFromNearestKeyFrame(int seekPoint)` Returns a Writer based on the nearest key frame

### Methods inherited from interface org.red5.io.IStreamableFile

`getAppendWriter, getReader, getWriter`

### Method Detail

#### hasMetaData

    boolean hasMetaData()

Returns a boolean stating whether the mp4 has metadata

Returns:
  boolean `true` if file has injected metadata, `false` otherwise

#### setMetaData

    void setMetaData(IMetaData<?,?> metadata)
                     throws FileNotFoundException,
                            IOException

Sets the metadata

Parameters:
  `metadata` - Metadata object
Throws:
  `FileNotFoundException` - File not found
  `IOException` - Any other I/O exception

#### setMetaService

    void setMetaService(IMetaService service)

Sets the MetaService through Spring

Parameters:
  `service` - Metadata service

#### getMetaData

    IMetaData<?,?> getMetaData()
                               throws FileNotFoundException

Returns a map of the metadata

Returns:
  metadata File metadata
Throws:
  `FileNotFoundException` - File not found

#### hasKeyFrameData

    boolean hasKeyFrameData()

Returns a boolean stating whether a mp4 has keyframedata

Returns:
  boolean `true` if file has keyframe metadata, `false` otherwise

#### setKeyFrameData

    void setKeyFrameData(Map<?,?> keyframedata)

Sets the keyframe data of a mp4 file

Parameters:
  `keyframedata` - Keyframe metadata

#### getKeyFrameData

    Map<?,?> getKeyFrameData()

Gets the keyframe data

Returns:
  keyframedata Keyframe metadata

#### refreshHeaders

    void refreshHeaders()
                        throws IOException

Refreshes the headers. Usually used after data is added to the mp4 file

Throws:
  `IOException` - Any I/O exception

#### flushHeaders

    void flushHeaders()
                      throws IOException

Flushes Header

Throws:
  `IOException` - Any I/O exception

#### readerFromNearestKeyFrame

    ITagReader readerFromNearestKeyFrame(int seekPoint)

Returns a Reader closest to the nearest keyframe

Parameters:
  `seekPoint` - Point in file we are seeking around
Returns:
  reader Tag reader closest to that point

#### writerFromNearestKeyFrame

    ITagWriter writerFromNearestKeyFrame(int seekPoint)

Returns a Writer based on the nearest key frame

Parameters:
  `seekPoint` - Point in file we are seeking around
Returns:
  writer Tag writer closest to that point