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

《FFmpeg开发实战:从零基础到短视频上线》该书的第八章介绍了如何在Windows环境给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。

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

一、配置VVEnc

先下载最新的vvenc源码,解压下载后的源码包,再打开cmake-gui程序(cmake-gui的安装说明见《FFmpeg开发实战:从零基础到短视频上线》第八章的"8.1.5 给FFmpeg集成x265")。cmake-gui窗口界面的source code栏填vvenc的源码目录,where to build栏填vvenc源码下的build目录,接着单击窗口左下方的Configure按钮,配置完成的窗口界面如下图所示。

注意勾选窗口中间的BUILD_SHARED_LIBS选项,表示需要编译共享库也就是dll动态链接文件。然后单击窗口左下方的Generate按钮,生成完毕的窗口界面如下图所示。

接着单击窗口下方的Open Project按钮,让Visual Studio 2022打开已生成的vvenc工程。

二、编译VVEnc

Visual Studio 2022打开之后,依次选择顶部菜单:生成→配置管理器,在打开的配置管理器窗口上,找到左上角的"活动解决方案配置"下拉框,把Debug模式改为Release模式如下图所示,再单击窗口右下角的关闭按钮。

依次选择顶部菜单:生成→生成→生成vvenc,Visual Studio就开始编译vvenc模块。编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。

此时可在vvenc源码目录下找到bin和lib等目录,这些就是编译生成的可执行程序文件目录和库文件目录。

三、安装VVEnc

确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章"1.3 Windows系统安装FFmpeg"的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装vvenc。

1、在msys64的/usr/local目录下新建vvenc目录,并在该目录下创建lib子目录;

2、把vvenc工程中lib\release-shared目录下的vvenc.lib和bin\release-shared目录下的vvenc.dll两个文件复制到第一步创建的lib目录;

3、在lib目录下创建pkgconfig子目录,并把vvenc工程的build\pkgconfig\libvvenc.pc复制到pkgconfig目录;然后打开libvvenc.pc,把开头四行改成下面这样。

复制代码
prefix=/usr/local/vvenc
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

4、把vvenc工程的include\vvenc目录复制到msys64的/usr/local/vvenc/include目录,把vvenc工程的build\vvenc目录也复制到msys64的/usr/local/vvenc/include目录;

经过以上步骤操作后的vvenc目录结构如下所示。

复制代码
/usr/local/vvenc
 |--------------- lib
 |                 |----- vvenc.lib
 |                 |----- vvenc.dll
 |                 |----- pkgconfig
 |                           |----- libvvenc.pc
 |--------------- include
 |                 |----- vvenc
 |                           |----- version.h
 |                           |----- vvenc.h
 |                           |----- vvencCfg.h
 |                           |----- vvencDecl.h

四、编译安装FFmpeg

先下载最新的FFmpeg源码(版本号需大于等于7.1),再把FFmpeg源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:

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

确保MSYS环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第八章的"8.1.1 给FFmpeg集成x264"和"8.1.5 给FFmpeg集成x265"安装了H.264的编码器libx264和H.265的编码器libx265,也按照该书第十章的"10.1.1 FFmpeg集成SDL"安装了Windows系统的SDL2库,然后执行下面命令配置FFmpeg的编译环境:

复制代码
cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/vvenc/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32

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

复制代码
make
make install
cp /usr/local/vvenc/lib/vvenc.dll /usr/local/ffmpeg/bin

五、查看FFmpeg的安装结果

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

复制代码
ffmpeg -version

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

复制代码
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
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开发实战:从零基础到短视频上线》一书。

相关推荐
道亦无名8 小时前
音频数据特征值提取 方法和步骤
android·音视频
西***634711 小时前
声画合一 智控全场 —— 高清数字会议系统重构现代会议新生态
音视频·会议系统
REDcker12 小时前
RTSP 直播技术详解
linux·服务器·网络·音视频·实时音视频·直播·rtsp
微尘hjx12 小时前
【Gstreamer 应用程序开发手册 01】关于GSTREAMER
linux·音视频·媒体
石去皿13 小时前
轻量级 Web 应用 —— 把一堆图片按指定频率直接拼成视频,零特效、零依赖、零命令行
前端·音视频
runner365.git13 小时前
做一个基于ffmpeg的AI Agent智能体
人工智能·ffmpeg·大模型
进击的小头14 小时前
FIR滤波器实战:音频信号降噪
c语言·python·算法·音视频
Black蜡笔小新15 小时前
终结“监控盲区”:EasyGBS视频质量诊断技术多场景应用设计
人工智能·音视频·视频质量诊断
彷徨而立16 小时前
【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
ffmpeg
liliangcsdn18 小时前
视频嵌入表示生成方案的探索
数据库·人工智能·音视频