【问题标题】:compiling ffmpeg libs with libvpx enabled on windows在 Windows 上启用 libvpx 编译 ffmpeg 库
【发布时间】:2020-02-04 02:52:57
【问题描述】:

需要一些关于在 Windows 上启用 libvpx 编译 ffmpeg 的信息。这是我遵循的步骤和我得到的错误

  1. 在windows上安装了msys2并安装了所需的包(git、pkg-config、gcc编译器等)
  2. 从“https://github.com/webmproject/libvpx.git”克隆 libvpx 并创建了 vs15 解决方案(命令:./configure --disable-vp8 --disable-vp9-encoder --target=x86_64-win64-vs15)
  3. 打开 vpx.sln 并成功编译 vpxmd.lib(创建了一个 vpx.pc 文件并将包含和库保存在适当的位置)
  4. https://github.com/FFmpeg/FFmpeg.git 和 msys2 克隆了 ffmpeg,我尝试构建它(命令:./configure --enable-asm --enable-yasm --arch=x86_64 --target-os=win64 --disable-encoders - -disable-muxers --enable-libvpx --disable-doc --disable-ffplay --disable-ffprobe --disable-ffmpeg --enable-shared --disable-static --disable-bzlib --disable-libopenjpeg - -disable-iconv --disable-zlib --prefix=/d/Stadia/FFmpeg --toolchain=msvc --disable-debug)

ffmpeg 可以很好地构建一个库,但它不包括 libvpx。 config.log 如下:

./ffconf.NEscC1Fm/test.c(4): 警告 C4311: 'type cast': 指针 从 'vpx_codec_iface_t *(__cdecl *)(void)' 到 'long' 的截断

./compat/windows/mslink /usr/local/lib -nologo -I/usr/local/include -libpath:/usr/local/lib -out:./ffconf.NEscC1Fm/test.exe ./ffconf.NEscC1Fm/test.o vpx.lib

LINK:警告 LNK4044:无法识别的选项 '/IC:/msys64/usr/local/include';忽略 lib.obj(vp8_vp8_dx_iface.obj) : 发现 MSIL .netmodule 或使用 /GL 编译的模块;重启链接 与 /LTCG;将 /LTCG 添加到链接命令行以改进链接器 性能

LINK:警告 LNK4044:无法识别的选项 '/IC:/msys64/usr/local/include';忽略

LINK : 警告 LNK4098: defaultlib 'MSVCRT' 与使用冲突 其他库;使用 /NODEFAULTLIB:library lib.obj(vpx_mem_vpx_mem.obj) : 错误 LNK2001:未解析的外部符号 __imp_malloc lib.obj(vp8_decoder_threading.obj):错误 LNK2001:未解决 外部符号 __imp__beginthreadex lib.obj(vp8_decoder_decodeframe.obj):错误 LNK2001:未解决 外部符号 __imp_fopen ./ffconf.NEscC1Fm/test.exe:致命错误 LNK1120:3 个未解决的外部因素

我的msys2安装在C:/msys2/和/home/对应 C/msys2/home 如果我使用 --extra-ldflags="-L/home/usr/local/lib" ,链接器 将其视为 /LC:/msys2/usr/local/lib 并因此失败。

这里非常感谢您提供分步指南

【问题讨论】:

    标签: ffmpeg msys2 libvpx


    【解决方案1】:

    第一个问题是您编译的库名称为 vpxmd.lib,但 ffmpeg 尝试使用 vpx.lib
    另一个问题是来自 msvcrt 的未解析的外部符号。
    尝试更改 ffmpeg 的 configure 文件中的一些行:
    VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs $pthreads_extralibs"
    至:
    VPX_IMG_FMT_HIGHBITDEPTH" "-lvpxmd -lmsvcrtd $libm_extralibs $pthreads_extralibs"
    并将您的 vpxmd.lib 放到 ffmpeg 根目录中。

    【讨论】:

      猜你喜欢
      • 2014-11-23
      • 2012-06-15
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多