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

标签 ffmpeg streaming metadata h.264 live555

我们正在寻找一种将每帧元数据(例如 ID)与 H264 编码帧从服务器发送到客户端的方法。

我们目前正在开发一个远程渲染应用程序,客户端和服务器端都积极参与其中。
服务器渲染具有所有效果、照明等的高质量图像。
客户端还具有模型信息并渲染漫反射图像,当带宽太低或图像必须扭曲以避免卡顿时使用。

到目前为止,我们正在使用 ffmpeg 在服务器端对帧进行编码,并使用 live555 将它们流式传输到客户端,客户端接收 rtsp-stream 并使用 ffmpeg 再次解码帧。

对于我们的应用程序,我们现在需要发送每帧元数据。
我们希望客户端告诉服务器相机现在在哪里。
理想情况下,我们能够将客户端的 View 矩阵发送到服务器,渲染相应的帧并将其连同其 View 矩阵一起发送回客户端。因此,当客户端接收到帧时,我们需要确切知道该帧是在哪个摄像机位置渲染的。

或者,我们也可以使用 ID 标记每个 View 矩阵,将其发送到服务器,渲染帧并使用相同的 ID 标记并发送回。在这种情况下,我们必须在客户端再次将正确的矩阵分配给框架。

在多次尝试使用 ffmpeg 实现上述意图后,我们得出的结论是 ffmpeg 不提供所需的功能。 ffmpeg 只为元数据提供了一组修复的预定义字段,它们要么不能存储矩阵,要么只能为每个关键帧设置,这对于我们的目的来说不够频繁。

现在我们正在考虑使用live555。到目前为止,我们有一个按需服务器,女巫获得了一个带有 H264VideoStreamDiscreteFramer 的 VideoSubsession 来包含我们自己的 FramedSource 类。在这个类中,我们加载编码的 AVPacket(来自 ffmpeg)并通过网络发送它的数据缓冲区。现在我们需要一种将某种元数据与每一帧一起发送到客户端的方法。

你有什么想法如何用 live555 或另一个库解决这个元数据问题吗?

谢谢你的帮助!

最佳答案

评论中似乎回答了这个问题:

pipe the output of ffmpeg through a custom tool that embedded the data in the 264 elementary stream via an SEI


有人还给出了以下答案,该答案在几年前因可疑原因被删除(它很简短,但似乎包含足够的信息):

You can do so using MPEG-4. See details for MPEG-4 Part 14 for details.

关于ffmpeg - 使用 H264 编码帧发送每帧元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254904/

相关文章:

video - 混合 2 个视频文件,一个带有 Alpha channel (部分透明)

android - FFMpeg:在视频创建过程中添加背景图片

audio - 如何使用 ffmpeg 向音频文件添加偏移或延迟?

ffmpeg - 从命令行通过 Fluent-ffmpeg 或 ffmpeg 转码为 opus

c# - 来自 url 的 xamarin.ios mp3 流在结束前停止

android - 以最小延迟播放实时音频流

json - 解码 JSON,因为它仍在通过 net/http 流入

jquery - 使用 jQuery 元数据 - 无法读取 HTML5 数据属性

metadata - 什么是最好的/非常好的元数据阅读器库?

python - 将数据源信息附加到 pandas 系列