FragmentedMp4Muxer
@UnstableApi
class FragmentedMp4Muxer : Muxer
A muxer for creating a fragmented MP4 file.
Muxer supports muxing of:
- Video Codecs:
- AV1
- MPEG-4
- H.263
- H.264 (AVC)
- H.265 (HEVC)
- VP9
- APV
- Dolby Vision
- Audio Codecs:
- AAC
- AMR-NB (Narrowband AMR)
- AMR-WB (Wideband AMR)
- Opus
- Vorbis
- Raw Audio
- Metadata
All the operations are performed on the caller thread.
To create a fragmented MP4 file, the caller must:
- Add tracks using
addTrackwhich will return a track id. - Use the associated track id when
writing samplesfor that track. - close the muxer when all data has been written.
Some key points:
- All tracks must be added before writing any samples.
- The caller is responsible for ensuring that samples of different track types are well interleaved by calling
writeSampleDatain an order that interleaves samples from different tracks.
Summary
Nested types |
|---|
|
A builder for |
Constants |
|
|---|---|
const Long |
DEFAULT_FRAGMENT_DURATION_MS = 2000The default fragment duration. |
const ImmutableList<String!>! |
A list of supported audio |
const ImmutableList<String!>! |
A list of supported video |
Public functions |
|
|---|---|
Unit |
addMetadataEntry(metadataEntry: Metadata.Entry!)Adds metadata about the output file. |
Int |
Adds a track of the given media format. |
Unit |
close()Closes the file. |
Unit |
writeSampleData(Writes encoded sample data. |
Constants
DEFAULT_FRAGMENT_DURATION_MS
const val DEFAULT_FRAGMENT_DURATION_MS = 2000: Long
The default fragment duration.
SUPPORTED_AUDIO_SAMPLE_MIME_TYPES
const val SUPPORTED_AUDIO_SAMPLE_MIME_TYPES: ImmutableList<String!>!
A list of supported audio sample MIME types.
SUPPORTED_VIDEO_SAMPLE_MIME_TYPES
const val SUPPORTED_VIDEO_SAMPLE_MIME_TYPES: ImmutableList<String!>!
A list of supported video sample MIME types.
Public functions
addMetadataEntry
fun addMetadataEntry(metadataEntry: Metadata.Entry!): Unit
Adds metadata about the output file.
List of supported metadata entries:
Mp4OrientationDataMp4LocationDataMp4TimestampDataMdtaMetadataEntry: Onlystring typeorfloat typevalue is supported.XmpData
| Parameters | |
|---|---|
metadataEntry: Metadata.Entry! |
The |
addTrack
fun addTrack(format: Format!): Int
Adds a track of the given media format.
All tracks must be added before any samples are written to any track.
| Returns | |
|---|---|
Int |
A track id for this track, which should be passed to |
| Throws | |
|---|---|
androidx.media3.muxer.MuxerException |
If the muxer encounters a problem while adding the track. |
close
fun close(): Unit
Closes the file.
The muxer cannot be used anymore once this method returns.
| Throws | |
|---|---|
androidx.media3.muxer.MuxerException |
If the muxer fails to finish writing the output. |
writeSampleData
fun writeSampleData(
trackId: Int,
byteBuffer: ByteBuffer!,
bufferInfo: BufferInfo!
): Unit
Writes encoded sample data.
Samples are written to the disk in batches. If sample copying is disabled, the byteBuffer and the bufferInfo must not be modified after calling this method. Otherwise, they are copied and it is safe to modify them after this method returns.
Note: Out of order B-frames are currently not supported.
| Parameters | |
|---|---|
trackId: Int |
The track id for which this sample is being written. |
byteBuffer: ByteBuffer! |
The encoded sample. The muxer takes ownership of the buffer if |
bufferInfo: BufferInfo! |
The |
| Throws | |
|---|---|
androidx.media3.muxer.MuxerException |
If there is any error while writing data to the disk. |