如何安装 FFmpeg 以便 pkg-config 可以找到它?

问题描述 投票:0回答:2

我想在我的程序中使用 ffmpeg 库。它们是 libavformat 和 libavcodec。为了链接它们,我正在尝试使用 pkg-config。

我无法让 pkg-config 找到这些库。

当我跑步时

 pkg-config --modversion libavcodec
我明白了
Can't find libavcodec.pc in any of C:/Strawberry/c/lib/pkgconfig

这应该意味着我没有安装 ffmpeg。

但是,我确实安装了ffmpeg。 我使用的是 Windows,因此我使用 Chocolatey 包管理器安装了 ffmpeg。这似乎只给了我 ffmpeg 程序,而不是它的库。

在 MacOS 上,只需使用 homebrew 安装 ffmpeg 即可安装所有正确的文件。

Windows 上有区别吗?如何获取开发包?

更多信息:

我使用 CMake-js 作为节点插件来编译它。这是我的 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?

-- 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
c++ c ffmpeg libavcodec pkg-config
2个回答
0
投票

对于有同样问题的人:

我查看了 linux 和 macos 软件包的文件夹结构,它们包含所有库。主下载或任何包管理器中包含的 Windows 版本不包含这些库。

如果您使用的是 Windows,您将需要从 here(BtbN FFmpeg Builds)进行构建并获取完整版本。

现在我要做的就是让它与 pkg-config 一起工作。


0
投票

Cmake 会查找那些

*.pc
文件,例如
libavcodec.pc
中的
C:/Strawberry/c/lib/pkgconfig/
。在
cmake
参数中构建任何这些库时,您需要在任何
**PKG_CONFIG_PATH**
或任何自动配置命令到
pkg_check_modules
变量中指定此路径。

你可以这样做:

PKG_CONFIG_PATH=C:/Strawberry/c/lib/pkgconfig  cmake .. 

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.