Streams

class av.container.streams.StreamContainer

Bases: object

A tuple-like container of Stream.

# There are a few ways to pulling out streams.
first = container.streams[0]
video = container.streams.video[0]
audio = container.streams.get(audio=(0, 1))

Dynamic Slicing

StreamContainer.get(streams=None, video=None, audio=None, subtitles=None, data=None)

Get a selection of Stream as a list.

Positional arguments may be int (which is an index into the streams), or list or tuple of those:

# Get the first channel.
streams.get(0)

# Get the first two audio channels.
streams.get(audio=(0, 1))

Keyword arguments (or dicts as positional arguments) as interpreted as (stream_type, index_value_or_set) pairs:

# Get the first video channel.
streams.get(video=0)
# or
streams.get({'video': 0})

Stream objects are passed through untouched.

If nothing is selected, then all streams are returned.

Typed Collections

These attributes are preferred for readability if you don’t need the dynamic capabilities of :method:`.get`:

StreamContainer.video

A tuple of VideoStream.

StreamContainer.audio

A tuple of AudioStream.

StreamContainer.subtitles

A tuple of SubtitleStream.

StreamContainer.data

A tuple of DataStream.

StreamContainer.other

A tuple of Stream

class av.stream.Stream

Bases: object

average_rate
codec_context
decode(packet=None, count=0)
duration
encode(frame=None)
frames
id
index
language
metadata
profile
seek(offset, whence='time', backward=True, any_frame=False)

See also

InputContainer.seek() for documentation on parameters. The only difference is that offset will be interpreted in Stream.time_base when whence == 'time'.

start_time
time_base