H.264 快速重新编码

Posted

技术标签:

【中文标题】H.264 快速重新编码【英文标题】:H.264 fast recoding 【发布时间】:2017-10-19 21:30:52 【问题描述】:

我正在开发一个(某种)VOIP 应用程序,用于支持视频的移动设备。大多数现代智能手机都配备了硬件 H.264 编码器/解码器。然而,其中大多数只支持有限数量的编码配置文件。特别是我对通常不支持的 SVC 感兴趣。最简单的解决方案是使用软件编码器。但是,很明显,它也有它的缺点。

最近我想到了一个创建混合硬件+软件编码器的想法。它由一个硬件编码器和一个“浅层软件编码器”组成。

我知道(用非常笼统的术语)H.264 以宏块的形式工作。编码流包含宏块指令:要么完全重传(以类似 jpeg 的数据的形式)、它的运动参数,要么什么都没有。

完整的软件重新编码将处理这样的编码流,解析/实现它,并在其图像数据上执行,然后对生成的图像进行编码,其中包括处理每个宏块、决策策略、构建运动向量,最后,编码所有指令。

我们的想法是进行“浅层”重新编码。我虽然关于解析传入的编码流,但不是执行它的指令 - 只是将它们用作编码器的源,即在 H.264 复杂的编码方案中对它们进行编码,具有所需的精度(即比特率)等,而无需实际分析图像,寻找运动矢量等。

本质上是使用decoder+encoder,但是有一个shortcut,这样实际的图像不是decoder生成的,encoder也不会分析的。

这听起来可行吗?有没有尝试做类似的事情?

【问题讨论】:

【参考方案1】:

我认为这样做是不可行的。我从对视频编码有基本了解但对实际 h264 编码没有清晰了解的人那里听到了类似的建议。这可能是可能的,但这需要非常长的时间才能取得任何明智的结果。例如,您可以从x264 与一些最好的开发人员签约,这可能会花费您大约 100K 才能获得任何结果。验证我的答案的最佳选择是询问 x264 或 ffmpeg 恶意列表。

【讨论】:

我知道 H.264 编码方案很复杂(曾经有过一些经验),但我想将它作为一些开源 H.264 编码器/解码器的基础。比如cisco的openh264。尝试使用快捷方式将他们的解码器与编码器结合起来。

以上是关于H.264 快速重新编码的主要内容,如果未能解决你的问题,请参考以下文章

通过 gstreamer udpsink 流式传输 h.264 时如何解决图像问题

自定义 h.264 流在某些硬件解码器中中断

重新定义实时视频时代,拍乐云发布国内首个 AV1 编码引擎 Pano Venus

SPS、PPS

FFmpeg H264码流格式说明

H.264编码格式分析