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

s5a0g9ez  于 2024-01-06  发布在  其他
关注(0)|答案(1)|浏览(98)

我想在我的程序中使用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上,只需使用自制软件安装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

8i9zcol2

8i9zcol21#

对于有同样问题的人:
我看了一下Linux和macos包的文件夹结构,它们包括所有的库。包含在主下载或任何包管理器中的Windows版本不包含这些库。
如果你在Windows上,你会想要从here(BtbN FFmpeg Builds)构建并获得完整版本。
现在我所要做的就是让它与pkg-config一起工作。

相关问题