开发者实践丨盲水印插件:用户端的实时视频溯源保护

本文作者是 RTE 2021 创新编程挑战赛获奖者董章晔团队。在实时音视频领域,视频内容会需要得到版权保护,而盲水印则是保护的措施之一。这支参赛团队基于声网 SDK 开发了一款应用于用户端的实时视频盲水印插件。其他使用声网 SDK 的开发者,也同样可以在自己的应用中使用该插件。访问『阅读原文』,可以查看该项目的源码。

项目介绍

视频盲水印技术是将标识信息直接嵌入视频 RGB 或 YUV 的频域中,基本不影响原视频的观看质量,也不容易被人觉察或注意。通过这些隐藏在载体中的信息,可确认内容创建者、使用者或者判断视频是否被篡改。该技术通常由专业的版权保护服务商提供,用于广播电视版权保护,商业性较强。

本项目基于声网的 SDK 开发了一款用户端的实时视频盲水印的插件,同时,配套提供了一款基于个人 PC 端的水印识别软件,用于水印验证。降低了使用盲水印服务的专业门槛,为个人用户的隐私保护和作品防盗版提供了便捷的解决方案。

实现原理

盲水印的实现原理是在频域上完成信息叠加,变换的方法包括离散傅立叶变换、小波变换等,比如采用傅里叶变换,在实部和虚部完成文字图像叠加,再通过逆变换显示视频帧。

%E5%9B%BE%E7%89%87

对视频帧提取水印的方法是对视频帧截图,对截图再进行一次傅里叶变换,得到频域数据,对频域幅度,即能量进行显示,得出频域幅度图,就会显示之前叠加的文字。

%E5%9B%BE%E7%89%87

快速傅里叶变换复杂度为 O(nlog(n)),原理上可以在视频处理过程中实现盲水印的实时叠加。

设计实现

程序设计包括声网 SDK 对接和盲水印开发两部分,盲水印开发分为 Android 端叠加水印和 Windows 提取水印两部分。分别是灰色、黄色和橙色三块。由于是演示 Demo,所以仅在本地视频预览上完成盲水印的处理,未来可扩展到视频显示上。

%E5%9B%BE%E7%89%87

该方案设计重点考虑 SDK 衔接和第三方兼容两大方面。主要是少拷贝YUV数据、视频处理串行化、第三方兼容性和场景泛化等方面。

核心代码

叠加水印的主流程:
%E5%9B%BE%E7%89%87

opencv 的调用函数:

%E5%9B%BE%E7%89%87

主要是傅立叶变换和叠加文字两个函数,声网 SDK 与 OpenCV 开源库兼容效果良好。

效果展示

%E5%9B%BE%E7%89%87

第一幅图是原始视频,输入水印文字比如 wm,第二幅图是叠加盲水印的视频,可见视频效果基本不受影响,最后一幅图是将第二幅图上传到 PC 后,用户自己提取水印的图像,可见图像中有明显的 wm 文字。至此完成了验证。

未来展望

下一步计划主要从提高水印的鲁棒性、扩展水印的应用场景、丰富水印的数据维度等方面进行考虑。在水印鲁棒性方面,计划空域上进行网格化分割,针对不同分割区域进行频域水印叠加;采用不同的变换方法,例如 DWT,以求最佳效果;对水印本身进行冗余编码,提升水印辨识度,增加水印的隐蔽性。在扩展水印应用方面,在实时视频显示端,进行水印叠加,达到偷拍溯源的目的。在丰富数据维度方面,在音频处理上,可扩展声纹水印;结合视频内容特征,可扩展特征编码等。

%E5%9B%BE%E7%89%87