【问题标题】:Sending per frame metadata with H264 encoded frames使用 H264 编码帧发送每帧元数据
【发布时间】:2013-06-19 17:53:38
【问题描述】:

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

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

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

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

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

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

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

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

感谢您的帮助!

【问题讨论】:

  • 你找到解决这个问题的方法了吗?
  • 通过自定义工具将 ffmpeg 的输出通过 SEI 嵌入到 264 基本流中。

标签: ffmpeg streaming metadata h.264 live555


【解决方案1】:

似乎这个问题在 cmets 中得到了回答:

通过嵌入数据的自定义工具管道输出 ffmpeg 通过 SEI 在 264 基本流中

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

您可以使用 MPEG-4 执行此操作。请参阅 MPEG-4 第 14 部分的详细信息 详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 2014-10-25
    • 1970-01-01
    • 2012-07-05
    • 2012-04-01
    • 2015-07-21
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多