V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
regicide
V2EX  ›  程序员

[有偿]求指导一下如何给视频加上盲水印?

  •  
  •   regicide · 2020-04-25 17:05:35 +08:00 · 5197 次点击
    这是一个创建于 1655 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位好,我最近在 B 站上看到了这个视频: [科普向] 这个水印,看不见?(盲水印),想学习一下在视频上添加盲水印的行为(来保护我的视频资源)。比较尴尬的事情是,原视频的作者虽然说在视频上加了盲水印,但在视频内讲解的主要是如何对图片打上盲水印,并没有提到如何对视频进行操作。所以目前我的复现进度是,实现了图片的盲水印,但对视频盲水印好无头绪。

    我想着能不能在网上找一些资料,结果发现目前 Github 上也没有相关开源的包,所有相关的包几乎都是针对图片进行操作的,没有找到对视频流处理的实例。也看了一些论文,基本上也只讲了水印的加密算法。考虑到时间就是金钱,我自身研究这块内容可能要投入无法预计的时间,所以想请做过这个课题或者有经验的同学给予一些指导-如何将水印加在视频流上,并且可提取。我乐意为指导付出一定的咨询费用(来加快学习进度)。

    我的邮件联系方式:bHZhbkBwcm90b25tYWlsLmNvbQ==

    oreoiot
        1
    oreoiot  
       2020-04-25 17:20:06 +08:00 via iPhone
    插眼。视频编码比纯粹位图要复杂一丢丢,看楼主如何解决的
    misdake
        2
    misdake  
       2020-04-25 17:21:16 +08:00
    最差可以先用工具把视频都拆成图片,批量打上同样的盲水印,再合成编码成视频。
    regicide
        3
    regicide  
    OP
       2020-04-25 17:47:13 +08:00
    @misdake 试过这样去实现,水印丢失了,不知道是不是强度不够。。
    mcone
        4
    mcone  
       2020-04-25 17:52:37 +08:00   ❤️ 1
    我做过,本科毕设就是相关的……
    如果你的需求不高,仅仅是探索性玩一玩的话,既然你图片都差不多搞定了,那把视频理解为某种方式编码后的图片流+音频流就好了,找找视频解码的工具拆出来图片每帧处理完再装上就行了,注意自己的数字水印抗压缩能力强点别被编码算法给优化了就行,真的没必要来这里有偿求助。
    如果你需要额外复杂优化甚至商用维权什么的,我相信你这的咨询费用肯定不如找个乙方来的多,并且这种情况下更推荐找乙方。
    touxigua
        5
    touxigua  
       2020-04-25 17:57:18 +08:00
    盲水印我发了好几个贴了。。。
    图片盲水印 文件会大很多 有那种加在特定区域的盲水印 但也会变大
    touxigua
        6
    touxigua  
       2020-04-25 17:58:45 +08:00
    有图片盲水印大佬可以联系我 有偿
    regicide
        7
    regicide  
    OP
       2020-04-25 18:06:46 +08:00
    @mcone 那现在我的问题确实应该是加了水印但被编码算法优化了。。。还麻烦留个联系方式,我至少能给你打个红包感谢一下,如果你有代码或者文档可以借鉴的话那更感谢了。复杂优化商用什么,暂时没需求,目的只是想能把功能实现。
    mcone
        8
    mcone  
       2020-04-25 18:14:24 +08:00   ❤️ 1
    @regicide 红包就不用了,随口一答而已,很多年不做相关方向了,代码估计都随着我对毕业论文的记忆一起灰飞烟灭了。
    现在视频编码越来越花样百出,单帧的水印其实不怎么讨喜的,据我所知一些影院用的防盗播数字水印都是基于循环短序列这么来做的,具体就不是非常了解了,等楼下专业人士回答。
    learningman
        9
    learningman  
       2020-04-25 20:00:09 +08:00
    盗视频的又不会直接把你的原视频原封不动的换个平台。。。
    压成 360p 啥水印都得白给
    xcstream
        10
    xcstream  
       2020-04-25 20:52:19 +08:00
    aHR0cHMlM0EvL3d3dy5qaWFuc2h1LmNvbS9wL2MwZTE1MTc3NTA3NQ==
    shadowind
        11
    shadowind  
       2020-04-25 23:22:22 +08:00
    我在上家公司做过这个,具体是在 ffmpeg 中加一个打水印的 filter 。可以参考下。
    Xusually
        12
    Xusually  
       2020-04-25 23:31:36 +08:00
    @shadowind 楼主说的是盲水印,不是普通水印
    shadowind
        13
    shadowind  
       2020-04-25 23:37:58 +08:00
    @Xusually ffmpeg 支持直接加普通水印,不用自己写的哈。
    necomancer
        14
    necomancer  
       2020-04-25 23:49:09 +08:00
    简单而粗暴的方法,逐帧打盲水印然后合成。做个傅立叶变换然后把水印也做个傅立叶变换然后打散随机加到原图的各个频率上。可以根据抽取到的原图的能量做个权重,避开原图高能量的频率,并做到加进去的数字大概在原图能量的,比如 5%,这里能量高了容易被发现,但能量低了容易在压缩中丢失或者截图啥的被破坏。
    necomancer
        15
    necomancer  
       2020-04-26 00:19:09 +08:00
    另外,这个简单粗暴的方法更适合在音频上放盲水印,如果视频有音频的话可以考虑。最近有一些基于自相关函数的音频盲水印方法更隐蔽,更 robust,毕竟如果一个音频的自相关函数被破坏的差不多估计也就用不了了。
    hq
        16
    hq  
       2020-04-26 00:22:16 +08:00   ❤️ 1
    ffmpeg 应该就可以,这里有个例子,虽然是教如何在阿里云上使用函数计算添加水印,但是本地也可以,https://github.com/awesome-fc/fc-oss-ffmpeg/blob/master/functions/video_watermark/index.py
    GeruzoniAnsasu
        17
    GeruzoniAnsasu  
       2020-04-26 09:58:13 +08:00 via Android
    盲水印不都得在频域上做文章?。。但媒体分发用的视频编码都是有损的,都会破坏原有频域特征,盲水印咋搞的……这就跟要在 jpg 上打盲水印还要求重新压缩后信息不丢失一样难。。


    再而且视频编码帧间压缩占绝大比例,跟图片很不一样,用图片逐帧合成估很可能没用
    libook
        18
    libook  
       2020-04-26 15:48:33 +08:00
    这个可能需要一个专门的研发团队反复试验和调校的,研发成本很高,因为要对主流的转码、压缩方案(包括视频平台上的处理)进行测试和调优,最终出一套隐蔽性、观看体验、健壮性综合最高的参数,而这套参数对于绝大多数公司来说都是商业机密吧。

    前面的楼层也都讲了一些原理了,知乎上有大量讲解盲水印的文章,本身做图片盲水印就很繁琐了,视频涉及到帧间压缩等问题比图片更难。

    看你们对 DRM 的要求有多强了,如果是有法务和侵权检测服务的话,其实没必要做太强,传统鉴权+加密 HLS 的方式应该就够了。
    如果实在对视频要求特别强,可以自己搞专有视频格式和专有播放器,淘宝上很多卖培训视频的都是这么做的,优点是不用考虑隐蔽性、几乎不影响观看体验、先天有极强健壮性,缺点就是视频文件和播放器一起分发,且视频不能发到公共视频平台上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:34 · PVG 00:34 · LAX 08:34 · JFK 11:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.