我想在我的程序中使用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
型
1条答案
按热度按时间8i9zcol21#
对于有同样问题的人:
我看了一下Linux和macos包的文件夹结构,它们包括所有的库。包含在主下载或任何包管理器中的Windows版本不包含这些库。
如果你在Windows上,你会想要从here(BtbN FFmpeg Builds)构建并获得完整版本。
现在我所要做的就是让它与pkg-config一起工作。