使用H264编码帧发送每帧元数据

7
我们正在寻找一种方法,可以从服务器向客户端发送每帧元数据(例如ID)与H264编码的帧一起传输。
我们目前正在开发远程渲染应用程序,其中客户端和服务器端都积极参与。服务器渲染高质量图像,包括所有效果、照明等。客户端也拥有模型信息,并在带宽过低或需要扭曲图像以避免卡顿时呈现出漫反射图像。
到目前为止,我们在服务器端使用ffmpeg对帧进行编码,并使用live555将其流式传输到客户端,客户端接收rtsp流并再次使用ffmpeg解码帧。
对于我们的应用程序,我们现在需要发送每帧元数据。我们希望客户端告诉服务器摄像机当前的位置。理想情况下,我们能够将客户端的视图矩阵发送到服务器,渲染相应的帧并将其与其视图矩阵一起发送回客户端。因此,当客户端接收到一帧时,我们需要确切地知道该帧是在哪个摄像机位置上渲染的。
另外,我们还可以使用ID为每个视图矩阵打上标记,将其发送到服务器,渲染帧并加上相同的ID并将其发送回来。在这种情况下,我们需要在客户端上再次分配正确的矩阵。
尝试使用ffmpeg实现上述意图多次后,我们得出结论:ffmpeg不提供所需功能。 ffmpeg仅提供一组固定、预定义的元数据字段,无法存储矩阵,或者只能为每个关键帧设置,这对于我们的目的来说不够频繁。
现在,我们正在考虑使用live555。到目前为止,我们拥有一个按需服务器,其中包含一个H264VideoStreamDiscreteFramer的VideoSubsession,以包含我们自己的FramedSource类。在此类中,我们加载编码的AVPacket(来自ffmpeg)并将其数据缓冲区通过网络发送。现在我们需要找到一种方法,在每个帧中向客户端发送某种类型的元数据。
您是否有任何想法如何使用live555或其他库解决此元数据问题? 谢谢您的帮助!

你找到这个问题的解决方案了吗? - R2-D2
通过自定义工具将FFmpeg的输出数据流通过管道传输,并嵌入到264基本数据流中的SEI中。 - szatmary
1个回答

0

看起来这个问题在评论中已经得到了回答:

通过一个自定义工具将ffmpeg的输出通过SEI嵌入到264 elementary流中

还有人给出了以下答案,但几年前因为可疑原因被删除了(虽然简洁,但似乎包含足够的信息):

你可以使用MPEG-4来实现。详细信息请参考MPEG-4第14部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接