You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何安装FFmpeg使pkg-config能识别其开发库?

问题:Windows下通过pkg-config链接FFmpeg开发库失败

我想在程序中使用FFmpeg的libavformat、libavcodec等库,尝试用pkg-config链接,但pkg-config找不到这些库。执行pkg-config --modversion libavcodec时,返回:

Can't find libavcodec.pc in any of C:/Strawberry/c/lib/pkgconfig

我已经用Chocolatey在Windows上装了FFmpeg,但看起来只装了FFmpeg程序,没包含开发库。而MacOS上用Homebrew装FFmpeg会自动带所需的开发文件。

想问:Windows平台是不是有差异?怎么获取FFmpeg的开发包?

补充信息

我正在用CMake-js编译Node插件,我的CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 3.9)
project(FFMpeg)

find_package(PkgConfig REQUIRED)
pkg_check_modules(AVCODEC    REQUIRED    IMPORTED_TARGET libavcodec)
pkg_check_modules(AVFILTER   REQUIRED    IMPORTED_TARGET libavformat)
pkg_check_modules(AVDEVICE   REQUIRED    IMPORTED_TARGET libavdevice)
pkg_check_modules(AVUTIL     REQUIRED    IMPORTED_TARGET libavutil)
pkg_check_modules(SWRESAMPLE REQUIRED    IMPORTED_TARGET libswresample)
pkg_check_modules(SWSCALE    REQUIRED    IMPORTED_TARGET libswscale)

add_library(FFMpeg INTERFACE IMPORTED GLOBAL)

target_include_directories(
    FFmpeg INTERFACE
    ${AVCODEC_INCLUDE_DIRS}
    ${AVFILTER_INCLUDE_DIRS}
    ${AVDEVICE_INCLUDE_DIRS}
    ${AVUTIL_INCLUDE_DIRS}
    ${SWRESAMPLE_INCLUDE_DIRS}
    ${SWSCALE_INCLUDE_DIRS}
)

target_link_options(
    FFmpeg INTERFACE
    ${AVCODEC_LDFLAGS}
    ${AVFILTER_LDFLAGS}
    ${AVDEVICE_LDFLAGS}
    ${AVUTIL_LDFLAGS}
    ${SWRESAMPLE_LDFLAGS}
    ${SWSCALE_LDFLAGS}
)

编译输出显示pkg-config路径为C:/Strawberry/perl/bin/pkg-config.bat,内容如下:

-- Found PkgConfig: C:/Strawberry/perl/bin/pkg-config.bat (found version "0.26")
-- Checking for module 'libavcodec'
--   Can't find libavcodec.pc in any of C:/Strawberry/c/lib/pkgconfig

解决方案

Windows与MacOS的差异

是的,Windows平台的FFmpeg分发确实和MacOS存在差异:

  • Homebrew的FFmpeg包默认包含开发文件(头文件、.pc配置文件、静态/动态库),因为Homebrew更偏向开发者使用场景。
  • Chocolatey的默认FFmpeg包仅提供运行时程序,不包含开发所需的头文件和库文件,这是为了满足普通用户快速使用FFmpeg命令行工具的需求设计的。

获取Windows下FFmpeg开发包的方法

方法1:安装带开发库的Chocolatey包

Chocolatey提供了包含开发文件的FFmpeg包,执行以下命令安装:

choco install ffmpeg-full --package-parameters="/dev"

该包会完整包含头文件、.pc文件和库文件,安装后需确保PKG_CONFIG_PATH环境变量包含FFmpeg开发文件的pkgconfig目录(默认路径通常类似C:\ProgramData\chocolatey\lib\ffmpeg-full\tools\ffmpeg\lib\pkgconfig),pkg-config就能自动识别到库。

方法2:手动下载预编译开发包

从FFmpeg官方认可的预编译渠道下载带开发库的版本:

  1. 选择对应架构(x86/x64)的dev包(文件名通常带有dev标识)。
  2. 解压后,将包含.pc文件的pkgconfig目录路径添加到系统环境变量PKG_CONFIG_PATH中。
  3. 同时确保头文件所在的include目录和库文件所在的lib目录能被CMake或pkg-config识别。

方法3:自行编译FFmpeg

如果需要定制FFmpeg功能,可以自行编译:

  1. 下载FFmpeg源码,使用MSYS2或MinGW环境配置编译依赖。
  2. 编译时添加--enable-shared(生成动态库)和--enable-pkg-config(生成.pc文件)参数。
  3. 编译完成后,将生成的.pc目录路径添加到PKG_CONFIG_PATH环境变量中。

额外注意事项

  • 你的CMakeLists.txt存在一处错误:pkg_check_modules(AVFILTER REQUIRED IMPORTED_TARGET libavformat)中,目标库应该是libavfilter而非libavformat,修正后才能正确找到avfilter库。
  • 确保pkg-config的架构与FFmpeg开发包匹配(比如x64的pkg-config对应x64的FFmpeg开发库),避免因架构不匹配导致找不到库。

内容的提问来源于stack exchange,提问作者Project PowerPoint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:02:12