适用于RTC的窄带高清方案1.0
所谓的窄带高清,或者说高清低码,它们都是一种为了以更低的编码网络传输来保持视频清晰度的技术。它通常是视频前处理,编码技术与及视频后处理的一种技术组合方案。
当然窄带高清也分不同的场景,有离线点播,cdn直播,rtc互动的各种场景。每个场景所适用的技术是不同的,比如离线点播的,更多的是CAE编码技术。而本文所说的RTC窄带高清,对延时和功耗有严格要求,任何通过延时换编码压缩率的技术,高cpu/gpu消耗的技术都不能采用。
本文所说的1.0方案,就是一种简单有效的方案,后期也会继续介绍更强的窄带高清方案2.0,但是会增加场景复杂度,更多会融入业务应用级别的优化。
一、我们需要了解RTC视频链路:
以下是 RTC 视频链路的完整流程图,涵盖了采集、编码、传输、带宽估计、接收、解码、渲染的闭环过程:

流程详解
|
阶段 |
模块 |
关键说明 |
|
采集 |
摄像头/麦克风 |
原始视频帧(YUV/RGB)采集,帧率/分辨率控制 |
|
前处理 |
美颜/降噪/缩放 |
3A(AE/AF/AWB)、降噪、图像增强 |
|
编码 |
H.264/HEVC/AV1 |
压缩编码,码率由带宽估计动态调节 |
|
打包 |
RTP封装 |
分片(MTU 限制)、FEC/重传标记 |
|
传输 |
UDP/QUIC |
网络传输,受带宽、丢包、延迟影响 |
|
接收缓冲 |
Jitter Buffer |
抗抖动、乱序重排、丢包检测(NACK请求) |
|
解码 |
硬件/软解 |
解码出 YUV 帧,支持错误隐藏/恢复 |
|
渲染 |
屏幕渲染 |
GPU/CPU 渲染,画面缩放、渲染帧率控制 |
🔄 闭环控制
- 带宽估计模块(GCC/BBR/REMB)持续监测网络状态(丢包率、延迟梯度、吞吐量)
- 将估计带宽反馈给编码器,动态调整编码码率、分辨率、帧率
- 接收端的 RTCP 反馈(REMB/Wideband/NACK)是带宽估计的关键输入
二、编码器
如果不考虑svc编码,那么带宽估计和VQC编码就特别关键。那么就引入了第一个问题:带宽估计目前还没有一个特别精准跟随网络实时抖动调节的技术,它往往是延后的,不精准的。不能充分准时的利用真实的网络带宽。第二个问题,编码视频清晰度会遵循一个重叠阶梯式非线性率失真包络的规律。不同的编码器有不同的规律,即使只是编码参数不一样,率失真包络的形态也不样。VQC是一个复杂的控制过程,码率变动后用什么样的分辨率和帧率编码清晰度是最优的?清晰度的评价如何满足主观感受?
上述两个问题是现实的,也是宏大的两个命题。这里暂时不讨论。
假设我们这里采用h264或者hevc的硬编硬解。大部分产商的硬编码接口都比较简单,能控制的编码参数有限,更有甚者连B帧编码都没法控制,这时就得回退到软件编码。
硬编硬解情况,我们能做的有限:码率,分辨率,帧率
三、前处理/美颜
目前主流的RTC都不再使用固定的硬件设备,更多的是PC,手机终端。PC机配置跨度至少十年以上,有自带摄像头,也有外接usb摄像头。手机主要是android和ios终端。ios系统的iphone设备品质比较一致,时间跨度6,7年。Android手机品牌多,品质多样,有老年机,中低端机和旗舰机。配置时间跨度也同样不小,老年人不愿意换手机。因为以上的情况存在,所以摄像头采集的画质差别就很大。有的手机360p刚刚好,有的1080p也很好。摄像镜头和模组的品质决定了采集出来的画质好坏。采集画质如果出现很多噪声,编码的码率就很高,如果提高QP编码,那么画面细节也随着噪声一起被量化掉,最后编码画质就很差。
这时前处理去噪就很关键。如果是开启美颜,那么美颜必须有全局去噪的功能。去噪和美颜还需要控制好性能和功耗。我们采用基于噪声估计的极速时空域去噪技术。没有引入时延,PC上720p单帧单线程时延0.6ms.链接:yuv420p视频基于噪声估计的极速去噪demo-CSDN博客
如果想要磨皮美颜效果,可以采用轻量级磨皮技术,PC上720p单帧单线程时延1.5ms.链接:yuv420p视频前处理(去噪/磨皮)demo-CSDN博客
以上前处理,我们具备全平台的cpu和vulkan版本。
经过去噪后,在中等QP编码下,同样清晰度能降低10%~15%的码率。
四、后处理增强
终端用户看到的视频清晰度是接收到视频流,解rtp包解码后最终渲染的结果。渲染技术是gpu提供商提供的标准技术,这个和硬编码器一样,一旦技术选型完成,基本上没有什么可操作性。
这时后处理增强技术对清晰度会提供助力。一般后处理增强需要修复视频编码后的块效应,振铃效应以及去模糊技术,还包括色彩增强。
我们这里使用增强技术,采用了基于图像智能滤波与高反差保留融合算法优化,链接:yuv420p视频画质增强demo-CSDN博客,PC上720p单帧单线程时延1.75ms。
色彩增强可用,也可不用。我们也支持了。PC上720p单帧单线程时延0.8ms. 链接:yuv420p视频色彩增强demo-CSDN博客
后处理增强与色彩增强可以统一放到一个线程中,复用数据链路,720p单线程单帧整体时延可控制在2ms左右。
通过vmaf对比测试,使用前处理去噪或者磨皮,然后加上后处理增强。同清晰度下视频带宽降低30%~40%。
如果要支持更高分辨率,比如1080p或者4k.前后处理可以采用多线程或vulkan版本。