Struct CompressedVideo

Struct Documentation

struct CompressedVideo

A single frame of a compressed video bitstream.

Public Members

std::optional<foxglove::Timestamp> timestamp

Timestamp of video frame.

std::string frame_id

Frame of reference for the video.

The origin of the frame is the optical center of the camera. +x points to the right in the video, +y points down, and +z points into the plane of the video.

std::vector<std::byte> data

Compressed video frame data.

For packet-based video codecs this data must begin and end on packet boundaries (no partial packets), and must contain enough video packets to decode exactly one image (either a keyframe or delta frame). Note: Foxglove does not support video streams that include B frames because they require lookahead.

Specifically, the requirements for different format values are:

  • h264

  • Use Annex B formatted data

  • Each CompressedVideo message should contain enough NAL units to decode exactly one video frame

  • Each message containing a key frame (IDR) must also include a SPS NAL unit

  • h265 (HEVC)

  • Use Annex B formatted data

  • Each CompressedVideo message should contain enough NAL units to decode exactly one video frame

  • Each message containing a key frame (IRAP) must also include relevant VPS/SPS/PPS NAL units

  • vp9

  • Each CompressedVideo message should contain exactly one video frame

  • av1

  • Use the “Low overhead bitstream format” (section 5.2)

  • Each CompressedVideo message should contain enough OBUs to decode exactly one video frame

  • Each message containing a key frame must also include a Sequence Header OBU

std::string format

Video format.

Supported values: h264, h265, vp9, av1.

Note: compressed video support is subject to hardware limitations and patent licensing, so not all encodings may be supported on all platforms. See more about H.265 support, VP9 support, and AV1 support.