H.264编码NAL/切片分割

H.264 coded NAL/slice splitting

本文关键字:切片 分割 NAL 编码      更新时间:2023-10-16

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

最近,我们转向了硬件编码器,它只支持有限数量的H.264配置文件。因此,每个编码的视频帧现在由单个NALu组成。更准确地说,对于IDR(关键)帧,编码器产生SSP、PSP和单个IDR切片,对于其他帧,则产生单个非IDR切片。

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

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

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

我的问题是:这是一个已知的问题吗?有没有什么API/库可以做到这一点?

问题是:这是一个已知的问题吗?有没有什么API/库可以做到这一点?"

我不知道API库,但我相信你可以在github的h264bitstream项目中编译到库中的源代码中找到你的解决方案,或者接近你的解决方法:https://github.com/aizvorski/h264bitstream/blob/master/svc_split.c让我们知道它是如何为您工作的。当然,您必须在这里阅读一些代码,但基本的解决方案或接近解决方案的解决方案似乎已经存在。