zmwangx / rust-ffmpeg-sys

FFmpeg bindings for Rust.
125 stars 86 forks source link

error: could not find system library 'libavutil' required by the 'ffmpeg-sys-next' crate #62

Closed Tridu33 closed 11 months ago

Tridu33 commented 11 months ago

in this project Neothesia, it uses ffmpeg-sys-next v6.0.1 in MacBook. when i build this project in Windows 10 Msy2, i check that i had ffmpeg installed:

$ uname -a
MINGW64_NT-10.0-19045 LAPTOP-68ARNRIN 3.4.8.x86_64 2023-08-18 23:11 UTC x86_64 Msys
$ ffmpeg -version
ffmpeg version 5.1.2-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2
--enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable
-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --e
nable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --ena
ble-libspeex --enable-libvorbis --enable-librubberband
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

but when i cargo build it comes this error:

error: failed to run custom build command for `ffmpeg-sys-next v6.0.1`

Caused by:
  process didn't exit successfully: `D:\msys64\home\GitNeothesiaMsys2\target\release\build\ffmpeg-sys-next-c2b1a5f8f6e8bbe1\build-script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=LIBAVUTIL_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-pc-windows-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_pc_windows_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-pc-windows-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_pc_windows_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-pc-windows-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_pc_windows_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-pc-windows-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_pc_windows_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: `"pkg-config" "--libs" "--cflags" "libavutil"` did not exit successfully: exit code: 1
  error: could not find system library 'libavutil' required by the 'ffmpeg-sys-next' crate

  --- stderr
  Package libavutil was not found in the pkg-config search path.
  Perhaps you should add the directory containing `libavutil.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'libavutil' found

how can i install ffmpeg-sys-next v6.0.1 accurately?

Tridu33 commented 11 months ago
pacman -Sy mingw-w64-x86_64-pkg-config mingw-w64-x86_64-gcc mingw-w64-x86_64-ffmpeg

then check and now we can found libavutil.pc

$ pkg-config --list-all | grep libavutil
libavutil                                   libavutil - FFmpeg utility library
$ find /mingw64/lib/pkgconfig -type f -name libavutil.pc
/mingw64/lib/pkgconfig/libavutil.pc
$ echo $PKG_CONFIG_PATH
/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig

if not, install libavutil by source code and add in hand:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:{your_pkgconfig_path}