MediaSource

expect class MediaSource : AutoCloseable

An opened input: a local file or a URL. It owns the container cursor and per-stream resources, and closing it releases them all. Confine it to one coroutine context, because the underlying media objects are not safe to call concurrently.

actual class MediaSource : AutoCloseable

An opened input: a local file or a URL. It owns the container cursor and per-stream resources, and closing it releases them all. Confine it to one coroutine context, because the underlying media objects are not safe to call concurrently.

actual class MediaSource : AutoCloseable

An opened input: a local file or a URL. It owns the container cursor and per-stream resources, and closing it releases them all. Confine it to one coroutine context, because the underlying media objects are not safe to call concurrently.

actual class MediaSource : AutoCloseable

An opened input: a local file or a URL. It owns the container cursor and per-stream resources, and closing it releases them all. Confine it to one coroutine context, because the underlying media objects are not safe to call concurrently.

actual class MediaSource : AutoCloseable

An open container, over the codec module.

Opened from a MediaByteSource only. There is no filesystem in a browser, so the open(path) overloads refuse rather than pretending: whatever the caller has is already bytes.

Types

Link copied to clipboard
expect object Companion

Opens sources.

actual object Companion

Opens sources.

actual object Companion

Opens sources.

actual object Companion

Opens sources.

actual object Companion

Opens sources.

Properties

Link copied to clipboard
expect val bitrateBps: Long?

The CONTAINER's own bit rate estimate in bits per second, or null when it has none.

actual val bitrateBps: Long?

The CONTAINER's own bit rate estimate in bits per second, or null when it has none.

actual val bitrateBps: Long?

Read once at open, because it cannot change afterwards and because reading it lazily would mean touching the format context, which close frees.

actual val bitrateBps: Long?

The CONTAINER's own bit rate estimate in bits per second, or null when it has none.

actual val bitrateBps: Long?

The CONTAINER's own bit rate estimate in bits per second, or null when it has none.

Link copied to clipboard
expect val chapters: List<Chapter>

The container's chapter table. Empty when the container declares none.

actual val chapters: List<Chapter>

The container's chapter table. Empty when the container declares none.

actual val chapters: List<Chapter>

The container's chapter table. Empty when the container declares none.

actual val chapters: List<Chapter>

The container's chapter table. Empty when the container declares none.

actual val chapters: List<Chapter>

The container's chapter table. Empty when the container declares none.

Link copied to clipboard

What the batch decode flows do when FFmpeg reports damaged data. CorruptData.Skip by default, which is what every backend always did, silently.

What the batch decode flows do when FFmpeg reports damaged data. CorruptData.Skip by default, which is what every backend always did, silently.

What the batch decode flows do when FFmpeg reports damaged data. CorruptData.Skip by default, which is what every backend always did, silently.

What the batch decode flows do when FFmpeg reports damaged data. CorruptData.Skip by default, which is what every backend always did, silently.

What the batch decode flows do when FFmpeg reports damaged data. CorruptData.Skip by default, which is what every backend always did, silently.

Link copied to clipboard

Packets and frames this source skipped as damaged since it was opened.

Packets and frames this source skipped as damaged since it was opened.

Packets and frames this source skipped as damaged since it was opened.

Packets and frames this source skipped as damaged since it was opened.

Packets and frames this source skipped as damaged since it was opened.

Link copied to clipboard
expect val durationMicros: Long?

The container's duration in microseconds, or null when it declares none, as for a live stream.

actual val durationMicros: Long?

The container's duration in microseconds, or null when it declares none, as for a live stream.

actual val durationMicros: Long?

The container's duration in microseconds, or null when it declares none, as for a live stream.

actual val durationMicros: Long?

The container's duration in microseconds, or null when it declares none, as for a live stream.

actual val durationMicros: Long?

The container's duration in microseconds, or null when it declares none, as for a live stream.

Link copied to clipboard

