libaom
libaom 是 AOMedia(开放媒体联盟)开发的一个开源视频编解码器库,它是 AV1 视频压缩格式的参考实现,并被广泛用于多种生产系统中。libaom 支持多种功能,包括可扩展视频编码(SVC)、实时通信(RTC)优化等,并定期进行更新以提高压缩效率和编码速度 。
libaom 的一些关键特性包括:
- 多空间层和时间层编码:通过
aom_svc_layer_id_t
结构体支持空间层和时间层的ID标识,允许视频在不同的分辨率和帧率下进行编码 。- 编码参数配置:通过
aom_svc_params_t
结构体等配置编码参数,如空间层数量、时间层数量、量化器、缩放因子等 。- 基础编码参数:
aom_codec_enc_cfg_t
结构体用于配置编码器的基础参数,如使用方式、时间基准、编码通道、帧重采样等 。- 多遍编码模式:支持多遍编码模式,包括单遍、双遍和多遍编码,以优化编码效率和质量 。
- 帧超分采样:支持帧超分辨率模式,通过
rc_superres_mode
枚举值控制放大过程 。- 关键帧放置:支持关键帧放置模式,通过
kf_mode
枚举值决定是否自动放置关键帧 。- SVC 编码参数:支持 SVC 编码的参数类型配置,如层数量、量化器、缩放因子等 。
libaom 的更新通常每三个月进行一次,最近的更新包括对 SVC 丢帧模式的支持、新的构建配置以减小二进制文件大小、以及对 RTC 屏幕内容压缩效率的显著提升 。此外,libaom 还提供了对 AV1 视频压缩格式的支持,包括实时编码模式和对不同质量控制策略的优化 。
noise_model.c 介绍
- 功能:在输入视频中创建噪声,即 胶片颗粒视觉。命令行工具的目的是分析去噪视频和原始视频之间的差异,然后创建一个描述这种差异的表,这个表可以用来在编码过程中模拟原始视频的颗粒效果。这对于保持视频的视觉质量,尤其是在压缩视频时,是非常重要的。
- 文件位置:libaom/examples/noise_model.c
函数关系描述
命令行参数说明
- 终端输入
./noise_model --help
,输出如下:
Options:--help Show usage options and exit--i <arg>, --input=<arg> Input filename--fps=<arg> Frame rate-w <arg>, --width=<arg> Input width (if rawvideo)-h <arg>, --height=<arg> Input height (if rawvideo)-b <arg>, --block-size=<arg> Block size-n <arg>, --output-grain-table=<arg> Output noise file-d <arg>, --input-denoised