欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力
文章目录
前期博客
FFmpeg的入门实践系列一(环境搭建)
FFmpeg的入门实践系列二(基础知识)
FFmpeg的入门实践系列三(基础知识)
参考书籍
《FFmpeg开发实战------从零基础到短视频上线》------欧阳燊
一、AVS简介
数字音视频编解码技术标准工作组由国家原信息产业部科学技术司于2002年6月批准成立。工作组的任务是:面向我国的信息产业需求,联合国内企业和科研机构,制(修)订数字音视频的压缩、解压缩、处理和表示等共性技术标准,为数字音视频设备与系统提供高效经济的编解码技术,服务于高分辨率数字广播、高密度激光数字存储媒体、无线宽带多媒体通讯、互联网宽带流媒体等重大信息产业应用。
AVS是我国具备自主知识产权的第二代信源编码标准。顾名思义,"信源"是信息的"源头",信源编码技术解决的重点问题是数字音视频海量数据(即初始数据、信源)的编码压缩问题,故也称数字音视频编解码技术。显而易见,它是其后数字信息传输、存储、播放等环节的前提,因此是数字音视频产业的共性基础标准。
AVS是一套包含系统、视频、音频、数字版权管理在内的完整标准体系,为数字音视频产业提供更全面的解决方案。
AVS是基于我国创新技术和部分公开技术的自主标准,第一代AVS编码效率比MPEG-2高2-3倍,与AVC相当,技术方案简洁,芯片实现复杂度低,达到了第二代标准的最高水平;而且,AVS通过简洁的一站式许可政策,解决了AVC专利许可问题死结,是开放式制订的国家、国际标准,易于推广; 第二代AVS2编码效率比第一代标准提高了一倍以上,压缩效率超越最新国际标准HEVC(H.265)。此外,AVC仅是一个视频编码标准,而AVS是一套包含系统、视频、音频、数字版权管理在内的完整标准体系,为数字音视频产业提供更全面的解决方案。综上所述,AVS可称第二代信源标准的上选。
第二代AVS标准是系列国家标准《信息技术 高效多媒体编码》(简称AVS2),AVS2主要面向超高清电视节目的传输,支持超高分辨率(4K以上)、高动态范围视频的高效压缩,并争取为相关国际标准的制定发挥关键作用。AVS2支持三维视频、多视角和虚拟现实视频的高效编码;立体声、多声道音频的高效有损及无损编码;监控视频的高效编码;面向三网融合的新型媒体服务 。
第三代AVS标准是指《信息技术 智能媒体编码》系列国家标准,简称AVS3,自2017年开始制定。AVS3主要面向超高清广播影视、全景视频、增强现实/虚拟现实等应用,以及自动驾驶、智慧城市、智慧医疗、智能监控等。支持超高分辨率(8K以上)、全景视频、三维视频、屏幕混合内容视频、高动态范围视频的智能压缩和沉浸式音频场景的应用。
数字音视频产业已在2008年超过通信产业,在2010年成为了国民经济第一大产业。AVS作为数字音视频产业"牵一发动全身"的基础性标准,为我国构建"技术→专利→标准→芯片与软件→整机与系统制造→数字媒体运营与文化产业"的产业链条提供了难得机遇。
(以上文字来源https://www.avs.org.cn/index/list?catid=9)
二、基于FFmpeg配置AVS2
- 下载avs2编解码库的源码
cpp
//xavs2为avs2的编码库,davs2为avs2的解码库
https://gitee.com/pkuvcl/xavs2
https://gitee.com/pkuvcl/davs2
- 编译和安装avs2的编码库
把下载完的xavs2源码包上传到Linux服务器,接着执行以下命令,依次编译和安装avs2的编码库。
cpp
sudo unzip xavs2-master.zip
cd xavs2-master/build/linux/
sudo ./configure --prefix=/usr/local/avs2 --enable-pic --enable-shared
sudo make -j4
sudo make install
- 编译和安装avs2的解码库
把下载完的davs2源码包上传到Linux服务器,接着执行以下命令,依次编译和安装avs2的解码库。
cpp
sudo unzip davs2-master.zip
cd davs2-master/build/linux/
sudo ./configure --prefix=/usr/local/avs2 --enable-pic --enable-shared
sudo make -j4
sudo make install
- 把avs2的pkgconfig目录的路径加载到环境变量PKG_CONFIG_PATH
因为avs2的.pc文件安装到了/usr/local/avs2/lib/pkgconfig,所以需要把该路径添加到环境变量PKG_CONFIG_PATH中,方便FFmpeg自动查找.pc文件,详细的加载步骤说明如下。
cpp
vim ~/.bashrc
在文件末尾添加环境变量的配置:
cpp
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/avs2/lib/pkgconfig
保存文件退出,然后重新加载
cpp
source ~/.bashrc
接着运行以下命令查看环境变量
cpp
env | grep PKG_CONFIG_PATH
- 重新编译和安装FFmpeg,注意启用avs2的编解码库
cpp
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-iconv --enable-gpl --enable-nonfree
sudo make clean
sudo make -j4
sudo make install
- 把avs2的编解码库的路径添加至环境变量
cpp
vim ~/.bashrc
export PATH=$PATH:/usr/local/avs2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/avs2/lib
source ~/.bashrc
- 测试
任意找一个.mp4
cpp
ffmpeg -i fuzhou.mp4 -r 25 -acodec aac -vcodec avs2 fuzhou.ts
注意新视频的扩展名必须为.ts,不能时.mp4,因为avs2不支持MP4封装格式,只支持TS封装格式。命令中-r 25是把新视频的帧率调节为每秒25帧, -acodec aac表示把音频转换为AAC编码。
等待fuzhou.ts完成,然后播放
cpp
ffplay fuzhou.ts
至此,结束~
望诸位不忘三连支持一下~