AV1 编解码器编译以及使用

本文详细介绍了AV1编解码器的安装过程,包括CMake、Git、Perl、Yasm、Doxygen和Emscripten SDK的安装步骤。提供了从官方及替代来源获取源代码的方法,并指导如何使用CMake生成Visual Studio解决方案进行编译。此外,还列出了编码器`aomenc`和解码器`aomdec`的参数选项,涵盖编码质量、速率控制、关键帧放置和AV1特定设置等多个方面。

参考网站

https://aomedia.googlesource.com/aom/

编译工具和依赖库

  1. CMake

  2. Git

  3. Perl

    • 官网下载安装:https://www.perl.org/get.html

    • 我的百度云下载安装:链接:https://pan.baidu.com/s/1ZSsE2nevhW7ZMMSY1QzE-Q?pwd=unel
      提取码:unel

      安装完成之后在终端输入:perl -v

      出现以下输出则表示成功

      在这里插入图片描述

  4. yasm

    链接:https://yasm.tortall.net/Download.html

    下载完成之后重命名为 yasm.exe,并且配置环境变量。

  5. Doxygen

    链接:https://doxygen.nl/download.html,需要安装 1.8.10 以上版本

  6. EMSDK

    链接:https://github.com/emscripten-core/emsdk,需要安装 Python3.6.0 以上版本

    在终端进入代码路径之后输入以下命令:

    emsdk.bat update			#更新
    emsdk.bat install latest 	#安装最新的emsdk
    emsdk.bat activate latest	#激活
    emsdk_env.bat				#设置环境变量
    

    安装完成之后在终端输入:emcc -v,出现以下输出则表示成功:
    在这里插入图片描述

    在 Windows 环境下,如果想把 Emscripten 的环境变量注册为全局变量,可以以管理员身份运行 emsdk.bat activate latest --global,或者手动配置环境变量,来更改系统的环境变量,使得以后无需再运行 emsdk_env.bat,该方法有潜在的副作用:它将环境变量指向了 Emscripten 内置的 Node.js、Python、Java,若系统中安装了这些组件的其他版本,可能引发冲突。

下载源代码

  • 官方链接:git clone https://aomedia.googlesource.com/aom

  • 即使可以科学上网,但是官方链接我一直无法下载,所以我去谷歌的 AV1 论坛(https://groups.google.com/a/aomedia.org/g/av1-discuss)找了一份代码,链接:https://storage.googleapis.com/aom-releases/libaom-3.4.0.tar.gz

编译

使用 CMake 生成 VS 解决方案

打开 CMake 软件,设置代码路径,生成路径,点击 Configure 按钮
在这里插入图片描述

选择自己的 VS 版本
在这里插入图片描述

根据需求手动修改配置(不修改也可以),点击 Generate 按钮
在这里插入图片描述

看到以下 2 行说明生成成功:
在这里插入图片描述

编译

  1. 进入 build 目录,打开 AOM.sln

  2. 设置 aomenc/aomdec 为启动项,右键生成
    在这里插入图片描述

使用

编码示例:

aomenc.exe --fps=30/1 --width=320 --height=256 --max-q=22--psnr --obu --bit-depth=8 -y -o str.bin E:\Sequence\foreman-cif_320x256.yuv

解码示例:

aomdec.exe --i420 -o rec.yuv str.bin

所有可调的编码参数:

Options:
            --help                      Show usage options and exit
  -c <arg>, --cfg=<arg>                 Config file to use
  -D,       --debug                     Debug mode (makes output deterministic)
  -o <arg>, --output=<arg>              Output filename
            --codec=<arg>               Codec to use
  -p <arg>, --passes=<arg>              Number of passes (1/2/3)
            --pass=<arg>                Pass to execute (1/2/3)
            --fpf=<arg>                 First pass statistics file name
            --limit=<arg>               Stop encoding after n input frames
            --skip=<arg>                Skip the first n input frames
            --good                      Use Good Quality Deadline
            --rt                        Use Realtime Quality Deadline
            --allintra                  Use all intra mode
  -q,       --quiet                     Do not print encode progress
  -v,       --verbose                   Show encoder parameters
            --psnr=<arg>                Show PSNR in status line (0: Disable PSNR status line display, 1: PSNR calculated using input bit-depth (default), 2: PSNR calculated using stream bit-depth); takes default option when arguments are not specified
            --webm                      Output WebM (default when WebM IO is enabled)
            --ivf                       Output IVF
            --obu                       Output OBU
            --q-hist=<arg>              Show quantizer histogram (n-buckets)
            --rate-hist=<arg>           Show rate histogram (n-buckets)
            --disable-warnings          Disable warnings about potentially incorrect encode settings
  -y,       --disable-warning-prompt    Display warnings, but do not prompt user to continue
            --test-decode=<arg>         Test encode/decode mismatch
                                          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值