Introducing H-Mode | 介绍下H模式

在新版本的ABPlayer中,其实对于视频会推出一个所谓H模式。H模式是神马?是一种视频加密算法,而且它的操作是针对位图图像的位点颜色进行有效位混乱化操作。干吗用?正当的用途是防止视频站点的审核过不去,非正当用途请自行开眼。

上图为混乱化版本,下图为解密后版本(注意加密是无损的)

请看上方的对比图,就能看到加密方式的效果了。不过这种位点加密并不是完全可靠的,从图也能看出一些还保留了原图特质的线条和轮廓。不过呢,似乎肉眼上咱们大体上真的看不出来此图原图了。同时对原图的微处理可能允许你让加密后的图片更加难以辨别。

这里加密采取的原则是RGB最显著位和最不显著位的替换。什么是最显著位,简单说一个更显著位就是如果变化的话相比于不显著位,你眼睛能更容易分辨这个变化。

我们举例蓝色(#0000FF)的蓝色位(FF)如下:

显著度(0为最不显著) 颜色
11111110 颜色
11111101 颜色
11111011 颜色
11110111 颜色
11101111 颜色
11011111 颜色
10111111 颜色
01111111 颜色

可以看到,当显著位提前时颜色更加偏离顶部参考颜色,换句话说,对图的影响也就越大。而这个加密采取的就是颠倒颜色的显著部位,让影响最小的变为影响最大的位点而影响大的位点则反过来跑到影响小的位置。这样一来,图片就从突出内容的模式,切换到了突出噪音的模式。而进行解密则是执行同一颠倒操作恢复图像位点的主次顺序。

不过这样操作图片则会产生一个问题,即只能进行无损加密,而图片一旦被压缩、拉伸等分辨率变化,就会出现解析失败。且由于很多优化软件会优化所谓低频位点来节约空间,用此方法制作的图像和动态图像不能经过二次压制(除非开启修正机制)。

为了克服这些问题,此方法同时包含了一套修正机制来解决压缩可能导致的解码失败。其中第一包括位保户,即 不直接颠倒,而是将主要位保存在中部,模式如下:
1 2 3 4 5 6 7 8
8 5 2 3 1 6 4 7

按此顺序重排位点,即在后生成的乱图中保护一些更重要位点不会受到很大的破坏。不过为了针对大小修整带来的损失,还有校验单位可以使用,即新图片的最不显著位#7。在制图时,会考虑周围8像素来计算。在优化模式下,程序先计算出最显著颜色(显著位点最高的颜色),然后计算这些位点与周边 8 像素加和时会被抹掉的程度。根据结果则从最不显著颜色的像素进行修正。

不过修正将会对图像质量有损,建议制成免二次压缩的视频透过过滤器。呵呵,要求有点高啊= =。

16 Comments

  1. 视频压缩都是用YUV色彩空间而不是RGB色彩空间的。
    而且用的是yuv420p——几个相邻像素有独立的Y,但共享一个UV。因为据说人眼对亮度比色度更敏感。

    最好考虑一下这点。

    音频部分可以先FFT,对频域信号处理,然后IFFT回来。因为如果直接改时域波形会导致AAC压缩了回不来。

    回复

          1. 。。。。我之前在HTML5下试过。。。效率是大问题。。。只有矩阵变幻(Transformation)可以效率高,一个个byte读的话效率实在是不能忍。。。

            回复

  2. 视频压缩都是用YUV色彩空间而不是RGB色彩空间的。
    而且用的是yuv420p——几个相邻像素有独立的Y,但共享一个UV。因为据说人眼对亮度比色度更敏感。

    最好考虑一下这点。

    回复

  3. 这过审核的idea很不错,做UP主的过程中,被各种的审核不过,马赛克版权LOGO,非常恶心,至于如何免二压,这是UP主本身可做的基本技能呢。
    希望能早日见到~~~
    ps.有木有对图片这么处理的“内涵工具”,可以玩玩游戏,玩玩内涵?

    回复

    1. >_< 这只是视频加密的一个尝试嘛 (现在单图可以加密了) 但是把视频流无损加密正在尝试。音频问题正在看Flash/Flex提供什么。PS现在这个加密到HTML5也可用…

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注