H.264编码的NAL /切片分割

时间:2015-12-16 08:23:36

标签: c++ video-streaming h.264

我正在研究一种需要通过UDP(一种视频通话)实时传输H.264编码视频的应用程序。

最近我们改用硬件编码器,它只支持有限数量的H.264配置文件。结果,每个编码视频帧现在由单个NALu组成。更准确地说,对于IDR(关键)帧,编码器为其他帧生成SSP,PSP和单个IDR片 - 一个非IDR片。

现在,我的目标是将切片NALu分成几个较小的切片,因为如果NALu无法完全组装,则会丢失数据包 - 它完全丢失了。至少我需要在空间上分割切片,即将宏块的范围放入不同的NALus中。如果可能的话 - 我也想提取高质量的图层,这样就可以通过更多的冗余数据包(FEC)保护基础层。

注意:我不是在谈论转码。它是关于重新打包/重新格式化,定位宏块定义数据块并以不同的方式放置它们。

我现在正在尝试使用H.264标准规范和一些开源解码器代码解析相应的数据头:SPS,PPS和编码切片。这项任务似乎有可能,虽然有点棘手,但有很多技术细节。

我的问题是:这是一个已知问题吗?是否有一些API /库正是这样做的?

1 个答案:

答案 0 :(得分:2)

问题是:这是一个已知问题吗?是否有一些API /库正是这样做的?"

我所知道的API库并不存在,但我相信您可以在源代码中找到您的解决方案或接近您的解决方案,该源代码可以从github的h264bitstream项目编译到库中:{{3 }} 让我们知道它对您有用。当然,你必须在这里阅读一些代码,但基本的解决方案,或接近解决方案似乎都在那里。