Video¶
Video Streams¶
- class av.video.stream.VideoStream¶
Bases:
Stream
- average_rate¶
The average frame rate of this video stream.
This is calculated when the file is opened by looking at the first few frames and averaging their rate.
- Type:
Fraction
orNone
- base_rate¶
The base frame rate of this stream.
This is calculated as the lowest framerate at which the timestamps of frames can be represented accurately. See AVStream.r_frame_rate for more.
- Type:
Fraction
orNone
- decode(Packet packet=None)¶
Decode a
Packet
and return a list ofVideoFrame
.- Return type:
See also
This is a passthrough to
CodecContext.decode()
.
- display_aspect_ratio¶
The guessed display aspect ratio (DAR) of this stream.
This is calculated from
VideoStream.guessed_sample_aspect_ratio()
.- Type:
Fraction
orNone
- encode(VideoFrame frame=None)¶
Encode an
VideoFrame
and return a list ofPacket
.See also
This is mostly a passthrough to
CodecContext.encode()
.
- guessed_rate¶
The guessed frame rate of this stream.
This is a wrapper around av_guess_frame_rate, and uses multiple heuristics to decide what is “the” frame rate.
- Type:
Fraction
orNone
- sample_aspect_ratio¶
The guessed sample aspect ratio (SAR) of this stream.
This is a wrapper around av_guess_sample_aspect_ratio, and uses multiple heuristics to decide what is “the” sample aspect ratio.
- Type:
Fraction
orNone
Video Codecs¶
- class av.video.codeccontext.VideoCodecContext¶
Bases:
CodecContext
- bits_per_coded_sample¶
The number of bits per sample in the codedwords. It’s mandatory for this to be set for some formats to decode properly.
Wraps AVCodecContext.bits_per_coded_sample.
- Type:
- color_primaries¶
Describes the RGB/XYZ matrix of the colorspace.
Wraps AVFrame.color_primaries.
- Type:
- color_range¶
Describes the signal range of the colorspace.
Wraps AVFrame.color_range.
- Type:
- color_trc¶
Describes the linearization function (a.k.a. transformation characteristics) of the colorspace.
Wraps AVFrame.color_trc.
- Type:
- colorspace¶
Describes the YUV/RGB transformation matrix of the colorspace.
Wraps AVFrame.colorspace.
- Type:
- display_aspect_ratio¶
- encoded_frame_count¶
- format¶
- framerate¶
The frame rate, in frames per second.
- Type:
- height¶
- qmax¶
The maximum quantiser value of an encoded stream.
Wraps AVCodecContext.qmax.
- Type:
- qmin¶
The minimum quantiser value of an encoded stream.
Wraps AVCodecContext.qmin.
- Type:
- reformatter¶
- sample_aspect_ratio¶
- width¶
Video Formats¶
- class av.video.format.VideoFormat¶
Bases:
object
>>> format = VideoFormat('rgb24') >>> format.name 'rgb24'
- bits_per_pixel¶
- chroma_height(luma_height=0)¶
Height of a chroma plane relative to a luma plane.
- Parameters:
luma_height (int) – Height of the luma plane; defaults to
self.height
.
- chroma_width(luma_width=0)¶
Width of a chroma plane relative to a luma plane.
- Parameters:
luma_width (int) – Width of the luma plane; defaults to
self.width
.
- components¶
- has_palette¶
Pixel format has a palette in data[1], values are indexes in this palette.
- height¶
- is_big_endian¶
Pixel format is big-endian.
- is_bit_stream¶
All values of a component are bit-wise packed end to end.
- is_planar¶
At least one pixel component is not in the first data plane.
- is_rgb¶
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
- name¶
Canonical name of the pixel format.
- padded_bits_per_pixel¶
- width¶
- class av.video.format.VideoFormatComponent¶
Bases:
object
- bits¶
Number of bits in the component.
- height¶
The height of this component’s plane.
Requires the parent
VideoFormat
to have a height.
- index¶
- is_alpha¶
Is this component an alpha channel?
- is_chroma¶
Is this component a chroma channel?
- is_luma¶
Is this compoment a luma channel?
- plane¶
The index of the plane which contains this component.
- width¶
The width of this component’s plane.
Requires the parent
VideoFormat
to have a width.
Video Frames¶
- class av.video.frame.VideoFrame¶
Bases:
Frame
A single video frame.
- Parameters:
>>> frame = VideoFrame(1920, 1080, 'rgb24')
Structural¶
- VideoFrame.width¶
Width of the image, in pixels.
- VideoFrame.height¶
Height of the image, in pixels.
- VideoFrame.format¶
The
VideoFormat
of the frame.
- VideoFrame.planes¶
A tuple of
VideoPlane
objects.
Types¶
- VideoFrame.key_frame¶
Is this frame a key frame?
Wraps AVFrame.key_frame.
- VideoFrame.interlaced_frame¶
Is this frame an interlaced or progressive?
Wraps AVFrame.interlaced_frame.
- VideoFrame.pict_type¶
One of
PictureType
.Wraps AVFrame.pict_type.
- class av.video.frame.PictureType¶
Bases:
EnumItem
Wraps
AVPictureType
(AV_PICTURE_TYPE_*
).PictureType Name
Flag Value
Meaning in FFmpeg
NONE
0x0
Undefined
I
0x1
Intra
P
0x2
Predicted
B
0x3
Bi-directional predicted
S
0x4
S(GMC)-VOP MPEG-4
SI
0x5
Switching intra
SP
0x6
Switching predicted
BI
0x7
BI type
Conversions¶
- VideoFrame.reformat(width=None, height=None, format=None, src_colorspace=None, dst_colorspace=None, interpolation=None)¶
Create a new
VideoFrame
with the given width/height/format/colorspace.See also
VideoReformatter.reformat()
for arguments.
- VideoFrame.to_rgb(**kwargs)¶
Get an RGB version of this frame.
Any
**kwargs
are passed toVideoReformatter.reformat()
.>>> frame = VideoFrame(1920, 1080) >>> frame.format.name 'yuv420p' >>> frame.to_rgb().format.name 'rgb24'
- VideoFrame.to_image(**kwargs)¶
Get an RGB
PIL.Image
of this frame.Any
**kwargs
are passed toVideoReformatter.reformat()
.Note
PIL or Pillow must be installed.
- VideoFrame.to_ndarray(**kwargs)¶
Get a numpy array of this frame.
Any
**kwargs
are passed toVideoReformatter.reformat()
.Note
Numpy must be installed.
Note
For formats which return an array of ``uint16`, the samples
will be in the system’s native byte order.
Note
For
pal8
, an(image, palette)
tuple will be returned,with the palette being in ARGB (PyAV will swap bytes if needed).
- static VideoFrame.from_image(img)¶
Construct a frame from a
PIL.Image
.
- static VideoFrame.from_ndarray(array, format='rgb24')¶
Construct a frame from a numpy array.
Note
For formats which expect an array of
uint16
, the samplesmust be in the system’s native byte order.
Note
for
pal8
, an(image, palette)
pair must be passed. palette must have shape (256, 4) and is given in ARGB format (PyAV will swap bytes if needed).
Video Planes¶
Video Reformatters¶
- class av.video.reformatter.VideoReformatter¶
Bases:
object
An object for reformatting size and pixel format of
VideoFrame
.It is most efficient to have a reformatter object for each set of parameters you will use as calling
reformat()
will reconfigure the internal object.- reformat(VideoFrame frame, width=None, height=None, format=None, src_colorspace=None, dst_colorspace=None, interpolation=None, src_color_range=None, dst_color_range=None)¶
Create a new
VideoFrame
with the given width/height/format/colorspace.Returns the same frame untouched if nothing needs to be done to it.
- Parameters:
width (int) – New width, or
None
for the same width.height (int) – New height, or
None
for the same height.format (
VideoFormat
orstr
) – New format, orNone
for the same format.src_colorspace (
Colorspace
orstr
) – Current colorspace, orNone
for the frame colorspace.dst_colorspace (
Colorspace
orstr
) – Desired colorspace, orNone
for the frame colorspace.interpolation (
Interpolation
orstr
) – The interpolation method to use, orNone
forBILINEAR
.src_color_range (
color range
orstr
) – Current color range, orNone
for theUNSPECIFIED
.dst_color_range (
color range
orstr
) – Desired color range, orNone
for theUNSPECIFIED
.
Enums¶
- class av.video.reformatter.Interpolation(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
Bases:
IntEnum
Wraps the
SWS_*
flags.Interpolation Name
Flag Value
Meaning in FFmpeg
FAST_BILINEAR
0x1
Fast bilinear
BILINEAR
0x2
Bilinear
BICUBIC
0x4
Bicubic
X
0x8
Experimental
POINT
0x10
Nearest neighbor / point
AREA
0x20
Area averaging
BICUBLIN
0x40
Luma bicubic / chroma bilinear
GAUSS
0x80
Gaussian
SINC
0x100
Sinc
LANCZOS
0x200
Bicubic spline
- class av.video.reformatter.Colorspace(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
Bases:
IntEnum
Wraps the
SWS_CS_*
flags. There is a bit of overlap in these names which comes from FFmpeg and backards compatibility.Colorspace Name
Flag Value
Meaning in FFmpeg
ITU709
0x1
-
FCC
0x4
-
ITU601
0x5
-
ITU624
0x5
-
SMPTE170M
0x5
-
SMPTE240M
0x7
-
DEFAULT
0x5
-
- class av.video.reformatter.ColorRange(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
Bases:
IntEnum
Wraps the
AVCOL*
flags.ColorRange Name
Flag Value
Meaning in FFmpeg
UNSPECIFIED
0x0
Unspecified
MPEG
0x1
MPEG (limited) YUV range, 219*2^(n-8)
JPEG
0x2
JPEG (full) YUV range, 2^n-1
NB
0x3
Not part of ABI