FFmpeg的入门实践系列四(AVS)

devtools/2024/9/24 22:24:55/

在这里插入图片描述

欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力

文章目录

  • 前期博客
  • 参考书籍
  • 一、AVS简介
  • 二、基于FFmpeg配置AVS2

前期博客

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

  1. 下载avs2编解码库的源码
//xavs2为avs2的编码库,davs2为avs2的解码库
https://gitee.com/pkuvcl/xavs2
https://gitee.com/pkuvcl/davs2
  1. 编译和安装avs2的编码库
    把下载完的xavs2源码包上传到Linux服务器,接着执行以下命令,依次编译和安装avs2的编码库。
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
  1. 编译和安装avs2的解码库
    把下载完的davs2源码包上传到Linux服务器,接着执行以下命令,依次编译和安装avs2的解码库。
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 
  1. 把avs2的pkgconfig目录的路径加载到环境变量PKG_CONFIG_PATH
    因为avs2的.pc文件安装到了/usr/local/avs2/lib/pkgconfig,所以需要把该路径添加到环境变量PKG_CONFIG_PATH中,方便FFmpeg自动查找.pc文件,详细的加载步骤说明如下。
vim ~/.bashrc

在文件末尾添加环境变量的配置:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/avs2/lib/pkgconfig

保存文件退出,然后重新加载

source ~/.bashrc

接着运行以下命令查看环境变量

env | grep PKG_CONFIG_PATH
  1. 重新编译和安装FFmpeg,注意启用avs2的编解码库
./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
  1. 把avs2的编解码库的路径添加至环境变量
vim ~/.bashrc
export PATH=$PATH:/usr/local/avs2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/avs2/lib
source ~/.bashrc
  1. 测试
    任意找一个.mp4
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完成,然后播放

ffplay fuzhou.ts

至此,结束~
在这里插入图片描述
望诸位不忘三连支持一下~


http://www.ppmy.cn/devtools/102501.html

相关文章

【Java】Java 设计模式之工厂模式与策略模式

Java设计模式是软件工程中一系列被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它们代表了最佳的实践,帮助开发者解决在软件设计过程中遇到的各种问题。这些模式可以根据其用途分为三大类:创建型、结构型和行为型&#xff0…

贪心算法---分发糖果

题目: n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计…

PHP多门店民宿酒店预订系统小程序源码

🏨✨「多门店酒店民宿预订系统」——一键解锁全球住宿新体验!🌍🏠 🌟 开篇种草:旅行新伙伴,预订无忧! 嘿小伙伴们,是不是每次计划旅行都被繁琐的酒店民宿预订搞得头大&…

bomb 实验

GDB常用命令: GDB调试常用命令-CSDN博客 原理: 编译与反汇编过程-CSDN博客 Bomb实验实现 阶段一: 分析 分配空间:sub $0x8,%rsp 为局部变量分配栈空间。设置参数:mov $0x402400,%esi 将字符串地址加载到 %esi。…

C语言 | Leetcode C语言题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; typedef struct {int tweetId;int userId; } Tweet;typedef struct {int* dict[501];Tweet* tweetList;int tweetListLen; } Twitter;Twitter* twitterCreate() {Twitter* obj malloc(sizeof(Twitter));for (int i 0; i < 501; i) {ob…

IDEA 编译项目时卡在Parsing java,最终报out of memory

今天在项目运行的时候莫名其妙报错&#xff1a; 报错内容&#xff1a; java.lang.OutOfMemoryError: GC overhead limit exceeded原因&#xff1a; 通常是因为堆内存太小&#xff0c;无法有效管理正在创建和销毁的对象。 解决方法&#xff1a; 在 IDEA 的安装目录下找到 bi…

计算机网络常见面试题总结

文章目录 1 计算机网络基础1.1 网络分层模型1.1.1 OSI 七层模型是什么&#xff1f;每一层的作用是什么&#xff1f;1.1.2 TCP/IP 四层模型是什么&#xff1f;每一层的作用是什么&#xff1f;1.1.3 为什么网络要分层&#xff1f; 1.2 常见网络协议1.2.1 应用层有哪些常见的协议&…

搭建Windows环境下的Redis服务与TinyRDM客户端

Redis是一个开源的高性能键值对数据库&#xff0c;以其内存中数据存储和快速的读写能力而广受开发者欢迎。在Windows环境下搭建Redis服务并使用TinyRDM客户端&#xff0c;可以为开发和日常使用提供极大的便利。 安装Redis服务 1. 下载Redis安装包 首先&#xff0c;下载Redis…