管水芸
2025-6-22 11:09:43
AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10、Mozilla Daala以及Cisco Thor三款开源项目的成果。据说在实际测试中,AV1标准比H.265(HEVC)的压缩率提升了大约27%。由于AV1具有性能优势,并且还是免费授权,因此各大流媒体平台更倾向使用AV1而非HEVC标准。 AV1如此炙手可热,以致它的编解码器如雨后春笋,单单FFmpeg支持的AV1编解码器,就有libaom、libdav1d、libsvtav1、librav1e四种。接下来以微软的视窗系统为例,介绍如何在Windows环境给FFmpeg集成AV1解码器libdav1d,具体的操作步骤说明如下:
一、配置libdav1d
libdav1d是一款AV1的解码器,只负责解码,不负责编码。它的源码托管页面在https://code.videolan.org/videolan/dav1d/,最新版本是2025年1月发布的dav1d-1.5.1,该版本的源码包下载地址是https://code.videolan.org/videolan/dav1d/-/archive/1.5.1/dav1d-1.5.1.tar.gz。
libdav1d的配置步骤说明如下。
1、安装编译工具meson和ninja
meson和ninja是基于Python语言的编译工具,故需确保Windows系统已经安装了Python3。另外,还要按照《FFmpeg开发实战:从零基础到短视频上线》第一章的“1.3.2 安装依赖的Windows软件”给电脑安装Visual Studio 2022。
接着依次选择Windows开始菜单的“Visual Studio 2022”→“x64 Native Tools Command Prompt for VS 2022”,打开Visual Studio 2022的命令行界面,执行以下命令安装meson和ninja。pip3 install meson pip3 install ninja 复制代码 2、使用meson配置libdav1d
先下载最新的dav1d源码,解压下载后的源码包,再从Visual Studio 2022的命令行进入dav1d源码目录:然后运行下面命令生成dav1d的VS工程:meson setup build --buildtype=release --backend=vs 复制代码 配置完成后,dav1d源码目录下出现build目录,里面便是meson给dav1d生成的VS工程。
二、编译libdav1d
打开Visual Studio 2022,在欢迎页面单击右侧的“打开项目或解决方案”,在弹出的文件对话框中选择dav1d-1.5.1\build目录下的dav1d.sln。
打开dav1d工程后,依次选择顶部菜单:生成→生成→生成dav1d,Visual Studio就开始编译dav1d模块。编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。
此时可在dav1d-1.5.1\build\src目录下找到dav1d.lib和dav1d.dll,这两个文件就是编译生成的libdav1d库文件。
三、安装libdav1d
确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装libdav1d。
1、在msys64的/usr/local目录下新建libdav1d目录,并在该目录下创建lib子目录;
2、把dav1d工程中build\src目录下的dav1d.lib和dav1d.dll两个文件复制到第一步创建的lib目录;
3、在lib目录下创建pkgconfig子目录,并把dav1d工程的build\meson-private\dav1d.pc复制到pkgconfig目录;然后打开dav1d.pc,把开头一行改成下面这样。prefix=/usr/local/libdav1d 复制代码 4、把dav1d工程的include目录复制到msys64的/usr/local/libdav1d目录;
经过以上步骤操作后的libdav1d目录结构如下所示。/usr/local/libdav1d |--------------- lib | |----- dav1d.lib | |----- dav1d.dll | |----- pkgconfig | |----- dav1d.pc |--------------- include | |----- dav1d | |----- dav1d.h | |----- headers.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库,并且按照之前的文章安装了H.266的编码器libvvenc,然后执行下面命令配置FFmpeg的编译环境:cd ffmpeg-n7.1.1 export PKG_CONFIG_PATH=/usr/local/libdav1d/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-liblc3 --enable-librist --enable-libdav1d --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/libdav1d/lib/dav1d.dll /usr/local/ffmpeg/bin 复制代码 五、查看FFmpeg的安装结果
运行下面命令查看FFmpeg的安装版本:上面命令返回的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-liblc3 --enable-librist --enable-libdav1d --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-libdav1d”,说明FFmpeg已经启用了AV1解码器libdav1d。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
相关推荐