本文作者是 RTE 2021 翻新编程挑战赛获奖者董章晔团队。在实时音视频畛域,视频内容会须要失去版权保护,而盲水印则是爱护的措施之一。这支参赛团队基于声网 SDK 开发了一款利用于用户端的实时视频盲水印插件。其余应用声网 SDK 的开发者,也同样能够在本人的利用中应用该插件。拜访 『浏览原文』,能够查看该项目标源码。
我的项目介绍
视频盲水印技术是将标识信息间接嵌入视频 RGB 或 YUV 的频域中,根本不影响原视频的观看品质,也不容易被人发觉或留神。通过这些暗藏在载体中的信息,可确认内容创建者、使用者或者判断视频是否被篡改。该技术通常由业余的版权保护服务商提供,用于广播电视版权保护,商业性较强。
本我的项目基于声网的 SDK 开发了一款用户端的实时视频盲水印的插件,同时,配套提供了一款基于集体 PC 端的水印辨认软件,用于水印验证。升高了应用盲水印服务的业余门槛,为个人用户的隐衷爱护和作品防盗版提供了便捷的解决方案。
实现原理
盲水印的实现原理是在频域上实现信息叠加,变换的办法包含离散傅立叶变换、小波变换等,比方采纳傅里叶变换,在实部和虚部实现文字图像叠加,再通过逆变换显示视频帧。
对视频帧提取水印的办法是对视频帧截图,对截图再进行一次傅里叶变换,失去频域数据,对频域幅度,即能量进行显示,得出频域幅度图,就会显示之前叠加的文字。
疾速傅里叶变换复杂度为 O(nlog(n)),原理上能够在视频处理过程中实现盲水印的实时叠加。
设计实现
程序设计包含声网 SDK 对接和盲水印开发两局部,盲水印开发分为 Android 端叠加水印和 Windows 提取水印两局部。别离是灰色、黄色和橙色三块。因为是演示 Demo,所以仅在本地视频预览上实现盲水印的解决,将来可扩大到视频显示上。
该方案设计重点思考 SDK 连接和第三方兼容两大方面。次要是少拷贝 YUV 数据、视频解决串行化、第三方兼容性和场景泛化等方面。
外围代码
叠加水印的主流程:
opencv 的调用函数:
次要是傅立叶变换和叠加文字两个函数,声网 SDK 与 OpenCV 开源库兼容成果良好。
成果展现
第一幅图是原始视频,输出水印文字比方 wm,第二幅图是叠加盲水印的视频,可见视频成果根本不受影响,最初一幅图是将第二幅图上传到 PC 后,用户本人提取水印的图像,可见图像中有显著的 wm 文字。至此实现了验证。
将来瞻望
下一步打算次要从进步水印的鲁棒性、扩大水印的利用场景、丰盛水印的数据维度等方面进行思考。在水印鲁棒性方面,打算空域上进行网格化宰割,针对不同宰割区域进行频域水印叠加;采纳不同的变换办法,例如 DWT,以求最佳成果;对水印自身进行冗余编码,晋升水印辨识度,减少水印的隐蔽性。在扩大水印利用方面,在实时视频显示端,进行水印叠加,达到偷拍溯源的目标。在丰盛数据维度方面,在音频解决上,可扩大声纹水印;联合视频内容特色,可扩大特色编码等。