如何在 Windows 程序中包含 FFMpeg 进行开发?

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

我正在尝试遵循有关使用 FFMpeg 库从 C++ 视频中提取帧的教程(作者:Bartholomew)。

为了包含库,根据教程,建议使用 pkg-config 查找库并将它们放在一起,以便 CMake 可以包含它们。在视频中,他使用自制程序安装 ffmpeg,并且 pkg-config 能够以某种方式找到 ffmpeg 的头文件(libavcodec、libavformat、libavdevice ...)

问题是我不知道如何安装 ffmpeg 库以便 pkg-config 可以找到它们。

在Windows上,我尝试安装编译的Windows二进制文件,并且尝试使用chocolatey安装ffmpeg-full包。但是,我看不到这些头文件安装到哪里。

C:/ffmpeg/
中有一个ffmpeg文件夹,但是当我查看时,没有头文件或库,只有二进制文件。也许我需要克隆整个源项目,但是 pkg-config 应该如何找到它们呢?当我尝试编译时,我得到以下输出:

 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
 use the PKG_CONFIG_PATH environment variable, or
 specify extra search paths via 'search_paths'
 CMake Error at C:/Program Files/CMake/share/cmake-3.24/Modules/FindPkgConfig.cmake:607 (message):
 A required package was not found
 Call Stack (most recent call first):
 C:/Program Files/CMake/share/cmake-3.24/Modules/FindPkgConfig.cmake:829 (_pkg_check_modules_internal)
 lib/FFMpeg/CMakeLists.txt:5 (pkg_check_modules)
 Checking for module 'libavcodec'        <----- here
 Can't find libavcodec.pc in any of C:/Strawberry/c/lib/pkgconfig
 use the PKG_CONFIG_PATH environment variable, or
 specify extra search paths via 'search_paths'
 CMake Error at C:/Program Files/CMake/share/cmake-3.24/Modules/FindPkgConfig.cmake:607 (message):
 A required package was not found
 Call Stack (most recent call first):
 C:/Program Files/CMake/share/cmake-3.24/Modules/FindPkgConfig.cmake:829 (_pkg_check_modules_internal)
 lib/FFMpeg/CMakeLists.txt:5 (pkg_check_modules)

C:/Strawberry/c/lib/pkgconfig
的内容似乎是一大堆库,其中没有一个来自ffmpeg。

如果问题出在我的 CMakeLists 文件中,以下是子目录文件的内容:

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}
)

我做错了什么/不明白吗?

c++ windows cmake ffmpeg pkg-config
1个回答
0
投票

步骤1.从FFmpeg官方网站点击下载源代码:https://ffmpeg.org/download.html 将所有内容提取到新文件夹 C: fmpeg

第 2 步。如果您使用的是 Windows。安装MSYS2。按照 msys2 官方网站上的步骤进行操作:https://www.msys2.org/

第 3 步。安装 MSYS2 后,启动 MSYS2 终端并浏览到 c: fmpeg,然后运行命令来配置 make 和安装。

cd c:
cd ffmpeg
./configure
make
install

新的头文件都应该被构建,例如在 C: fmpeg\libavutil 下,只需链接 CMAKE 中的顶级文件夹 c: fmpeg 即可完成

© www.soinside.com 2019 - 2024. All rights reserved.