首页 > 解决方案 > 在 H.264 视频的每一帧上隐藏数据

问题描述

我发现了一些隐写术技术,可以将数据隐藏在H.264 视频 ( ref )的编码帧上。但是,我想知道是否有可能在编码之前以某种方式将隐藏数据添加到每个帧,以便可以在视频解码后检索这些数据。

我知道H.264压缩是有损的,所以在编码过程中可能会丢失一些原始图像数据,但是由于压缩算法对帧的不同区域有不同的影响,我想知道数据是否可以隐藏在不太容易被扭曲的区域。

标签: videoencodingh.264steganography

解决方案


H.264 图像在编码前被分成 16x16 的宏块。如果您在每个宏块的内部插入小的亮度(亮度)失真,您可能能够从解码的宏块中提取它们。例如,假设这是一条跨越三个宏块的扫描线,总共 48 个像素。x像素是原始图像,#例如,是您的失真。

                               #
                              #xx#
              #              #x  xxx
     x     xxxxx        # xx#xx   # xx x#x   ##
      xxxxxx#  #xxx    xxxx#             #x##xxxxxxx
        #  #    # xxxxx#                  #xx  ##
         #
     111111111111111122222222222222223333333333333333

有些事情要记住。

  1. 避免宏块边缘的失真,因为它们更有可能表现为块状。

  2. 避免高频失真,因为 H.264 的感知编码有时会衰减它们。

  3. 保持相同的失真(隐藏信号)几帧,然后移动到另一帧。

  4. 在隐藏的比特流上使用前向纠错码和大量冗余。在提取时,您正在大海捞针中寻找弯曲的针。

我从来没有这样做过,所以我猜测了一下。这是JPEG 隐写术的动画改编


推荐阅读