【发布时间】:2017-10-19 21:30:52
【问题描述】:
我正在开发一个(某种)VOIP 应用程序,用于支持视频的移动设备。大多数现代智能手机都配备了硬件 H.264 编码器/解码器。然而,其中大多数只支持有限数量的编码配置文件。特别是我对通常不支持的 SVC 感兴趣。最简单的解决方案是使用软件编码器。但是,很明显,它也有它的缺点。
最近我想到了一个创建混合硬件+软件编码器的想法。它由一个硬件编码器和一个“浅层软件编码器”组成。
我知道(用非常笼统的术语)H.264 以宏块的形式工作。编码流包含宏块指令:要么完全重传(以类似 jpeg 的数据的形式)、它的运动参数,要么什么都没有。
完整的软件重新编码将处理这样的编码流,解析/实现它,并在其图像数据上执行,然后对生成的图像进行编码,其中包括处理每个宏块、决策策略、构建运动向量,最后,编码所有指令。
我们的想法是进行“浅层”重新编码。我虽然关于解析传入的编码流,但不是执行它的指令 - 只是将它们用作编码器的源,即在 H.264 复杂的编码方案中对它们进行编码,具有所需的精度(即比特率)等,而无需实际分析图像,寻找运动矢量等。
本质上是使用decoder+encoder,但是有一个shortcut,这样实际的图像不是decoder生成的,encoder也不会分析的。
这听起来可行吗?有没有尝试做类似的事情?
【问题讨论】:
标签: c++ video encoding h.264 recode