Where durationMicros came from, or null when there is no duration (#134).

Where durationMicros came from, or null when there is no duration (#134).

Where durationMicros came from, or null when there is no duration (#134).

Where durationMicros came from, or null when there is no duration (#134).

Where durationMicros came from, or null when there is no duration (#134).

Link copied to clipboard
expect val formatName: String

FFmpeg's name for the container format, such as mov,mp4,m4a,3gp,3g2,mj2 or matroska,webm.

actual val formatName: String

FFmpeg's name for the container format, such as mov,mp4,m4a,3gp,3g2,mj2 or matroska,webm.

actual val formatName: String

FFmpeg's name for the container format, such as mov,mp4,m4a,3gp,3g2,mj2 or matroska,webm.

actual val formatName: String

FFmpeg's name for the container format, such as mov,mp4,m4a,3gp,3g2,mj2 or matroska,webm.

actual val formatName: String

FFmpeg's name for the container format, such as mov,mp4,m4a,3gp,3g2,mj2 or matroska,webm.

Link copied to clipboard
expect val isSeekable: Boolean

Whether this input can seek at all, read from the input rather than assumed.

actual val isSeekable: Boolean

Whether this input can seek at all, read from the input rather than assumed.

actual val isSeekable: Boolean

Whether this input can seek at all, read from the input rather than assumed.

actual val isSeekable: Boolean

Whether this input can seek at all, read from the input rather than assumed.

actual val isSeekable: Boolean

Whether this input can seek at all, read from the input rather than assumed.

Link copied to clipboard

What a Matroska file says about its segment, its editions and their chapters, which a player needs to play ordered chapters and linked segments. Null for a source that is not Matroska, and for a Matroska file read through an FFmpeg that does not hand these facts out, so null means unknown rather than "no editions". Read when the source opens. See MatroskaSegment.

What a Matroska file says about its segment, its editions and their chapters, which a player needs to play ordered chapters and linked segments. Null for a source that is not Matroska, and for a Matroska file read through an FFmpeg that does not hand these facts out, so null means unknown rather than "no editions". Read when the source opens. See MatroskaSegment.

What a Matroska file says about its segment, its editions and their chapters, which a player needs to play ordered chapters and linked segments. Null for a source that is not Matroska, and for a Matroska file read through an FFmpeg that does not hand these facts out, so null means unknown rather than "no editions". Read when the source opens. See MatroskaSegment.

What a Matroska file says about its segment, its editions and their chapters, which a player needs to play ordered chapters and linked segments. Null for a source that is not Matroska, and for a Matroska file read through an FFmpeg that does not hand these facts out, so null means unknown rather than "no editions". Read when the source opens. See MatroskaSegment.

Read once, at the first ask, because the payloads it comes from never change after the open.

Link copied to clipboard

The assembled container-level view. Reads only members the source already exposes.

Link copied to clipboard
expect val metadata: Map<String, String>

The container-level tags, such as title and artist: what the open read, and from then on the tags as of the last packet read. A live stream or a radio station can change them during playback, as a station's ICY title through FFmpeg's own http, an ID3 tag between ADTS frames or an FLV onMetaData does, and the read that brings such a change updates this, whether it ran in PacketReader.read or in a batch decode flow. The first packet a reader hands out after the change also carries it, as Packet.newContainerTags, so a player can show it when that packet plays rather than when it was read.

actual val metadata: Map<String, String>

The container-level tags, such as title and artist: what the open read, and from then on the tags as of the last packet read. A live stream or a radio station can change them during playback, as a station's ICY title through FFmpeg's own http, an ID3 tag between ADTS frames or an FLV onMetaData does, and the read that brings such a change updates this, whether it ran in PacketReader.read or in a batch decode flow. The first packet a reader hands out after the change also carries it, as Packet.newContainerTags, so a player can show it when that packet plays rather than when it was read.

actual val metadata: Map<String, String>

The container-level tags, such as title and artist: what the open read, and from then on the tags as of the last packet read. A live stream or a radio station can change them during playback, as a station's ICY title through FFmpeg's own http, an ID3 tag between ADTS frames or an FLV onMetaData does, and the read that brings such a change updates this, whether it ran in PacketReader.read or in a batch decode flow. The first packet a reader hands out after the change also carries it, as Packet.newContainerTags, so a player can show it when that packet plays rather than when it was read.

actual val metadata: Map<String, String>

The container-level tags, such as title and artist: what the open read, and from then on the tags as of the last packet read. A live stream or a radio station can change them during playback, as a station's ICY title through FFmpeg's own http, an ID3 tag between ADTS frames or an FLV onMetaData does, and the read that brings such a change updates this, whether it ran in PacketReader.read or in a batch decode flow. The first packet a reader hands out after the change also carries it, as Packet.newContainerTags, so a player can show it when that packet plays rather than when it was read.

actual val metadata: Map<String, String>

The container-level tags, such as title and artist: what the open read, and from then on the tags as of the last packet read. A live stream or a radio station can change them during playback, as a station's ICY title through FFmpeg's own http, an ID3 tag between ADTS frames or an FLV onMetaData does, and the read that brings such a change updates this, whether it ran in PacketReader.read or in a batch decode flow. The first packet a reader hands out after the change also carries it, as Packet.newContainerTags, so a player can show it when that packet plays rather than when it was read.

Link copied to clipboard

The audio stream TrackSelector.Default picks beside primaryVideo, from that picture's own programme when the source has programs, or null when there is no audio stream to pick. Picked from streams and programs as they stand, so a sound that a live source starts after its picture becomes this once a read has added it.

The audio stream TrackSelector.Default picks beside primaryVideo, from that picture's own programme when the source has programs, or null when there is no audio stream to pick. Picked from streams and programs as they stand, so a sound that a live source starts after its picture becomes this once a read has added it.

The audio stream TrackSelector.Default picks beside primaryVideo, from that picture's own programme when the source has programs, or null when there is no audio stream to pick. Picked from streams and programs as they stand, so a sound that a live source starts after its picture becomes this once a read has added it.

The audio stream TrackSelector.Default picks beside primaryVideo, from that picture's own programme when the source has programs, or null when there is no audio stream to pick. Picked from streams and programs as they stand, so a sound that a live source starts after its picture becomes this once a read has added it.

The audio stream TrackSelector.Default picks beside primaryVideo, from that picture's own programme when the source has programs, or null when there is no audio stream to pick. Picked from streams and programs as they stand, so a sound that a live source starts after its picture becomes this once a read has added it.

Link copied to clipboard

The first video stream that is not cover art (Disposition.attachedPicture). A file whose only video is its cover art returns that picture rather than null. Picked by TrackSelector.Default from streams as they stand.

The first video stream that is not cover art (Disposition.attachedPicture). A file whose only video is its cover art returns that picture rather than null. Picked by TrackSelector.Default from streams as they stand.

The first video stream that is not cover art (Disposition.attachedPicture). A file whose only video is its cover art returns that picture rather than null. Picked by TrackSelector.Default from streams as they stand.

The first video stream that is not cover art (Disposition.attachedPicture). A file whose only video is its cover art returns that picture rather than null. Picked by TrackSelector.Default from streams as they stand.

The first video stream that is not cover art (Disposition.attachedPicture). A file whose only video is its cover art returns that picture rather than null. Picked by TrackSelector.Default from streams as they stand.

Link copied to clipboard
expect val programs: List<Program>

The container's programmes, each a set of streams that play together, such as the channels of a transport stream multiplex. Empty when the container declares none, as MP4 and Matroska do not. Every stream index in it names one of streams. See Program.

actual val programs: List<Program>

The container's programmes, each a set of streams that play together, such as the channels of a transport stream multiplex. Empty when the container declares none, as MP4 and Matroska do not. Every stream index in it names one of streams. See Program.

actual val programs: List<Program>

The container's programmes, each a set of streams that play together, such as the channels of a transport stream multiplex. Empty when the container declares none, as MP4 and Matroska do not. Every stream index in it names one of streams. See Program.

actual val programs: List<Program>

The container's programmes, each a set of streams that play together, such as the channels of a transport stream multiplex. Empty when the container declares none, as MP4 and Matroska do not. Every stream index in it names one of streams. See Program.

actual val programs: List<Program>

The container's programmes, each a set of streams that play together, such as the channels of a transport stream multiplex. Empty when the container declares none, as MP4 and Matroska do not. Every stream index in it names one of streams. See Program.

Link copied to clipboard
expect val startTimeMicros: Long

Where this container's timeline begins, in microseconds. It is 0 for most mp4 files, and commonly around 1.4s for MPEG-TS.

actual val startTimeMicros: Long

Where this container's timeline begins, in microseconds. It is 0 for most mp4 files, and commonly around 1.4s for MPEG-TS.

actual val startTimeMicros: Long

Where the container's timeline begins, in microseconds. This is the offset between the absolute timeline libavformat uses and the content-relative timeline the public API uses. The expect declaration in commonMain describes both timelines in full.

actual val startTimeMicros: Long

Where this container's timeline begins, in microseconds. It is 0 for most mp4 files, and commonly around 1.4s for MPEG-TS.

actual val startTimeMicros: Long

Where this container's timeline begins, in microseconds. It is 0 for most mp4 files, and commonly around 1.4s for MPEG-TS.

Link copied to clipboard

Where the container's declaration and the decoder's output disagree, one entry per field.

Where the container's declaration and the decoder's output disagree, one entry per field.

Where the container's declaration and the decoder's output disagree, one entry per field.

Where the container's declaration and the decoder's output disagree, one entry per field.

Where the container's declaration and the decoder's output disagree, one entry per field.

Link copied to clipboard
expect val streams: List<StreamInfo>

Every stream the container has declared so far, in index order, including streams this build cannot decode.

actual val streams: List<StreamInfo>

Every stream the container has declared so far, in index order, including streams this build cannot decode.

actual val streams: List<StreamInfo>

Every stream the container has declared so far, in index order, including streams this build cannot decode.

actual val streams: List<StreamInfo>

Every stream the container has declared so far, in index order, including streams this build cannot decode.

actual val streams: List<StreamInfo>

Every stream the container has declared so far, in index order, including streams this build cannot decode.

Link copied to clipboard

The pre-open option keys FFmpeg did NOT consume on this open. Always empty for the plain open; a non-empty list after an options open is a caller mistake worth reading back and logging.

The pre-open option keys FFmpeg did NOT consume on this open. Always empty for the plain open; a non-empty list after an options open is a caller mistake worth reading back and logging.

The pre-open option keys FFmpeg did NOT consume on this open. Always empty for the plain open; a non-empty list after an options open is a caller mistake worth reading back and logging.

The pre-open option keys FFmpeg did NOT consume on this open. Always empty for the plain open; a non-empty list after an options open is a caller mistake worth reading back and logging.

The keys FFmpeg did not consume, which is a real answer now.

Functions

Link copied to clipboard
expect open override fun close()
actual open override fun close()
actual open override fun close()
actual open override fun close()
actual open override fun close()
Link copied to clipboard
expect fun decodedFrames(stream: StreamInfo): Flow<Frame>

Decode this stream and emit each decoded frame, owned by the collector.

actual fun decodedFrames(stream: StreamInfo): Flow<Frame>

Decode this stream and emit each decoded frame, owned by the collector.

actual fun decodedFrames(stream: StreamInfo): Flow<Frame>

Decode this stream and emit each decoded frame, owned by the collector.

actual fun decodedFrames(stream: StreamInfo): Flow<Frame>

Decode this stream and emit each decoded frame, owned by the collector.

actual fun decodedFrames(stream: StreamInfo): Flow<Frame>

Decode this stream and emit each decoded frame, owned by the collector.

Link copied to clipboard
expect fun decodeStreams(streams: List<StreamInfo>): Flow<Frame>

Decode several streams in one demuxer pass, emitting frames interleaved in container order and tagged by FrameInfo.streamIndex. This is the only correct way to transcode video and audio together: two concurrent decodedFrames flows would race the underlying demuxer, so that is rejected with IllegalStateException.

actual fun decodeStreams(streams: List<StreamInfo>): Flow<Frame>

Decode several streams in one demuxer pass, emitting frames interleaved in container order and tagged by FrameInfo.streamIndex. This is the only correct way to transcode video and audio together: two concurrent decodedFrames flows would race the underlying demuxer, so that is rejected with IllegalStateException.

actual fun decodeStreams(streams: List<StreamInfo>): Flow<Frame>

Decode several streams in one demuxer pass, emitting frames interleaved in container order and tagged by FrameInfo.streamIndex. This is the only correct way to transcode video and audio together: two concurrent decodedFrames flows would race the underlying demuxer, so that is rejected with IllegalStateException.

actual fun decodeStreams(streams: List<StreamInfo>): Flow<Frame>

Decode several streams in one demuxer pass, emitting frames interleaved in container order and tagged by FrameInfo.streamIndex. This is the only correct way to transcode video and audio together: two concurrent decodedFrames flows would race the underlying demuxer, so that is rejected with IllegalStateException.

actual fun decodeStreams(streams: List<StreamInfo>): Flow<Frame>

Decode several streams in one demuxer pass, emitting frames interleaved in container order and tagged by FrameInfo.streamIndex. This is the only correct way to transcode video and audio together: two concurrent decodedFrames flows would race the underlying demuxer, so that is rejected with IllegalStateException.

Link copied to clipboard
expect suspend fun extractFrame(atMicros: Long, stream: StreamInfo? = null): Frame

Decode and return the frame at (or first after) atMicros. Use this to extract a thumbnail. It seeks to the preceding keyframe and decodes forward to the exact target. Pair with Frame.encodeImage for jpg/png bytes.

actual suspend fun extractFrame(atMicros: Long, stream: StreamInfo?): Frame

Decode and return the frame at (or first after) atMicros. Use this to extract a thumbnail. It seeks to the preceding keyframe and decodes forward to the exact target. Pair with Frame.encodeImage for jpg/png bytes.

actual suspend fun extractFrame(atMicros: Long, stream: StreamInfo?): Frame

Decode and return the frame at (or first after) atMicros. Use this to extract a thumbnail. It seeks to the preceding keyframe and decodes forward to the exact target. Pair with Frame.encodeImage for jpg/png bytes.

actual suspend fun extractFrame(atMicros: Long, stream: StreamInfo?): Frame

Decode and return the frame at (or first after) atMicros. Use this to extract a thumbnail. It seeks to the preceding keyframe and decodes forward to the exact target. Pair with Frame.encodeImage for jpg/png bytes.

actual suspend fun extractFrame(atMicros: Long, stream: StreamInfo?): Frame

Decode and return the frame at (or first after) atMicros. Use this to extract a thumbnail. It seeks to the preceding keyframe and decodes forward to the exact target. Pair with Frame.encodeImage for jpg/png bytes.

Link copied to clipboard
expect fun interrupt()

Requests that every current and future blocking call on this source return with a typed FFmpegError.Interrupted failure.

actual fun interrupt()

Requests that every current and future blocking call on this source return with a typed FFmpegError.Interrupted failure.

actual fun interrupt()

Requests that every current and future blocking call on this source return with a typed FFmpegError.Interrupted failure.

actual fun interrupt()

Requests that every current and future blocking call on this source return with a typed FFmpegError.Interrupted failure.

actual fun interrupt()

Requests that every current and future blocking call on this source return with a typed FFmpegError.Interrupted failure.

Link copied to clipboard
expect fun openDecoder(stream: StreamInfo, threadCount: Int = 0, lowDelay: Boolean = false, decoder: DecoderId? = null, options: DecoderOptions? = null, hardware: HardwareAccel? = null, corruptData: CorruptData = CorruptData.Skip): StreamDecoder

Opens one independently driven decoder for stream.

actual fun openDecoder(stream: StreamInfo, threadCount: Int, lowDelay: Boolean, decoder: DecoderId?, options: DecoderOptions?, hardware: HardwareAccel?, corruptData: CorruptData): StreamDecoder

Opens one independently driven decoder for stream.

actual fun openDecoder(stream: StreamInfo, threadCount: Int, lowDelay: Boolean, decoder: DecoderId?, options: DecoderOptions?, hardware: HardwareAccel?, corruptData: CorruptData): StreamDecoder

Opens one decoder for one stream, for you to drive.

actual fun openDecoder(stream: StreamInfo, threadCount: Int, lowDelay: Boolean, decoder: DecoderId?, options: DecoderOptions?, hardware: HardwareAccel?, corruptData: CorruptData): StreamDecoder

Opens one independently driven decoder for stream.

actual fun openDecoder(stream: StreamInfo, threadCount: Int, lowDelay: Boolean, decoder: DecoderId?, options: DecoderOptions?, hardware: HardwareAccel?, corruptData: CorruptData): StreamDecoder

Opens one independently driven decoder for stream.

Link copied to clipboard

Opens the low-level demux cursor for exactly streams. The returned reader owns the source's cursor until it is closed; no batch decode or source-level seek may run concurrently.

Opens the low-level demux cursor for exactly streams. The returned reader owns the source's cursor until it is closed; no batch decode or source-level seek may run concurrently.

Opens a reader that hands out owned packets, one at a time, under your control.

Opens the low-level demux cursor for exactly streams. The returned reader owns the source's cursor until it is closed; no batch decode or source-level seek may run concurrently.

Opens the low-level demux cursor for exactly streams. The returned reader owns the source's cursor until it is closed; no batch decode or source-level seek may run concurrently.

Link copied to clipboard

Opens a decoder for the subtitle stream: Blu-ray (PGS), DVB and DVD images, and the text formats this build of FFmpeg decodes.

expect fun openSubtitleDecoder(stream: StreamInfo, realTime: Boolean): SubtitleDecoder

Opens a decoder for the subtitle stream as openSubtitleDecoder does, answering in real time when realTime is set (#181). Only CEA-608 closed captions stored as a stream of their own, such as a MOV c608 track, have such a mode, which ClosedCaptionDecoder describes: each answer is the screen as it now stands, from the packet that changed it, with no end, and an empty answer clears it. Buffered, the default, gives a caption only once it leaves the screen, too late for a player reading a little ahead. For every other format realTime changes nothing.

Opens a decoder for the subtitle stream: Blu-ray (PGS), DVB and DVD images, and the text formats this build of FFmpeg decodes.

actual fun openSubtitleDecoder(stream: StreamInfo, realTime: Boolean): SubtitleDecoder

Opens a decoder for the subtitle stream as openSubtitleDecoder does, answering in real time when realTime is set (#181). Only CEA-608 closed captions stored as a stream of their own, such as a MOV c608 track, have such a mode, which ClosedCaptionDecoder describes: each answer is the screen as it now stands, from the packet that changed it, with no end, and an empty answer clears it. Buffered, the default, gives a caption only once it leaves the screen, too late for a player reading a little ahead. For every other format realTime changes nothing.

Opens a decoder for the subtitle stream: Blu-ray (PGS), DVB and DVD images, and the text formats this build of FFmpeg decodes.

actual fun openSubtitleDecoder(stream: StreamInfo, realTime: Boolean): SubtitleDecoder

Opens a decoder for the subtitle stream as openSubtitleDecoder does, answering in real time when realTime is set (#181). Only CEA-608 closed captions stored as a stream of their own, such as a MOV c608 track, have such a mode, which ClosedCaptionDecoder describes: each answer is the screen as it now stands, from the packet that changed it, with no end, and an empty answer clears it. Buffered, the default, gives a caption only once it leaves the screen, too late for a player reading a little ahead. For every other format realTime changes nothing.

Opens a decoder for the subtitle stream: Blu-ray (PGS), DVB and DVD images, and the text formats this build of FFmpeg decodes.

actual fun openSubtitleDecoder(stream: StreamInfo, realTime: Boolean): SubtitleDecoder

Opens a decoder for the subtitle stream as openSubtitleDecoder does, answering in real time when realTime is set (#181). Only CEA-608 closed captions stored as a stream of their own, such as a MOV c608 track, have such a mode, which ClosedCaptionDecoder describes: each answer is the screen as it now stands, from the packet that changed it, with no end, and an empty answer clears it. Buffered, the default, gives a caption only once it leaves the screen, too late for a player reading a little ahead. For every other format realTime changes nothing.

Opens a decoder for the subtitle stream: Blu-ray (PGS), DVB and DVD images, and the text formats this build of FFmpeg decodes.

actual fun openSubtitleDecoder(stream: StreamInfo, realTime: Boolean): SubtitleDecoder

Opens a decoder for the subtitle stream as openSubtitleDecoder does, answering in real time when realTime is set (#181). Only CEA-608 closed captions stored as a stream of their own, such as a MOV c608 track, have such a mode, which ClosedCaptionDecoder describes: each answer is the screen as it now stands, from the packet that changed it, with no end, and an empty answer clears it. Buffered, the default, gives a caption only once it leaves the screen, too late for a player reading a little ahead. For every other format realTime changes nothing.

Link copied to clipboard
expect fun pause(): Boolean

Tells the server of a live source that the caller has stopped reading, and says whether the source has any notion of that: true when it has and is now paused, false when it has none, in which case nothing was sent and the source reads on as before.

actual fun pause(): Boolean

Tells the server of a live source that the caller has stopped reading, and says whether the source has any notion of that: true when it has and is now paused, false when it has none, in which case nothing was sent and the source reads on as before.

actual fun pause(): Boolean

Tells the server of a live source that the caller has stopped reading, and says whether the source has any notion of that: true when it has and is now paused, false when it has none, in which case nothing was sent and the source reads on as before.

actual fun pause(): Boolean

Tells the server of a live source that the caller has stopped reading, and says whether the source has any notion of that: true when it has and is now paused, false when it has none, in which case nothing was sent and the source reads on as before.

actual fun pause(): Boolean

Tells the server of a live source that the caller has stopped reading, and says whether the source has any notion of that: true when it has and is now paused, false when it has none, in which case nothing was sent and the source reads on as before.

Link copied to clipboard
expect fun resume(): Boolean

Lifts a pause: an RTSP stream asks its server to play on, which for a live stream is the live edge, and an rtmp:// input sends RTMP's unpause. FFmpeg's av_read_play does the work on every backend.

actual fun resume(): Boolean

Lifts a pause: an RTSP stream asks its server to play on, which for a live stream is the live edge, and an rtmp:// input sends RTMP's unpause. FFmpeg's av_read_play does the work on every backend.

actual fun resume(): Boolean

Lifts a pause: an RTSP stream asks its server to play on, which for a live stream is the live edge, and an rtmp:// input sends RTMP's unpause. FFmpeg's av_read_play does the work on every backend.

actual fun resume(): Boolean

Lifts a pause: an RTSP stream asks its server to play on, which for a live stream is the live edge, and an rtmp:// input sends RTMP's unpause. FFmpeg's av_read_play does the work on every backend.

actual fun resume(): Boolean

Lifts a pause: an RTSP stream asks its server to play on, which for a live stream is the live edge, and an rtmp:// input sends RTMP's unpause. FFmpeg's av_read_play does the work on every backend.

Link copied to clipboard
expect suspend fun seekMicros(micros: Long)

Seek the demuxer to micros, measured from the start of the content. Lands on the keyframe at or before that point, so the next decode flow resumes from there. Not allowed while a decode flow is collecting, since the demuxer cursor is shared.

actual suspend fun seekMicros(micros: Long)

Seek the demuxer to micros, measured from the start of the content. Lands on the keyframe at or before that point, so the next decode flow resumes from there. Not allowed while a decode flow is collecting, since the demuxer cursor is shared.

actual suspend fun seekMicros(micros: Long)

Seek the demuxer to micros, measured from the start of the content. Lands on the keyframe at or before that point, so the next decode flow resumes from there. Not allowed while a decode flow is collecting, since the demuxer cursor is shared.

actual suspend fun seekMicros(micros: Long)

Seek the demuxer to micros, measured from the start of the content. Lands on the keyframe at or before that point, so the next decode flow resumes from there. Not allowed while a decode flow is collecting, since the demuxer cursor is shared.

actual suspend fun seekMicros(micros: Long)

Seek the demuxer to micros, measured from the start of the content. Lands on the keyframe at or before that point, so the next decode flow resumes from there. Not allowed while a decode flow is collecting, since the demuxer cursor is shared.