YUV OSD叠加处理

YUV 格式的视频里做 OSD 叠加,其实挺常见的,尤其搞视频直播、播放器开发的你应该经常碰到。亮度、色差拆开算,省带宽,画质也能保证。这种格式里加个频道 logo、字幕啥的,难点在于颜色空间得先对上,不然颜色直接飘了。

YUV 颜色空间的特点是亮度和颜色分开走的,常见像YUV420YUV422YUV444这几种。前两个压缩得多,后一个画质好。你加 OSD 的时候,得先把RGB的文字图像转成 YUV,不然颜色对不上。转换用个矩阵公式搞定,网上一堆工具。

OSD 叠加讲究几个关键点:坐标定位、颜色转换、透明度、像素混合、输出合并。比如要在右下角显示当前时间,就要先确定(x, y)坐标;拿到时间文字的 RGB 图像,转成 YUV;再根据Alpha值做透明,叠上去。像素混合一般用alpha blending,逻辑不难,就是多点性能开销。

想省事的话,可以搭配FFmpegOpenCV来搞。C++或 Python 都行,调用库直接混图就好。如果你还在手搓 YUV 数据,不妨参考下OSD 叠加控件 2006V4.0,虽然老了点,但基本原理写得清楚。

如果你正好做YUV流的字幕叠加,可以看看这个YUV 剪辑工具源码,支持YUV400/422/444格式,挺方便调试的。还有想深入颜色空间转换的,可以翻翻这篇颜色空间转换文章,对理解RGB→YUV挺大。

,YUV OSD 叠加其实就是“配准 + 转换 + 混合”三板斧,工具用熟了,效果做得漂亮,性能也能压得住。如果你做视频播放器或嵌入式直播的,不搞搞这个真的亏。

rar 文件大小:171.56KB