WINDOWS使用msys2编译ffmpeg(编译成功,无法使用)
Posted 柳鲲鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WINDOWS使用msys2编译ffmpeg(编译成功,无法使用)相关的知识,希望对你有一定的参考价值。
之前也编译成功过。就是编译过程与LINUX相差太大,很多库没有编译进去。于是又进行了一番搜索,发现是有可能象LINUX一样编译所有依赖库。
结果编译后,还是无法加载。我就纳闷了:这是怎么回事?
- 下载安装msys2
- 安装编译工具
打开MSYS2 MINGW64,输入以下命令:
pacman -Syu --noconfirm
pacman -Sy --noconfirm git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmark mingw-w64-x86_64-diffutils mingw-w64-x86_64-autotools mingw-w64-x86_64-gdb mingw-w64-x86_64-nasm mingw-w64-x86_64-yasm
pacman -S cmake
pacman -Syu
期间可能会退出,重新打开窗口,再次输入。
- 编译环境变量
#!/bin/bash
set -eo pipefail
export LOCAL_PATH=$(pwd)
export BUILD_PATH=$LOCAL_PATH/ffmpeg_build_msys2
export PKG_CONFIG_PATH=$BUILD_PATH/lib/pkgconfig
export LD_LIBRARY_PATH=$BUILD_PATH/lib
export CFLAGS=-I$BUILD_PATH/include
export CPPFLAGS=-I$BUILD_PATH/include
export LDFLAGS=-L$BUILD_PATH/lib
export PATH=$BUILD_PATH/bin:$PATH
export CHOST=x86_64
export HOST=x86_64-w64-mingw32
export BASH_PATH=/mingw64/bin
export CC=$BASH_PATH/gcc
export CXX=$BASH_PATH/g++
export AR=$BASH_PATH/ar
export RANLIB=$BASH_PATH/ranlib
export STRIP=$BASH_PATH/strip
# pacman -Syu --noconfirm
# pacman -Sy --noconfirm git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmark mingw-w64-x86_64-diffutils mingw-w64-x86_64-autotools mingw-w64-x86_64-gdb mingw-w64-x86_64-nasm mingw-w64-x86_64-yasm
# pacman -S cmake
# pacman -Syu
./build-ffmpeg-items.sh
- 编译
之后就可以使用LINUX编译脚本了,参考:
LINUX FFMPEG编译详细过程记录(最全)_柳鲲鹏的博客-CSDN博客
比如吾LINUX脚本是这样的:
#!/bin/bash
. ./lib-ffmpeg.sh
get_ffmpeg_lib_dir
CLEAN_FLAG=1
export PATH=$DEST_LIB_PATH/bin:$PATH
export PKG_CONFIG_PATH=$DEST_LIB_PATH/lib/pkgconfig
# rm -rf $DEST_DIR
for item in \\
fdk-aac-2.0.2.tar.gz \\
ffmpeg-4.4.1.tar.bz2 \\
fontconfig-2.13.94.tar.xz \\
freetype-2.11.1.tar.xz \\
fribidi-1.0.11.tar.gz \\
g729-master.zip \\
gperf-3.1.tar.gz \\
gsm-1.0.19.tar.gz \\
ilbc-master.zip \\
jpegsrc.v9d.tar.gz \\
lame-3.100.tar.gz \\
libass-0.15.2.tar.gz \\
libpng-1.6.37.tar.xz \\
libtool-2.4.6.tar.gz \\
libvpx-1.11.0.tar.gz \\
libxml2-2.9.12.tar.gz \\
libyuv-master.zip \\
nasm-2.15.05.tar.xz \\
ogg-1.3.5.tar.gz \\
openal-soft-1.21.1.tar.gz \\
opencore-amr-0.1.5.tar.gz \\
openh264-2.1.1.tar.gz \\
opus-1.3.1.tar.gz \\
SDL2-2.0.14.tar.gz \\
speexdsp-SpeexDSP-1.2.0.tar.gz \\
speex-Speex-1.2.0.tar.gz \\
theora-1.1.1.tar.gz \\
vo-amrwbenc-0.1.3.tar.gz \\
vorbis-1.3.7.tar.gz \\
which-2.21.tar.gz \\
x264-stable.tar.bz2 \\
x265-3.4.tar.gz \\
yasm-1.3.0.tar.gz \\
zlib-1.2.11.tar.gz
do
echo $item
tar_xf_ffmpeg_item $item
done
if [ ! -d $LINK_LIB_DIR ]; then
mkdir $LINK_LIB_DIR
fi
ROOT_DIR=`pwd`
for item in \\
libtool-2.4.6 \\
nasm-2.15.05 yasm-1.3.0 \\
which-2.21 \\
zlib-1.2.11 \\
libxml2-2.9.12 \\
fdk-aac-2.0.2 \\
freetype-2.11.1 fontconfig-2.13.94 \\
fribidi-1.0.11 \\
g729-master \\
gperf-3.1 \\
gsm-1.0-pl19 \\
ilbc-master \\
lame-3.100 \\
libass-0.15.2 \\
jpeg-9d libpng-1.6.37 \\
libvpx-1.11.0 \\
ogg-1.3.5 \\
openal-soft-1.21.1 \\
opencore-amr-0.1.5 \\
opus-1.3.1 \\
speexdsp-SpeexDSP-1.2.0 speex-Speex-1.2.0 \\
theora-1.1.1 \\
vo-amrwbenc-0.1.3 \\
vorbis-1.3.7 \\
libyuv-master \\
SDL2-2.0.14 \\
openh264-2.1.1 \\
x264-stable \\
x265-3.4 \\
ffmpeg-4.4.1
do
cd $ROOT_DIR
cp -rf $LINK_LIB_DIR $item/$LINK_LIB_DIR
build_ffmpeg_item $item
cd $ROOT_DIR
rm -rf $item/$LINK_LIB_DIR
cp $DEST_LIB_PATH/lib/* $LINK_LIB_DIR
done
以上是关于WINDOWS使用msys2编译ffmpeg(编译成功,无法使用)的主要内容,如果未能解决你的问题,请参考以下文章