Windows で libvpx を有効にして ffmpeg をコンパイルすることに関して、いくつか必要です。ここに私が従った手順と私が得たエラーがあります
- Windowsにmsys2をインストールし、必要なパッケージ(git、pkg-config、gccコンパイラなど)をインストールしました
- 「https://github.com/webmproject/libvpx.git」から libvpx を複製し、vs15 ソリューションを作成しました (コマンド: ./configure --disable-vp8 --disable-vp9-encoder --target=x86_64-win64-vs15 )
- vpx.sln を開き、vpxmd.lib を正常にコンパイルしました (vpx.pc ファイルを作成し、インクルードとライブラリを適切な場所に保持しました)。
- https://github.com/FFmpeg/FFmpeg.gitからffmpeg を複製し、msys2 からビルドしてみました (コマンド: ./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
リンク: 警告 LNK4044: 認識されないオプション '/IC:/msys64/usr/local/include'; 無視された lib.obj(vp8_vp8_dx_iface.obj) : MSIL .netmodule または /GL でコンパイルされたモジュールが見つかりました。/LTCG とのリンクを再開します。/LTCG をリンク コマンド ラインに追加して、リンカーのパフォーマンスを向上させます。
リンク: 警告 LNK4044: 認識されないオプション '/IC:/msys64/usr/local/include'; 無視された
リンク: 警告 LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合します。use /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 つの未解決の外部
--extra-ldflags="-L/home/usr/local/lib" を使用すると、msys2 は C:/msys2/ にインストールされ、/home/ は C/msys2/home に対応し、リンカーはそれを /LC として扱います。 /msys2/usr/local/lib であるため、失敗します。
ステップバイステップのガイドは、ここで非常に高く評価されます