写在前面
在项目的doc文件夹里有software-manual.pdf文件,包含了VTM的下载和使用方法,以及对各个模块及其参数的说明。十分有用!
可以选择直接看这个文件然后把blog关掉了。
后面会再重复一遍:)
参考blog
如何在Windows下跑视频编码代码
Linux下运行VTM
VS2019运行VTM(win10)
Linux GCC常用命令
如何在ubuntu20.04上安装GCC
Generate Microsoft Visual Studio Solution for VTM — VVC Codec
在Linux上开始使用CMake工具
ubuntu安装cmake的几种方式
工具准备
- gcc(编译器
- gdb(调试器
- Visual Studio Code
- cmake(编译工具
安装步骤
- 安装gcc编译器,输入gcc -v和g++ -v指令判断编译环境是否已经配置好。
- 安装GDB调试器。
- 安装cmake。
- 在vs code上安装扩展工具。
Run->Install Additional Debuggers
- C/C++
- Code Runner
- cmake tools
- 下载VTM官方标准测试模型
- 解压VTM文件并在vs code中打开。可以看到根目录有一个CMakeLists.txt文件。然后开始配置cmake tools。
- 在vs code中打开命令面板(Ctrl+Shift+P),选择CMake:Select a kit,可以看到系统上找到的编译器列表。选择一个要使用的编译器,选择完毕后可以看到vs code下方状态栏会显示所选择的工具包。
- 再次Ctrl+Shift+P,选择CMake:Select Variant,选择一个构建项目的生成类型。(一般选择Release)
- 再次Ctrl+Shift+P,选择CMake:Configue。将会配置项目,生成build文件在项目的build文件夹。
- 最后Ctrl+Shift+P,选择CMake:Build,或者直接点击状态栏上的build按钮。
- 如何使用VTM
据说是和HEVC的测试模型HM是一样的用法,但是我就都没有怎么用过,简单地记录一下。
(在项目的doc文件夹里有software-manual.pdf文件,包含了VTM的下载和使用方法,以及对各个模块及其参数的说明。十分有用!)
(个人习惯)新建一个experiment文件夹,将bin目录中的EncoderAppStaticd和DecoderAppStaticd,cfg目录的encoder_intra_vtm.cfg(有好几个cfg文件,看需求用),以及用于重新编码的.yuv视频序列,都放到这个文件夹里。
首先是修改配置文件。在File I/O模块里补充参数配置(必须,不然编码会报错):
#======== File I/O =====================
InputFile : MarketPlace_1920x1080_60fps_10bit_420.yuv
InputBitDepth : 8 # Input bitdepth
InputChromaFormat : 420 # Ratio of luminance to chromina
FrameRate : 50 # Frame Rate per second
FrameSkip : 0 # Number of frames to be skipped
SourceWidth : 832 # Input frame width
SourceHeight : 480 # Input frame height
FramesToBeEncoded : 40 # Number of frames to be coded
Level : 3.1
BitstreamFile : rec1203.bin
ReconFile : rec1203.yuv
还有经常需要修改的参数是QP和TemporalSubsampleRatio
其他的参数一般不需要改变。
Ps:由于编码每个视频序列时,这些常规参数通常都会有变化,为了保持配置文件的清爽,可以把这些需要修改的参数放在一个新建的.cfg文件里,文件名称最好和视频序列名称对应。在运行编码器时候,就可以用这个.cfg文件对于原始.cfg的修改内容进行覆盖。
终于要开始运行了!
一个直接在原配置文件上修改的输入。 把输入信息定向到指定的.txt中存放。
./EncoderAppStatic -c encoder_intra_vtm.cfg > test1202_log.txt
一个用新配置文件对原配置文件内容做覆盖的输入。
./EncoderAppStatic -c encoder_intra_vtm.cfg -c test1202.cfg > test1202_log.txt
编码完成将得到重建文件和二进制码流文件。