---
sidebar:
  label: roboto.experimental.video
  order: 5
title: roboto.experimental.video
---
Video APIs in active refinement; see [`roboto.experimental`](/docs/reference/python-sdk/roboto/experimental) for the stability contract.

Decodes compressed-video topic data (one encoded frame per MCAP message, as written by Roboto ingestion for `CompressedVideo` and compatible schemas) into still frames on demand. Supported codecs are enumerated by [`supported_formats()`](/docs/reference/python-sdk/roboto/experimental/video#roboto.experimental.video.supported_formats) (H.264, H.265, VP9, and AV1 today). Decoding requires the `roboto[video]` extra; the per-codec bitstream-inspection helpers ([`h264`](/docs/reference/python-sdk/roboto/experimental/video/h264), [`h265`](/docs/reference/python-sdk/roboto/experimental/video/h265), [`vp9`](/docs/reference/python-sdk/roboto/experimental/video/vp9), [`av1`](/docs/reference/python-sdk/roboto/experimental/video/av1)) are dependency-free.

## Submodules

- [roboto.experimental.video.annexb](/docs/reference/python-sdk/roboto/experimental/video/annexb)
- [roboto.experimental.video.av1](/docs/reference/python-sdk/roboto/experimental/video/av1)
- [roboto.experimental.video.codec](/docs/reference/python-sdk/roboto/experimental/video/codec)
- [roboto.experimental.video.decoder](/docs/reference/python-sdk/roboto/experimental/video/decoder)
- [roboto.experimental.video.frames](/docs/reference/python-sdk/roboto/experimental/video/frames)
- [roboto.experimental.video.h264](/docs/reference/python-sdk/roboto/experimental/video/h264)
- [roboto.experimental.video.h265](/docs/reference/python-sdk/roboto/experimental/video/h265)
- [roboto.experimental.video.vp9](/docs/reference/python-sdk/roboto/experimental/video/vp9)

## Package Contents

- [AV1](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.AV1) (data)

- [DEFAULT_KEYFRAME_LOOKBACK_NS](/reference/python-sdk/roboto/experimental/video/frames#roboto.experimental.video.frames.DEFAULT_KEYFRAME_LOOKBACK_NS) (data): `DEFAULT_KEYFRAME_LOOKBACK_NS: int = 10000000000`. How far before a requested range to search for the keyframe that makes the range's leading delta frames decodable. Bounds the cost of the backward walk on streams with pathological keyframe intervals.

- [DecodedVideoFrame](/reference/python-sdk/roboto/experimental/video/decoder#roboto.experimental.video.decoder.DecodedVideoFrame) (class): A decoded video frame paired with the log time of its source message.

- [H264](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.H264) (data)

- [H265](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.H265) (data)

- [MessageRangeLoader](/reference/python-sdk/roboto/experimental/video/frames#roboto.experimental.video.frames.MessageRangeLoader) (data): Loads a topic's `(log_time, data)` messages for a `(start_time, end_time)` range.

- [NalUnit](/reference/python-sdk/roboto/experimental/video/annexb#roboto.experimental.video.annexb.NalUnit) (class): One NAL unit split out of Annex B-framed data.

- [NalUnitType](/reference/python-sdk/roboto/experimental/video/h264#roboto.experimental.video.h264.NalUnitType) (class): H.264 NAL unit types (ITU-T H.264 table 7-1) relevant to this module.

- [VP9](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.VP9) (data)

- [VideoCodec](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.VideoCodec) (class): The per-codec hooks the generic stream decoder depends on.

- [decode_frames_in_range()](/reference/python-sdk/roboto/experimental/video/frames#roboto.experimental.video.frames.decode_frames_in_range) (function): Decode the compressed-video frames of a time range.

- [decode_h264_stream()](/reference/python-sdk/roboto/experimental/video/decoder#roboto.experimental.video.decoder.decode_h264_stream) (function): Decode an in-order stream of Annex B-framed H.264 frames.

- [decode_stream()](/reference/python-sdk/roboto/experimental/video/decoder#roboto.experimental.video.decoder.decode_stream) (function): Decode an in-order stream of encoded frames of a single codec.

- [find_nal_units()](/reference/python-sdk/roboto/experimental/video/h264#roboto.experimental.video.h264.find_nal_units) (function): Split Annex B-framed H.264 data into its NAL units.

- [is_keyframe()](/reference/python-sdk/roboto/experimental/video/h264#roboto.experimental.video.h264.is_keyframe) (function): Whether the Annex B-framed H.264 frame contains an IDR slice.

- [resolve_codec()](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.resolve_codec) (function): Return the codec registered for a per-message `format` token.

- [supported_formats()](/reference/python-sdk/roboto/experimental/video/codec#roboto.experimental.video.codec.supported_formats) (function): The per-message `format` tokens that have a decode path, lowercase.
