首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入自定义元数据的视频流

嵌入自定义元数据的视频流
EN

Stack Overflow用户
提问于 2020-11-04 17:33:51
回答 1查看 1.3K关注 0票数 4

我有一个提供UDP视频流的光学系统。

来自设备规范常见问题:

单元数据(KLV)流和带有元数据(KLV)的压缩视频(H.264)都可以在以太网链路上使用。压缩视频和元数据耦合在符合STANAG 4609标准的同一流中。通过以太网UDP/IP/将每个编码的视频流封装在MPEG-TS单个程序流中的相关元数据中,视频和元数据通过使用时间戳进行同步。

此外,还有其他设备提供有关飞机状态的数据(速度、弦等)。这些数据应该与视频一起显示在客户端GUI上。当然,它必须与当前的视频帧同步。

我想到的一种方法是将这些数据嵌入到视频流中。但我不确定这是否可能,也不确定是否应该为此目的使用另一种(而不是UDP)协议。

使用这种方法是否可能/合理?在这种情况下,ffmpeg库合适吗?如果不是,还有哪些其他方法可以使数据与视频帧同步。延迟是至关重要的。尽管带宽限制在2-5 Mbps。

使用ffmpeg似乎是可能的:AVPacket可以使用函数av_packet_add_side_data提供额外的数据,该函数采用预先分配的缓冲区、大小和类型AVPacketSideDataType。但是,我现在还不确定什么枚举值 of AVPacketSideDataType可以用于自定义用户提供的二进制数据。

类似的东西可以用来满足我的需要:

*

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 08:47:55

这个引用听起来像是包含两个基本流的传输流(其中一个是H.264视频,另一个是KLV数据)。传输流是通过UDP发送的(或者TCP,或者只是一个文件,不管你想要什么--它基本上独立于传输)。

在运动图像手册(您可以从https://nsgreg.nga.mil/misb.jsp NSG注册表的MISB部分下载)和ST 1402 (在同一表中可以找到)中详细讨论了实现这类事情的方法。我避免提供直接链接,因为版本变化-只是寻找任何是当前的。

简短的版本是您可以在视频中嵌入时间戳(请参阅ST 0603和ST 0604),然后将其与元数据时间戳相关联(精确时间戳,请参阅ST 0601)。不过,您不希望在AVPacket级别这样做。相反,您需要使用AVFrame键( AV_FRAME_DATA_SEI_UNREGISTERED key,frame.html#ggae01fa7e427274293aacdf2adc17076bca4f2dcaee18e5ffed8ff4ab1cc3b326aa)将侧数据放入AV_FRAME_DATA_SEI_UNREGISTERED中。您将需要一个比较新的FFmpeg版本。

注意:如果您想要做的只是看到UDP数据流--一边是视频,另一边是解码KLV,那么您可能希望查看jMISB查看器应用程序:https://github.com/WestRidgeSystems/jmisb它还提供了一个编码示例(生成器示例)。免责声明:我对这个项目有贡献。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64685001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档