{ "title": "foxglove.CompressedVideo", "description": "A single frame of a compressed video bitstream", "$comment": "Generated by https://github.com/foxglove/foxglove-sdk", "type": "object", "properties": { "timestamp": { "type": "object", "title": "time", "properties": { "sec": { "type": "integer", "minimum": 0 }, "nsec": { "type": "integer", "minimum": 0, "maximum": 999999999 } }, "description": "Timestamp of video frame" }, "frame_id": { "type": "string", "description": "Frame of reference for the video.\n\nThe 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": { "type": "string", "contentEncoding": "base64", "description": "Compressed video frame data.\n\nFor 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.\n\nSpecifically, the requirements for different `format` values are:\n\n- `h264`\n - Use Annex B formatted data\n - Each CompressedVideo message should contain enough NAL units to decode exactly one video frame\n - Each message containing a key frame (IDR) must also include a SPS NAL unit\n\n- `h265` (HEVC)\n - Use Annex B formatted data\n - Each CompressedVideo message should contain enough NAL units to decode exactly one video frame\n - Each message containing a key frame (IRAP) must also include relevant VPS/SPS/PPS NAL units\n\n- `vp9`\n - Each CompressedVideo message should contain exactly one video frame\n\n- `av1`\n - Use the \"Low overhead bitstream format\" (section 5.2)\n - Each CompressedVideo message should contain enough OBUs to decode exactly one video frame\n - Each message containing a key frame must also include a Sequence Header OBU" }, "format": { "type": "string", "description": "Video format.\n\nSupported values: `h264`, `h265`, `vp9`, `av1`.\n\nNote: 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](https://caniuse.com/hevc), [VP9 support](https://caniuse.com/webm), and [AV1 support](https://caniuse.com/av1)." } }, "required": [ "timestamp", "frame_id", "data", "format" ] }