gpt4 book ai didi

javascript - 调试视频帧差异

转载 作者:行者123 更新时间:2023-12-04 23:29:59 25 4
gpt4 key购买 nike

我正在尝试使用功能相当有限的解码器( Broadway JS )解码 h264 编码的视频帧。

这是我用于测试的过程:

  • 使用 Cisco 的 OpenH264 使用 h264 编码单个图像(输出约为 62KB),写入磁盘
  • 在 JS 中以二进制形式读取文件(通过 XHR 加载)
  • 在 JS 中使用 Broadway 解码
  • Canvas 展示

  • 我实际上有一个功能示例,但是在步骤 1 和步骤 2 之间有一个手动步骤 - 我必须调用 FFMPEG 来强制进行小翻译,但我不知道为什么。

    我已经成功地将 Cisco 的 Openh264 库集成到我的项目中,并且可以将图像编码为 h264 并将其写入磁盘。我已经确认编码本身是有效的,方法是使用 FFMPEG 将帧提取为 JPEG(看起来很完美)。

    但是,为了在 JS 中正确解码帧,我必须使用 FFMPEG 进行转换。它做了一些神奇的事情,文件大小下降到〜58KB,瞧,一切都开始工作了。

    Openh264 库仅适用于基线配置,所以我假设我有一些其他随机参数设置不正确。问题是,如果我使用 ffprobe 比较帧 - 设置是相同的!但是文件大小不同,所以显然有些不同。

    所以现在是最后一个问题——我可以使用什么工具来真正了解 FFMPEG 在幕后所做的事情,以使我的“手动”编码帧工作?有没有一个工具可以让我比较两个 h264 帧的所有细节?

    最佳答案

    Broadway 基于 Android 的 Stagefright 解码器。您应该从那里提取它,并通过这个基于 C 的解码器运行您的文件。调试起来会容易得多。

    根据我自己的测试,Broadway 总是无法解码非 16 像素行列文件的倍数。此外,它支持非常有限的流格式,因此您可能需要“剥离”-用 FFMPEG 术语复制流-它们。

    通常,我遇到了一个问题,即用百老汇正确解码长 SPS 和 PPS NAL,生成假 SPS/PPS 有效。一些编码器为他们的序列参数集启用了所有的铃声和​​口哨,而他们只使用基本的。因此,不宣传未使用的功能实际上是获得更多兼容性的一种方式。

    关于javascript - 调试视频帧差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832482/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com