【AV1 编码器研究一】aomenc.exe命令行参数简析


持续更新中。
2020.04.05更新完目前版本的所有命令。

用编码器打印help信息

运行如下命令可以将aomenc.exe内置的一些帮助信息输出到help.txt中。下文主要以help.txt中的内容进行分析。目前还是基于其他编码标准的经验分析AV1的一些命令参数,可能会有一些理解错误,对于不确定的地方后续进行实验测试,如果有哪位大拿发现有错漏也请不吝指出。

aomenc.exe --help >help.txt

命令行参数归类

aomenc将命令行分成通用命令、编码器全局选项、码率控制选项、Twopass码率控制选项、关键帧设置选项、AV1 特定选项这六类。
对于一般用户来说,单纯的离线压缩任务只需指定下文中通用命令、编码器全局选项中相关的参数即可,如输入\输出文件名及格式、对编码侧重压缩速度还是压缩质量等相对宏观上层的命令。
对于稍偏专业的用户,如有实时压缩、传输的需求可进一步尝试调整码率控制选项、Twopass码率控制选项、关键帧设置选项中的一些参数配置,如指定码率、关键帧间隔等影响码率分布和实时性的参数。
最后一类AV1 特定选项则暴露了很多编码工具的开关选项,个人理解这些都是更偏向专业用户或者有算法研究兴趣的朋友。

命令行详细内容

通用命令

命令中有两种格式,后面带的意思是需要指定输入参数如-c,而不带参数()的命令类似开关或者切换模式,后面不需要带参数。

           --help                     	打印帮助信息,上文的示例中有用到。
  -c <arg>, --cfg=<arg>                	指定使用的配置文件。有 -c <filename>和--cfg=<filename>两种形式,下同不再赘述。
  -D,       --debug                    	指定使用debug模式,这个命令的直接翻译是“使输出具有确定性”,不太明白是何意,个人理解成会输出一些编码信息,后续测试一下再更新。
  -o <arg>, --output=<arg>             	指定输出文件名。
            --codec=<arg>              	指定使用的编码器。(注:难道有多个编码器?)
  -p <arg>, --passes=<arg>             	指定编码的次数,允许1或2次。
            --pass=<arg>               	指定执行第1次或第2次编码。
            --fpf=<arg>                	指定第1次编码输出的统计信息。
            --limit=<arg>              	指定在编码N帧后停止,也就是指定编码的帧数。
            --skip=<arg>               	指定跳过序列的前N帧,也就是从第N+1帧开始编码。
            --good                     	使用质量下限约束。(注:意思是保障质量不低于某个程度?)
            --rt                       	使用实时编码的质量下限约束。(注:相比上一个命令加多了编码速度的约束?)
  -q,       --quiet                    	不输出编码进度信息。
  -v,       --verbose                  	显示编码器参数。
            --psnr                     	显示PSNR。
            --webm                     	输出WebM(启用WebM IO时的默认值)。(注:WebM是啥?)
            --ivf                      	输出IVF。(注:IVF是裸码流封装好的格式)
            --obu                      	输出OBU。(注:OBU是AV1的裸码流)
            --q-hist=<arg>             	显示量化器的直方图。(注:似乎是输出量化状态用于查看是否符合预期的工具。)
            --rate-hist=<arg>          	输出码率直方图。
            --disable-warnings         	不显示关于潜在不正确编码配置的警告信息。
  -y,       --disable-warning-prompt   	显示警告,但不推荐用户继续编码。
            --test-decode=<arg>        	测试编解码匹配与否。三档可选<off, fatal, warn>

上述通用命令中有不少我不太懂得的名词,比如WebM,IVF等。后面看是否可以通过测试现象猜测,或者后续看代码的过程中明确其含义。

全局编码选项

            --yv12                     	输入文件是YV12格式。(注:看似和NV12名字比较相近,不确定是同个含义)
            --i420                     	输入文件是I420格式。 (默认格式,应该是YUV4:2:0)
            --i422                     	输入文件是I422格式。(应该是YUV4:2:2)
            --i444                     	输入文件是I444格式。(应该是YUV4:4:4)
  -u <arg>, --usage=<arg>              	指定profile number。
  -t <arg>, --threads=<arg>            	指定最大线程数。
            --profile=<arg>            	指定码流的profile。
  -w <arg>, --width=<arg>              	图像宽。
  -h <arg>, --height=<arg>             	图像高。
            --forced_max_frame_width=<arg>  	强制的最大图像宽度。(注:允许的最大图像宽度?)
            --forced_max_frame_height=<arg>  	强制的最大图像高度。(注:允许的最大图像高度?)
            --stereo-mode=<arg>        	指定立体声3D视频格式。可选<mono, left-right, bottom-top, top-bottom, right-left>。
            --timebase=<arg>           	指定时间戳的精度。输出中所需的时间戳精度,以小数秒表示。 默认值为1/1000。
            --fps=<arg>                	指定帧率。
            --global-error-resilient=<arg> 	启用全局错误恢复功能。
  -b <arg>, --bit-depth=<arg>          	指定源位深,版本小于等于1的只支持8-bit,版本2支持10\12-bit。(注:个人理解版本2也支持8-bit)
                                       	  
            --lag-in-frames=<arg>      	指定最大延迟帧数。
            --large-scale-tile=<arg>   	大范围tile编码(0:不使用,1:使用,仅在IVF输出时可用)。(注:又一个不太明白的命令,AV1也支持类似HEVC的tile划分吗?)
            --monochrome               	单色视频,只有亮度没有色度。
            --full-still-picture-hdr   	对静态图片使用完整header。(注:单帧图片可以省略一些header信息吗?)

码率控制选项

            --drop-frame=<arg>         	时域重采样门限,buffer的百分比。(注:个人理解为是buffer满溢达到一定门限时进行丢帧操作。)
            --
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值