【问题标题】:Hiding data on each frame of an H.264 video在 H.264 视频的每一帧上隐藏数据
【发布时间】:2021-06-28 04:19:09
【问题描述】:
我发现了一些隐写技术,可以将数据隐藏在 H.264 视频 (ref) 的编码帧上。但是,我想知道是否有可能以某种方式将隐藏数据添加到每一帧在编码之前,以便可以在视频解码后检索这些数据。
我知道H.264压缩是有损的,所以在编码过程中可能会丢失一些原始图像数据,但是由于压缩算法对一帧的不同区域有不同的影响,不知道数据是否可以隐藏在不易变形的区域。
【问题讨论】:
标签:
video
encoding
h.264
steganography
【解决方案1】:
H.264 图像在编码前被分成 16x16 宏块。如果您在每个宏块的内部插入小的亮度(亮度)失真,您可能能够从解码的宏块中提取它们。例如,假设这是一条跨越三个宏块的扫描线,总共 48 个像素。例如,x 像素是原始图像,# 是您的变形。
#
#xx#
# #x xxx
x xxxxx # xx#xx # xx x#x ##
xxxxxx# #xxx xxxx# #x##xxxxxxx
# # # xxxxx# #xx ##
#
111111111111111122222222222222223333333333333333
需要记住的一些事项。
-
避免宏块边缘的失真,因为它们更有可能表现为块状。
-
避免高频失真,因为 H.264 的感知编码有时会衰减它们。
-
在几帧中保持相同的失真(隐藏信号),然后移至另一帧。
-
在隐藏比特流上使用前向纠错码和大量冗余。提取时,您正在大海捞针。
我从来没有这样做过,所以我猜测了一下。这是moving-pictures adaptation of JPEG steganograpy。