FFmpeg开发笔记(六十一)Linux给FFmpeg集成H.266编码器vvenc

《FFmpeg开发实战:从零基础到短视频上线》该书的第一章介绍了如何在Linux环境给FFmpeg集成H.264和H.265的编码器,如今H.266的编码器vvenc也日渐成熟,从7.1版本开始的最新FFmpeg源码已经支持H.266的编码器vvenc。

H.266是H.265的升级版本,H.265的视频编码标准为HEVC(High Efficiency Video Coding,高效视频编码),H.266的视频编码标准为VVC(Versatile Video Coding,多功能视频编码)。其中VVC是HEVC的后继者,目标是在相同视觉质量下将比特率降低50%。

至于VVEnc(Versatile Video Encoder)是一个开源的高效视频编码器,它实现了最新的视频编码标准VVC,能够把视频数据按照H.266标准编码为VVC格式。VVEnc的源码托管地址为https://github.com/fraunhoferhhi/vvenc,国内的镜像地址为https://gitee.com/mirrors/vvenc。

接下来以华为的欧拉系统为例,介绍如何在Linux环境给FFmpeg集成H.266的编码器vvenc,具体的操作步骤说明如下:

一、编译安装VVEnc

先下载最新的vvenc源码,再把vvenc源码包上传到Linux服务器的/usr/local/src目录下。接着登录Linux服务器的控制台,执行下面命令解压源码包:

复制代码
cd /usr/local/src
unzip vvenc-v1.13.1.zip

然后执行下面命令配置vvenc的编译环境:

复制代码
cd vvenc-v1.13.1
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 --install-prefix=/usr/local ..

如果看到cmake命令返回类似下面的"Configuring done"和"Generating done"字样,就表示配置好了vvenc的编译环境:

复制代码
-- VVENC_ENABLE_THIRDPARTY_JSON: ON
-- Performing Test SUPPORTED_mxsave
-- Performing Test SUPPORTED_mxsave - Success
-- Performing Test SUPPORTED_msse4_2
-- Performing Test SUPPORTED_msse4_2 - Success
-- Performing Test SUPPORTED_mavx2
-- Performing Test SUPPORTED_mavx2 - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/vvenc-v1.13.1/build

于是执行下面命令编译和安装vvenc,编译完成的vvenc库将会安装到cmake指定的/usr/local目录。

复制代码
make
make install

二、编译安装FFmpeg

先下载最新的FFmpeg源码(版本号需大于等于7.1),再把FFmpeg源码包上传到Linux服务器的/usr/local/src目录下。接着登录Linux服务器的控制台,执行下面命令解压源码包:

复制代码
cd /usr/local/src
unzip ffmpeg-n7.1.1.zip

确保Linux环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第一章的"1.2 Linux系统安装FFmpeg"安装了H.264的编码器libx264和H.265的编码器libx265,然后执行下面命令配置FFmpeg的编译环境:

复制代码
cd ffmpeg-n7.1.1
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree

配置完毕执行下面命令编译和安装FFmpeg,编译完成的ffmpeg库将会安装到configure指定的/usr/local/ffmpeg目录。

复制代码
make
make install

三、查看FFmpeg的安装结果

运行下面命令查看FFmpeg的安装版本:

复制代码
ffmpeg -version

上面命令返回的FFmpeg版本信息如下:

复制代码
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 10.3.1 (GCC)
configuration: --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libvvenc --enable-iconv --enable-gpl --enable-nonfree
libavutil      59. 39.100 / 59. 39.100
libavcodec     61. 19.101 / 61. 19.101
libavformat    61.  7.100 / 61.  7.100
libavdevice    61.  3.100 / 61.  3.100
libavfilter    10.  4.100 / 10.  4.100
libswscale      8.  3.100 /  8.  3.100
libswresample   5.  3.100 /  5.  3.100
libpostproc    58.  3.100 / 58.  3.100

根据以上返回的版本信息,可知已安装的FFmpeg版本号为7.1.1,同时configuration这行找到"--enable-libvvenc",说明FFmpeg已经启用了H.266的编码器libvvenc。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

相关推荐
LitchiCheng1 小时前
RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)
linux·运维·risc-v
咖啡进修指南1 小时前
LVS原理详解及LVS负载均衡工作模式
linux·负载均衡·lvs
西阳未落3 小时前
Linux(7)——进程(概念篇)
linux·运维·服务器
Unlimitedz3 小时前
iOS使用Metal对采集视频进行渲染
ios·音视频
苒苒鸭3 小时前
nginx 基于IP和用户的访问
linux
白熊1883 小时前
【图像大模型】AnimateDiff:基于扩散模型的视频生成技术解析与实践指南
人工智能·算法·音视频
码上敲享录4 小时前
前端如何播放flv视频
前端·音视频
滴水之功4 小时前
C语言数据结构-链式栈
linux·c语言·数据结构
liulilittle4 小时前
Ubuntu 18.04 升级内核到 5.X(< 5.10)
linux·运维·服务器·ubuntu
老攀呀4 小时前
CentOS系统上挂载磁盘
linux·运维·centos