Streams¶
-
class
av.container.streams.StreamContainer¶ Bases:
objectA 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
Streamas alist.Positional arguments may be
int(which is an index into the streams), orlistortupleof 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})
Streamobjects 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 thatoffsetwill be interpreted inStream.time_basewhenwhence == 'time'.
-
start_time¶
-
time_base¶
-