【问题标题】:How to combine nalus from one frame into one nalu?如何将一帧的nalus组合成一个nalu?
【发布时间】:2016-05-07 10:05:40
【问题描述】:

在我的情况下,iOS 硬件编码器有时会生成一个 nalu,有时会生成两个构成访问单元/图片的 nalus。当为一张图片生成两个 nalus 时,我通过将第一个 nalu 的起始代码替换为这两个 nalus 的总大小的大小并删除第二个 nalu 的起始代码并将其附加到第一个 nalu 的末尾来将它们组合起来。就这样,0x00000002aaaa 和 0x00000002bbbb 变成了 0x00000004aaaabbbb。但视频在屏幕上显示模糊。那么有人可以教我如何正确组合 nalus 吗?非常感谢。

这样的一帧有两个 nalus(与此链接中的数据几乎相同(https://forums.developer.apple.com/thread/14212?sr=stream),所以我只是复制它):

这里我想结合#1和#2。

【问题讨论】:

    标签: ios h.264 video-processing video-toolbox


    【解决方案1】:

    每个 NALU 都需要一个大小,您不能将它们连接起来。

    你必须做 00000002aaaa00000002bbbb

    【讨论】:

    • 感谢您的回答。似乎ffmpeg会将两个nalus放在一起,例如0x00 00 00 01 aa aa,0x00 00 01 bb bb一起变成一个AVPacket。这里我需要自己做。
    • 仅适用于附件 b。不要混合使用 avcC 和附件 b。
    • 不,我的意思是 earthier 在构造流时使用起始码或大小,而不是组合。如果您正在编写 .264 或 .ts 使用起始码。如果是 MP4,请使用大小值。
    • 谢谢,你的意思是只有附件b风格的nalus可以组合不avcC?但是,我不知道除了结合 iOS HW 编码器生成的一帧的两个 avcC 样式的 nalus 来修复模糊的视频。哭…………
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 2023-01-14
    相关资源
    最近更新 更多