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开发实战:从零基础到短视频上线》一书。

相关推荐
AI码农小姐姐1 天前
AI漫剧推文短视频动态镜头实现:FFmpeg zoompan 与 Ken Burns 效果实践
人工智能·音视频·ai工具·ai漫剧
技灵AI1 天前
ChatGPT Images 2.5 深度解读:延迟减半、Sketch 草图与 Flare/Sunburst 双模型 API
人工智能·gpt·aigc·音视频·images2.5
林澈在路上1 天前
游戏场景背景音乐定制AI软件哪款好 2026对比推荐
大数据·人工智能·aigc·音视频
AI码农小姐姐1 天前
AI漫剧推文短视频自动化生产:从文本分镜到视频合成的工程实现
人工智能·音视频·ai工具·ai漫剧·知漫剧
benbenAItalk1 天前
真人克隆数字人的素材与成品视频生成:还原度和批量稳定性怎么控?
人工智能·科技·音视频
纽格立科技1 天前
纽格立参展IBC 2026——DRM端到端全链路方案,展位Hall 8 F71
车载系统·音视频·信息与通信·传媒
linux_cfan1 天前
videojs v10 源代码系列解读:10 · `DestroyMixin`:双重 rAF 延迟销毁
前端·javascript·音视频
云上先途2 天前
标签化服务适合哪些人?常见适用场景一次讲清
大数据·人工智能·算法·音视频
2601_962380762 天前
MoneyPrinterTurbo 本地部署与出片全流程:从环境配置到一键生成短视频
音视频
可乐鸡翅yeah_2 天前
HLS视频编码兼容性全解,H.264/H.265流媒体浏览器适配排错实战
音视频·firefox·safari·m3u8