video¶
this module provides the video codec interface. Encoders, Decoders and their support code.
- class pyrana.video.Decoder(input_codec, params=None)¶
Decodes video Packets into video Frames.
- decode(packets)¶
Decode data from a logical stream of packets, and returns when the first next frame is available. The input stream can be - a materialized sequence of packets (list, tuple...) - a generator (e.g. Demuxer.stream()).
- decode_packet(packet)¶
Generator method. Decode a single packet (as in returned by a Demuxer) and extracts all the frames encoded into it. An encoded packet can legally contain more than one frame, altough this is not so common. This method deals with the [one packet -> many frames] scenario. The internal underlying decoder does its own buffer, so you can freely dispose the packet(s) fed into this method after it exited. raises ProcessingError if decoding fails; raises NeedFeedError if decoding partially succeeds, but more data is needed to reconstruct a full frame.
- extra_data¶
bytearray-like, read-write
- flush()¶
emits all frames that can be recostructed by the data buffered into the Decoder, and empties such buffers. Call it last, do not intermix with decode*() calls. caution: more than one frame can be buffered. Raises NeedFeedError if all the internal buffers are empty.
- classmethod from_cdata(ctx)¶
builds a pyrana Video Decoder from (around) a (cffi-wrapped) libav* (video)decoder object. The libav object must be already initialized and ready to go. WARNING: raw access. Use with care.
- media_type¶
the codec media type.
- open(ffh=None)¶
opens the codec into the codec context.
- params¶
the codec parameters.
- ready¶
is the codec readu to go?
- setup()¶
Dispach the given parameters to the internal (FFmpeg) data structures.
- static wire(dec)¶
wire up the Decoder. See codec.wire_decoder
- class pyrana.video.Encoder(output_codec, params)¶
Encode video Frames into Packets.
- encode(frame)¶
Encode a logical frame in one or possibly more)packets, and return an iterable which will yield all the packets produced.
- extra_data¶
bytearray-like, read-write
- flush()¶
emits all packets which may have been buffered by the Encoder and empties such buffers. Call it last, do not intermix with encode*() calls. caution: more than one encoded frame (thus many packets) can be buffered. Raises NeedFeedError if all the internal buffers are empty.
- classmethod from_cdata(ctx, params, codec=None)¶
builds a pyrana video Encoder from (around) a (cffi-wrapped) liabv* (audio) context. WARNING: raw access. Use with care.
- media_type¶
the codec media type.
- open(ffh=None)¶
opens the codec into the codec context.
- params¶
the codec parameters.
- ready¶
is the codec readu to go?
- setup()¶
Dispach the given parameters to the internal (FFmpeg) data structures.
- static wire(enc)¶
wire up the Encoder. See codec.wire_encoder
- class pyrana.video.Frame(width, height, pixfmt)¶
A Video frame.
- asr¶
The sample aspect ratio of the frame.
- cdata¶
Direct access to the internal C AVFrame object.
- coded_pict_number¶
Picture number in bitstream order.
- display_pict_number¶
Picture number in display order.
- classmethod from_cdata(ppframe)¶
builds a pyrana generic Base Frame from (around) a (cffi-wrapped) libav* AVFrame object. The libav object must be already initialized and ready to go. WARNING: raw access. Use with care.
- image(pixfmt=None)¶
Returns a new Image object which provides access to the Picture (thus the pixel as bytes()) data.
- is_interlaced¶
Is the content of the picture interlaced?
- is_key¶
Is this a key frame?
- pict_type¶
Picture type of the frame, see AVPictureType.
- pts¶
The Presentation TimeStamp of this Frame.
- top_field_first¶
If is_interlaced(), is top field displayed first?
- class pyrana.video.Image¶
Represents the Picture data inside a Frame.
- blob()¶
returns the bytes() dump of the object.
- convert(pixfmt)¶
convert the Image data in a new PixelFormat. returns a brand new, independent Image.
- classmethod from_cdata(ppframe, sws=None, parent=None)¶
builds a pyrana Image from a (cffi-wrapped) libav* Frame object. The Picture data itself will still be hold in the Frame object. The libav object must be already initialized and ready to go. WARNING: raw access. Use with care.
- height¶
Frame height. Expected to be always equal to the stream height.
Is the underlying C-Frame shared with the parent py-Frame?
- pixel_format¶
Frame pixel format. Expected to be always equal to the stream pixel format.
- plane(idx)¶
Read-only byte access to a single plane of the Image.
- planes¶
Return the number of planes in the Picture data. e.g. RGB: 1; YUV420: 3
- width¶
Frame width. Expected to be always equal to the stream width.
- class pyrana.video.SWSMode¶
SWS operational flags. This wasn’t a proper enum, rather a collection of #defines, and that’s the reason why it is defined here.
- pyrana.video.fill_yuv420p(frame, i)¶
fill a video frame with a test pattern.