AV1代码学习0:libaom的配置以及码流分析

AV1代码学习0:libaom的配置以及码流分析_第1张图片

之所以写这个专栏,主要还是因为项目原因要学习AV1,之前也从未接触过工程量这么大的工程代码,所以这个专栏的形式可能会像学习笔记或者学习过程的一个记录。在学习AV1之前有接触过HEVC,很多基础的东西都是在岳麓吹雪大神的博客学到,受益匪浅。AOMedia Video 1(简称AV1)与HEVC最大的不同就是它是一个免专利的编解码器,由开源媒体联盟(AOM)开放,主要是谷歌牵头做的。AV1是还是基于混合编码框架的编解码器,其所使用的编码技术主要来源于谷歌VP9的下一代视频压缩格式VP10,但同时也包含了由Xiph.Org 基金会的主要赞助者Mozilla开发的Daala视频压缩格式和由Cisco开发的Thor视频压缩格式中所使用的视频编码技术。

一、libaom的使用教程

libaom是AV1的官方参考软件,当然现在也有很多其他的版本,像rav1e和SVT-AV1。

1.下载

如果你用的linux平台,那么直接用git clone https://aomedia.googlesource.com/aom再cmake,make就行了

因为我要用VS来完成修改,所以整个项目都是在window上完成的。不过在window上编译有点麻烦,用.exe的cmake编译似乎会出错,所以改用msys2来完成下载和编译。

首先,先在http://www.msys2.org/下载msys2,安装完成后打开msys2

AV1代码学习0:libaom的配置以及码流分析_第2张图片

在终端中输入安装下列软件(可能需要下载多次)

  • pacman -S mingw-w64-x86_64-cmake gcc mingw-w64-x86_64-winpthreads-git mingw-w64-x86_64-libwinpthread-git binutils coreutils yasm git base-devel p7zip

上述软件都安装成功后就可以用git下载libaom了,在用git下载前可能还需要设置git的代理(改成自己梯子的IP),否则有可能下不了

  • git clone https://aomedia.googlesource.com/aom 下载libaom(需用git config设置代理)

下载完成后开始编译

  • mkdir build && cd build 创建并进入文件夹(非必须)
  • cmake.exe ../aom -G "Visual Studio 14 2015 Win64" 引号中应改为自己所用的VS对应版本(也可根据需要修改编译的结果)

编译完成后进入文件夹,AOM.sln就是av1对应的工程

AV1代码学习0:libaom的配置以及码流分析_第3张图片

2.参数配置

打开sln过后,找解决方案中找到aomenc,编码的主函数就在aomenc.c里,将该方案设置为启动项目,并在调试里输入配置参数就可以开始编码了

AV1代码学习0:libaom的配置以及码流分析_第4张图片

右键打开aomenc的属性,在调试里输入--width=352 --height=288 --end-usage=cq --min-q=27 --max-q=35 --min-gf-interval=4 --max-gf-interval=4 --cpu-used=4 --threads=16 --limit=12 -o Test5.ivf bus_cif.yuv

这里只是一个例子,上述参数均可变动,-o接的是输出,可以输出ivf文件放到AOM的码流分析器去分析码流,也可以直接封装成.webm格式的视频文件,输入文件bus_cif.yuv,也可以输入.y4m文件

AV1代码学习0:libaom的配置以及码流分析_第5张图片

3.运行

然后开始编码

AV1代码学习0:libaom的配置以及码流分析_第6张图片跟HEVC不同的是,你需要在参数配置中加入--psnr才能显示当前编码的YUV psnr信息

4.结果分析

https://www.jianshu.com/p/6161bab4d189

可以参考这篇博客搭建一个AV1的码流分析工具AOMAnalyzer,也可以下载streameye4.5之后的版本对生成的webm或者ivf文件进行分析,如果是用AOMAnalyzer,大概可以看到这样的效果

 

 

你可能感兴趣的:(AV1代码学习,Video,Coding)