Skip to main content

CompressedVideo

A single frame of a compressed video bitstream

Schema

fieldtypedescription
timestamptimeTimestamp of video frame
frame_idstringFrame of reference for the video.
databytesCompressed video frame data.
formatstringVideo format.

frame_id

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.

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

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.

Reference implementations

Foxglove schemas are framework-agnostic, and can be implemented using any supported message encoding:

encodingschema
ROS 1foxglove_msgs/CompressedVideo
ROS 2foxglove_msgs/msg/CompressedVideo
JSONfoxglove.CompressedVideo
Protobuffoxglove.CompressedVideo
FlatBuffersfoxglove.CompressedVideo
OMG IDLfoxglove::CompressedVideo

You must use the schema names specified above for Foxglove to recognize the schema.