CompressedVideo
压缩视频比特流的单帧
面板支持
CompressedVideo
在三维面板和图像面板中使用。
数据结构
字段 | 类型 | 描述 |
---|---|---|
timestamp | time | 视频帧的时间戳 |
frame_id | string | 视频的参考坐标系 |
data | bytes | 压缩视频帧数据 |
format | string | 视频格式 |
frame_id
帧的原点是相机的光学中心。+x 指向视频的右侧,+y 指向下方,+z 指向视频平面的内部。
data
对于基于数据包的视频编解码器,此数据必须在数据包边界开始和结束(没有部分数据包),并且必须包含足够的视频数据包来解码恰好一个图像(关键帧或增量帧)。注意:Foxglove 不支持包含 B 帧的视频流,因为它们需要前瞻。
具体来说,不同 format
值的要求如下:
h264
- 使用 Annex B 格式的数据
- 每个 CompressedVideo 消息应包含足够的 NAL 单元来解码恰好一个视频帧
- 每个包含关键帧(IDR)的消息还必须包含 SPS NAL 单元
format
支持的值:h264
。
注意:压缩视频支持受硬件限制和专利许可的影响,因此并非所有平台都支持所有编码。
参考实现
可视化数据结构与框架无关,可以使用任何支持的消息编码来实现:
编码 | 数据结构 |
---|---|
ROS 1 | foxglove_msgs/CompressedVideo |
ROS 2 | foxglove_msgs/msg/CompressedVideo |
JSON | foxglove.CompressedVideo |
Protobuf | foxglove.CompressedVideo |
FlatBuffers | foxglove.CompressedVideo |
OMG IDL | foxglove::CompressedVideo |
您必须使用上面指定的数据结构名称,以便可视化能够识别该数据结构。