Video

Video Streams

class av.video.stream.VideoStream

Bases: av.stream.Stream

Video Codecs

class av.video.codeccontext.VideoCodecContext

Bases: av.codec.context.CodecContext

coded_height
coded_width
display_aspect_ratio
encoded_frame_count
format
framerate

The frame rate, in frames per second.

Type

fractions.Fraction

gop_size
has_b_frames
height
pix_fmt

The pixel format’s name.

Type

str

rate

Another name for framerate.

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: av.frame.Frame

A single video frame.

Parameters
  • width (int) – The width of the frame.

  • height (int) – The height of the frame.

  • format (VideoFormat or str.) – The format of the frame.

>>> 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: av.enum.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 to VideoReformatter.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 to VideoReformatter.reformat().

Note

PIL or Pillow must be installed.

VideoFrame.to_ndarray(**kwargs)

Get a numpy array of this frame.

Any **kwargs are passed to VideoReformatter.reformat().

Note

Numpy must be installed.

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 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

class av.video.plane.VideoPlane

Bases: av.plane.Plane

buffer_size
height
line_size

Bytes per horizontal line in this plane.

Type

int

width

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)

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 or str) – New format, or None for the same format.

  • src_colorspace (Colorspace or str) – Current colorspace, or None for DEFAULT.

  • dst_colorspace (Colorspace or str) – Desired colorspace, or None for DEFAULT.

  • interpolation (Interpolation or str) – The interpolation method to use, or None for BILINEAR.

Enums

class av.video.reformatter.Interpolation

Bases: av.enum.EnumItem

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

Lanczos

SPLINE

0x400

Bicubic spline

class av.video.reformatter.Colorspace

Bases: av.enum.EnumItem

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

-

smpte240

0x7

-