风起磐石 發表於 2025-7-13 11:52:00

FFmpeg开发笔记(七十四)Windows给FFmpeg集成二维码图像的编解码器

<span data-cke-copybin-start="1"><span data-cke-copybin-start="1">​</span></span><span id="cke_bm_1109S">《FFmpeg开发实战:从零基础到短视频上线》一书的“7.1.1 &nbsp;添加图片标志”介绍了如何给视频添加图片标志,比如给视频画面添加一张二维码图像。不过前提条件是存在二维码图片,因为FFmpeg本身不支持根据文本生成二维码图像。幸而从FFmpeg 7.0开始,通过第三方的libqrencode和libquirc库实现了二维码的读写功能,这样处理视频中的二维码图像就方便多了。</span>
<p><span id="cke_bm_1109S"> 接下来以微软的视窗系统为例,介绍如何在Windows环境给FFmpeg集成二维码的编解码器libqrencode和libquirc,具体的操作步骤说明如下:</span></p>
<h1>一、配置libqrencode</h1>
<p>libqrencode是一个快速紧凑的二维码编码库,支持将文本、URL、电话号码等信息转换为二维码图像。libqrencode的源码托管页面在https://github.com/fukuchi/libqrencode,最新版为2020年9月推出的libqrencode-4.1.1,下载地址是https://codeload.github.com/fukuchi/libqrencode/tar.gz/refs/tags/v4.1.1。<br>
先下载最新的qrencode源码,再把qrencode源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="17" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22tar%20zxvf%20libqrencode-4.1.1.tar.gz%5Cncd%20libqrencode-4.1.1%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">tar zxvf libqrencode-4.1.1.tar.gz
cd libqrencode-4.1.1</code></pre>
</div>
<p>然后执行下面命令配置qrencode:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="16" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22mkdir%20build%5Cncd%20build%5Cncmake%20-DBUILD_SHARED_LIBS%3D1%20..%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 ..</code></pre>
</div>
<p>配置完毕,会在build目录下找到QRencode.sln,这就是qrencode的Visual Studio项目工程文件。</p>
<h1>二、编译libqrencode</h1>
<p>打开Visual Studio 2022,在欢迎页面单击右侧的“打开项目或解决方案”,在弹出的文件对话框中选择libqrencode-4.1.1\build目录下的QRencode.sln。<br>
打开qrencode工程后,依次选择顶部菜单:生成→配置管理器,在打开的配置管理器窗口上,找到左上角的“活动解决方案配置”下拉框,把Debug模式改为Release模式,再单击窗口右下角的关闭按钮。<br>
依次选择顶部菜单:生成→Build ALL_BUILD,Visual Studio就开始编译qrencode模块。编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。</p>
<p><span class="cke_widget_wrapper cke_widget_inline cke_widget_image cke_image_nocaption cke_widget_selected" data-cke-display-name="图像" data-cke-filter="off" data-cke-widget-id="15" data-cke-widget-wrapper="1"><span class="cke_reset cke_widget_drag_handler_container"><span class="cke_image_resizer" title="点击并拖拽以改变尺寸"><span class="cke_widget_edit_container" title="编辑图片"><img src="https://img2024.cnblogs.com/blog/729938/202507/729938-20250712125026427-851339775.png"></span></span></span></span></p>
<p>此时可在libqrencode-4.1.1\Release目录下找到qrencode.lib和qrencode.dll,这两个文件就是编译生成的libqrencode库文件。</p>
<h1>三、安装libqrencode</h1>
<p>确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 &nbsp;Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装libqrencode。<br>
1、在msys64的/usr/local目录下新建libqrencode目录,并在该目录下创建lib子目录;<br>
2、把qrencode工程中Release目录下的qrencode.lib和qrencode.dll两个文件复制到第一步创建的lib目录;<br>
3、在lib目录下创建pkgconfig子目录,并把qrencode工程的build\libqrencode.pc复制到pkgconfig目录;然后打开libqrencode.pc,把开头四行改成下面这样。</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="14" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22prefix%3D%2Fusr%2Flocal%2Flibqrencode%5Cnexec_prefix%3D%24%7Bprefix%7D%5Cnlibdir%3D%24%7Bexec_prefix%7D%2Flib%5Cnincludedir%3D%24%7Bprefix%7D%2Finclude%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">prefix=/usr/local/libqrencode
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include</code></pre>
</div>
<p>4、在msys64的/usr/local/libqrencode目录下创建include目录,然后把qrencode工程的qrencode.h文件复制到刚才创建的include目录;<br>
经过以上步骤操作后的libqrencode目录结构如下所示。</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="13" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22%2Fusr%2Flocal%2Flibqrencode%5Cn%C2%A0%7C---------------%20lib%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20qrencode.lib%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20qrencode.dll%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20pkgconfig%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20libqrencode.pc%5Cn%C2%A0%7C---------------%20include%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20qrencode.h%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">/usr/local/libqrencode
&nbsp;|--------------- lib
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- qrencode.lib
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- qrencode.dll
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- pkgconfig
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- libqrencode.pc
&nbsp;|--------------- include
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- qrencode.h</code></pre>
</div>
<h1>四、编译libquirc</h1>
<p>libquirc是一个从图像中提取并解析二维码的开源库,它的源码托管页面在https://github.com/dlbeer/quirc,最新版为2023年5月推出的quirc-1.2,下载地址是https://codeload.github.com/dlbeer/quirc/tar.gz/refs/tags/v1.2。<br>
先下载最新的quirc源码,再把quirc源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="12" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22tar%20zxvf%20quirc-1.2.tar.gz%5Cncd%20quirc-1.2%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">tar zxvf quirc-1.2.tar.gz
cd quirc-1.2</code></pre>
</div>
<p>接着打开quirc源码目录下的Makefile,找到下面这行:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="11" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22all%3A%20libquirc.so%20qrtest%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">all: libquirc.so qrtest</code></pre>
</div>
<p>在其后补充下面两行用于编译Windows环境需要的dll文件和lib文件:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="10" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22lib%3A%20%24(LIB_OBJ)%5Cn%C2%A0%C2%A0%20%C2%A0%24(CC)%20-shared%20-o%20quirc.dll%20%24(LIB_OBJ)%20%24(LDFLAGS)%20-lm%20-Wl%2C--out-implib%2Cquirc.lib%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">lib: $(LIB_OBJ)
&nbsp;&nbsp; &nbsp;$(CC) -shared -o quirc.dll $(LIB_OBJ) $(LDFLAGS) -lm -Wl,--out-implib,quirc.lib</code></pre>
</div>
<p>保存Makefile文件后执行以下命令编译quirc:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="9" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22make%20lib%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">make lib</code></pre>
</div>
<p>编译完毕会在quirc源码目录下生成quirc.dll和quirc.lib两个文件。</p>
<h1>五、安装libquirc</h1>
<p>确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 &nbsp;Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装libquirc。<br>
1、在msys64的/usr/local目录下新建libquirc目录,并在该目录下创建lib子目录;<br>
2、把quirc源码目录下的quirc.lib和quirc.dll两个文件复制到第一步创建的lib目录;<br>
3、在lib目录下创建pkgconfig子目录,并在pkgconfig目录下新建文件libquirc.pc,给该pc文件填入以下的配置内容。</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="8" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22prefix%3D%2Fusr%2Flocal%2Flibquirc%5Cnexec_prefix%3D%24%7Bprefix%7D%5Cnlibdir%3D%24%7Bexec_prefix%7D%2Flib%5Cnincludedir%3D%24%7Bprefix%7D%2Finclude%5Cn%5CnName%3A%20libquirc%5CnDescription%3A%20A%20QR%20Code%20extracting%20and%20decoding%20library%5CnVersion%3A%201.2%5CnLibs%3A%20-L%24%7Blibdir%7D%20-lquirc%5CnLibs.private%3A%C2%A0%5CnCflags%3A%20-I%24%7Bincludedir%7D%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">prefix=/usr/local/libquirc
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libquirc
Description: A QR Code extracting and decoding library
Version: 1.2
Libs: -L${libdir} -lquirc
Libs.private:&nbsp;
Cflags: -I${includedir}</code></pre>
</div>
<p>4、在msys64的/usr/local/libquirc目录下创建include目录,然后把quirc源码目录的lib\quirc.h文件复制到刚才创建的include目录;<br>
经过以上步骤操作后的libquirc目录结构如下所示。</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="7" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22%2Fusr%2Flocal%2Flibquirc%5Cn%C2%A0%7C---------------%20lib%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20quirc.lib%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20quirc.dll%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20pkgconfig%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20libquirc.pc%5Cn%C2%A0%7C---------------%20include%5Cn%C2%A0%7C%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%7C-----%20quirc.h%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">/usr/local/libquirc
&nbsp;|--------------- lib
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- quirc.lib
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- quirc.dll
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- pkgconfig
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- libquirc.pc
&nbsp;|--------------- include
&nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |----- quirc.h</code></pre>
</div>
<h1>六、编译安装FFmpeg</h1>
<p>先下载最新的FFmpeg源码(版本号需大于等于7.0),再把FFmpeg源码包复制到MSYS环境的/usr/local/src目录下。接着在MSYS控制台执行下面命令解压源码包:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="6" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22cd%20%2Fusr%2Flocal%2Fsrc%5Cnunzip%20ffmpeg-n7.1.1.zip%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">cd /usr/local/src
unzip ffmpeg-n7.1.1.zip</code></pre>
</div>
<p>确保MSYS环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书第八章的“8.1.1 &nbsp;给FFmpeg集成x264”和“8.1.5 &nbsp;给FFmpeg集成x265”安装了H.264的编码器libx264和H.265的编码器libx265,也按照该书第十章的“10.1.1 &nbsp;FFmpeg集成SDL”安装了Windows系统的SDL2库,并且按照之前的文章安装了H.266的编码器libvvenc,然后执行下面命令配置FFmpeg的编译环境:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="5" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22cd%20ffmpeg-n7.1.1%5Cnexport%20PKG_CONFIG_PATH%3D%2Fusr%2Flocal%2Flibqrencode%2Flib%2Fpkgconfig%3A%24PKG_CONFIG_PATH%5Cn.%2Fconfigure%20--prefix%3D%2Fusr%2Flocal%2Fffmpeg%20--arch%3Dx86_64%20--enable-shared%20--disable-static%20--disable-doc%20--enable-libx264%20--enable-libx265%20--enable-libvvenc%20--enable-liblc3%20--enable-librist%20--enable-libdav1d%20--enable-libaom%20--enable-libsvtav1%20--enable-libxevd%20--enable-libxeve%20--enable-libqrencode%20--enable-libquirc%20--enable-sdl2%20--enable-gpl%20--enable-nonfree%20--enable-iconv%20--enable-zlib%20--extra-cflags%3D'-I%2Fusr%2Flocal%2Flibquirc%2Finclude'%20--extra-ldflags%3D'-L%2Fusr%2Flocal%2Flibquirc%2Flib'%20--cross-prefix%3Dx86_64-w64-mingw32-%20--target-os%3Dmingw32%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/libqrencode/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-libaom --enable-libsvtav1 --enable-libxevd --enable-libxeve --enable-libqrencode --enable-libquirc --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --extra-cflags='-I/usr/local/libquirc/include' --extra-ldflags='-L/usr/local/libquirc/lib' --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32</code></pre>
</div>
<p>配置完毕执行下面命令编译和安装FFmpeg,编译完成的ffmpeg库将会安装到configure指定的/usr/local/ffmpeg目录。</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="4" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22make%5Cnmake%20install%5Cncp%20%2Fusr%2Flocal%2Flibqrencode%2Flib%2Fqrencode.dll%20%2Fusr%2Flocal%2Fffmpeg%2Fbin%5Cncp%20%2Fusr%2Flocal%2Flibquirc%2Flib%2Fquirc.dll%20%2Fusr%2Flocal%2Fffmpeg%2Fbin%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">make
make install
cp /usr/local/libqrencode/lib/qrencode.dll /usr/local/ffmpeg/bin
cp /usr/local/libquirc/lib/quirc.dll /usr/local/ffmpeg/bin</code></pre>
</div>
<h1>七、查看FFmpeg的安装结果</h1>
<p>运行下面命令查看FFmpeg的安装版本:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="3" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffmpeg%20-version%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">ffmpeg -version</code></pre>
</div>
<p>上面命令返回的FFmpeg版本信息如下:</p>
<div class="cke_widget_wrapper cke_widget_block cke_widget_codeSnippet cke_widget_selected" data-cke-display-name="代码段" data-cke-filter="off" data-cke-widget-id="2" data-cke-widget-wrapper="1">
<pre class="cke_widget_element" data-cke-widget-data="%7B%22code%22%3A%22ffmpeg%20version%207.1.1%20Copyright%20(c)%202000-2025%20the%20FFmpeg%20developers%5Cnbuilt%20with%20gcc%2012.2.0%20(Rev10%2C%20Built%20by%20MSYS2%20project)%5Cnconfiguration%3A%20--prefix%3D%2Fusr%2Flocal%2Fffmpeg%20--arch%3Dx86_64%20--enable-shared%20--disable-static%20--disable-doc%20--enable-libx264%20--enable-libx265%20--enable-libvvenc%20--enable-liblc3%20--enable-librist%20--enable-libdav1d%20--enable-libaom%20--enable-libsvtav1%20--enable-libxevd%20--enable-libxeve%20--enable-libqrencode%20--enable-libquirc%20--enable-sdl2%20--enable-gpl%20--enable-nonfree%20--enable-iconv%20--enable-zlib%20--extra-cflags%3D-I%2Fusr%2Flocal%2Flibquirc%2Finclude%20--extra-ldflags%3D-L%2Fusr%2Flocal%2Flibquirc%2Flib%20--cross-prefix%3Dx86_64-w64-mingw32-%20--target-os%3Dmingw32%5Cnlibavutil%20%C2%A0%20%C2%A0%20%C2%A059.%2039.100%20%2F%2059.%2039.100%5Cnlibavcodec%20%C2%A0%20%C2%A0%2061.%2019.101%20%2F%2061.%2019.101%5Cnlibavformat%20%C2%A0%20%C2%A061.%20%C2%A07.100%20%2F%2061.%20%C2%A07.100%5Cnlibavdevice%20%C2%A0%20%C2%A061.%20%C2%A03.100%20%2F%2061.%20%C2%A03.100%5Cnlibavfilter%20%C2%A0%20%C2%A010.%20%C2%A04.100%20%2F%2010.%20%C2%A04.100%5Cnlibswscale%20%C2%A0%20%C2%A0%20%C2%A08.%20%C2%A03.100%20%2F%20%C2%A08.%20%C2%A03.100%5Cnlibswresample%20%C2%A0%205.%20%C2%A03.100%20%2F%20%C2%A05.%20%C2%A03.100%5Cnlibpostproc%20%C2%A0%20%C2%A058.%20%C2%A03.100%20%2F%2058.%20%C2%A03.100%22%2C%22classes%22%3Anull%7D" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-widget="codeSnippet"><code class="hljs">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-libaom --enable-libsvtav1 --enable-libxevd --enable-libxeve --enable-libqrencode --enable-libquirc --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --extra-cflags=-I/usr/local/libquirc/include --extra-ldflags=-L/usr/local/libquirc/lib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
libavutil &nbsp; &nbsp; &nbsp;59. 39.100 / 59. 39.100
libavcodec &nbsp; &nbsp; 61. 19.101 / 61. 19.101
libavformat &nbsp; &nbsp;61. &nbsp;7.100 / 61. &nbsp;7.100
libavdevice &nbsp; &nbsp;61. &nbsp;3.100 / 61. &nbsp;3.100
libavfilter &nbsp; &nbsp;10. &nbsp;4.100 / 10. &nbsp;4.100
libswscale &nbsp; &nbsp; &nbsp;8. &nbsp;3.100 / &nbsp;8. &nbsp;3.100
libswresample &nbsp; 5. &nbsp;3.100 / &nbsp;5. &nbsp;3.100
libpostproc &nbsp; &nbsp;58. &nbsp;3.100 / 58. &nbsp;3.100</code></pre>
</div>
<p>根据以上返回的版本信息,可知已安装的FFmpeg版本号为7.1.1,同时configuration这行找到“--enable-libqrencode --enable-libquirc”,说明FFmpeg已经启用了二维码的编解码器libqrencode和libquirc。</p>
<p>更多详细的FFmpeg开发知识参见<span class="cke_widget_wrapper cke_widget_inline cke_widget_csdnlink cke_widget_selected" data-cke-display-name="a" data-cke-filter="off" data-cke-widget-id="1" data-cke-widget-wrapper="1">《FFmpeg开发实战:从零基础到短视频上线》一书。</span></p><br><br>
来源:https://www.cnblogs.com/aqi00/p/18980442
頁: [1]
查看完整版本: FFmpeg开发笔记(七十四)Windows给FFmpeg集成二维码图像的编解码器