用X265对HEVC/H.265视频进行隐写steganography---一、基本工具

本文介绍了使用X265编码器和elecardHEVCanalyzer进行HEVC/H.265视频隐写的基础知识,包括安装配置、测试流程以及如何查看和修改帧内预测模式、运动向量和DCT/DST系数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

写个用X265对HEVC/H.265视频隐写的指南,希望对大家有帮助。

基本工具如下(全部windows平台):

  1. X265(编码器)

  2. elecard HEVC analyzer(265文件的分析软件,可以用来查看是否参数按你想要的方式修改成功了)

  3. ffmpeg/HM(解码器,任选)

  4. 测试序列

所有相关程序也可在以下网盘中下载:
链接:https://pan.baidu.com/s/1qQUlGu3CRaKa8W4cmTvlGA
提取码:jy83

HEVC标准测试序列也贴下网盘:
链接:https://pan.baidu.com/s/1kyjCXumOYWmycdg-lXN4Qg
提取码:af9b

1.X265的安装及测试

http://x265.org.官网Get Involved栏点击contribute to x265,进入后点download
(现在好像需要注册)

X265对应的文档在https://x265.readthedocs.io/en/master/,里面command line options可以查到所有的命令行代码

x265环境需要nasm和cmake,之前官网中有提示安装,现在好像没找到(越来越不友好了)

cmake:https://cmake.org/download/,下载对应版本,一路确定往下直到安装完成,重启电脑后,命令行输入camke出现提示即安装成功

在这里插入图片描述
nasm:https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D,进入对应版本目录,根据电脑选win32/win64,下载exe,一路确定完成

环境完成后,解压x265_2.8,进入build文件夹,选择你对应的VS版本号的进入,例如我安装的是VS2017,64bit则进入vc15-x86_64目录,点击make-solutions.bat.等一会出现以下界面
在这里插入图片描述
直接点击Configure,下面提示栏出现Configure done之后 点击Generate,出现Generating done之后直接右上角关闭即可(图中尴尬的出现NOT FIND NASM,不影响后面任何操作)

在这里插入图片描述

然后在同一目录下,你会发现他生成了一大堆文件,直接双击打开x265.sln,进入vs2017界面。右键点击CLI,设为启动项目,如下图所示(即CLI变粗即可,默认是allbulid),右键cli->生成,即可生成项目,形成exe。
在这里插入图片描述
为了以后在VS里面进行单步调试,我们需在VS中用调试模式进行运行。右键cli->属性,出现的界面中配置属性->调试,工作目录那栏看到工作目录,默认应该是x265_2.8\build\vc15-x86_64这个文件夹,即以后所有的相对路径的根目录是这个目录。

我们将SlideEditing_1280x720_30.yuv拷入这个目录,当然你放在其他地方给绝对路径也可以。

在右键cli->属性,出现的界面中配置属性->调试命令参数那行,输入以下参数

-p 5 --rect --input ./SlideEditing_1280x720_30.yuv --input-res 1280x720 --fps 30 --output ori.265 --profile main --keyint 10 --no-scenecut --b-adapt 0 --bframes 0 --qp 20

再说一次,任何命令行参数都可在官方文档查到https://x265.readthedocs.io/en/master/,command line options

点击本地window调试器,进入调试运行。
在这里插入图片描述
出现以下命令即压缩过程成功

在这里插入图片描述

最终在工作目录下面生成ori.265。x265初步运行即成功。ori.265可以直接用potplayer观看,也可用elecard进行查看参数

注意事项:勿在工作目录中的ori.265和yuv被其他程序占用时进行压缩,会报错,特别是之后用elecard看265时,需要关闭elecard里面的文件才能进行压缩。当然你可以把工作目录里的265拷到其他地方去,这样就没问题了。
在这里插入图片描述

2.elecard HEVC analyzer的基本使用

从官网上或开头的网盘中下载elecard软件,打开。

左上角file->open media,找到你刚才生成的ori.265

在这里插入图片描述

一般,HEVC隐写分为帧内隐写和帧间隐写,帧内隐写的常见载体有,帧内预测模式,帧内的DCT系数,帧内的分块结构。帧间隐写有运动向量,分块结构等等。下面介绍一下常见的这些参数在哪里看。

2.1 CU\PU\TU划分

软件上方按此结构选择
在这里插入图片描述
这样,橘黄色代表帧内预测块,无色代表skip,蓝色代表inter预测块。示例中序号7这一帧看到三种块同时出现。
右侧cu栏显示了我们鼠标指向的CU对应的结构。
根据不同的算法,我们可以对type,CU的大小进行任意修改,从而让整个CTU的划分按我们想要的隐写后的结构来。具体后面文章进行示例。
在这里插入图片描述

比如第一帧这个位置,是个8x8的CU划分成了4个4x4的PU和TU

2.2 帧内预测模式

如上图,我们可以看到这一块CU中我们鼠标指向的PU的intra type luma是11,即帧内方向是11,隐写需要改的就是这个11。一般不修改色度块,只改亮度块。

2.3 运动向量

同样,右侧也显示了对应的运动向量信息,如下图,这一块是一个merge模式的,运动向量是0,-16的PU块,CU划分模式是NX2N,即竖着划。我们隐写需要改的就是这个0,-16,当然,一般不改merge模式块下的运动向量,而是改非merge的运动向量。

在这里插入图片描述

2.4 DCT/DST系数

我们可以在左侧pixels栏 ,上方下拉transform看到所有量化后的DCT/DST系数(解码端),一般进行DCT/DST隐写即修改这部分参数。
每个小白块有1-3个值,第一行是我们需要修改的亮度DCT/DST的值,如第一个-62。后面的两个0,0代表U和V通道的值,可以发现这个YUV是个YUV420格式的YUV,4个方形块共享一个U和V的值。UV值一般我们不关注,隐写只修改Y分量,即第一行的DCT/DST值。

这一栏还可以看到好多其他的数值,如解码端的残差和解码值。
同样,右侧也显示了对应的运动向量信息,如下图,这一块是一个merge模式的,运动向量是0,-16的PU块,CU划分模式是NX2N,即竖着划。我们隐写需要改的就是这个0,-16,当然,一般不改merge模式块下的运动向量,而是改非merge的运动向量。

基本工具就介绍到这里,之后介绍如何在X265中进行以上各个参数位置的隐写算法的基本修改方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值