结论:采集走 4K(3840x2160),编码输出 1080P(1920x1080)。采集格式优先 YUY2 / UYVY 或 RGB24,
拿不到就退 NV12,但不要用 MJPEG。
平台侧入流基本都是 1080P,这个改不了,所以能动的只有编码器的输入。下面是选 4K 采集而不是 1080P 直采的
几条理由:
一、绕开摄像头自己的缩放
这是最主要的原因,而且和"分辨率越高越好"没关系。
同一台设备切到 1080P 档位时,很少是做规规矩矩的 2x2 binning。常见做法是 ISP 里跑一个 scaler,
更差的是直接跳行读出(line skipping)。跳行等于欠采样,斜边和高频纹理会直接出摩尔纹和锯齿,
而且这类失真是不可逆的。
取 4K 原图自己缩,等于把重采样这一步从摄像头 ISP 手里拿回来,用什么核、在什么色彩空间做、
中间精度多少位,全部可控。这个收益跟传感器好坏无关,便宜设备上反而更明显。
二、色度分辨率翻倍
4K 下即使只拿到 NV12(4:2:0),色度平面也是 1920x1080。缩到 1080P 输出后,色度是逐像素的,
等效 4:4:4。而 1080P 直采的 4:2:0,色度只有 960x540。
实际表现是红色和饱和色块的边缘:纯红衣服、口红、品牌色 logo,在 1080P 4:2:0 下边缘会发虚、
糊出去一两个像素,字幕的彩色描边也会发脏。4K 采集能明显改善。
退到 NV12 采集也是可以接受的方案。
三、噪声:有收益,但没有想象中大
2x2 box 平均对不相关噪声是方差降到 1/4、标准差减半,账面上 6dB。但实际拿不到这么多:
同尺寸传感器上,4K 的单像素面积只有 1080P 模式的 1/4,本身噪声就更高。两边一抵,平均下来往往只是
和原生 1080P 读出打个平手,略好一点。所以别把降噪当作选 4K 的主要理由,前两条才是。
四、编码器
噪声无法帧间预测,每帧都要重新花码率描述,在 6~8Mbps 这个档位上会直接换成块效应和蚊状噪声。
下采样本身就是一次低通,编码前就把这部分无效高频削掉了,码率能更多花在真正的结构信息上。
注意的几件事
缩放核别用 Lanczos。 4K 到 1080P 正好是整数 2:1,box / area 平均就是数学上正确的答案,
而且没有振铃。Lanczos 在这个倍率下会在高对比边缘(白底黑字、字幕描边)留下 halo。
OBS 里选 Area,自己写就是 2x2 求平均。
缩放放在管线最后,只做一次。 抠像、贴图、合成全部在 4K 画面上完成,末尾统一降到 1080P。
中间来回缩放会累积软化。文字和 UI 例外——直接在 1080P 输出画布上渲染,别从 4K 缩下来。
中间精度留够。 8bit 进 8bit 出的话,2x2 平均得到的额外精度会被舍入,渐变背景容易带banding。缩放在 16bit 或 float 下做,最后一步再回 8bit。
色彩矩阵和范围别转两次。 全程 BT.709 + limited range,采集、缩放、编码三处配置对齐。
不一致的话表现是黑位发灰或者高光被切,比分辨率问题更显眼。
一句话
选 4K 采集的核心目的不是"像素更多",而是把重采样和色度处理从摄像头 ISP 手里接过来自己做。
输出还是 1080P,但这 1080P 是自己控出来的。

411

被折叠的 条评论
为什么被折叠?



