【FFMPEG】Windows下将ffmpeg编译成lib和dll完整教程

安装msys2

msys2是一个交叉编译环境,允许在windows上模拟linux运行环境

再利用linux软件,编译出lib和dll

msys2的安装包,包括编译过程中用到的安装包,在下面有完整提供

lib和dll的使用方式

lib和dll都可以存储已经封装好了的代码,它们的区别在于

lib是静态库,在编译时使用,lib中的代码会被编译到exe当中

dll是动态库,在运行时使用,dll中的代码不参与编译,而是运行期间,到对应的dll文件当中去查找函数

使用静态链接方式时,只提供lib文件即可,这种情况下,lib文件包含完整代码,体积特别大

使用动态链接方式时,需要同时提供lib文件和dll文件

这种情况下,lib文件不存储代码,只存储dll文件中函数的调用地址,因此体积比较小,代码存于dll当中

编译时使用lib文件,而程序运行时,必须把对应的dll放在exe旁边,或者是系统目录中才行

ffmpeg的体积比较大,而且复用性比较强,基本都是通过动态链接的方式来使用的

安装和配置pacman

pacman是linux下的一个包管理器,方便从在线仓库自动安装和管理软件

打开msys2.exe,输入以下指令,全部选Y同意

pacman -Syu

安装完成后,窗口会自动退出,重新打开msys2.exe,再次输入以下指令

pacman -Syu

分别打开mirrorlist.clang32,mirrorlist.clang64,mirrorlist.msys三个文件

在配置文件的开头分别加入以下代码,将软件仓库的首选地址改为国内站点


	##  清华大学
	Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
	## 中科大
	Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686
	
	## 清华大学
	Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
	## 中科大
	Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64
	
	## 清华大学
	Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
	## 中科大
	Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch

安装依赖包

打开msys2.exe,输入以下指令,安装依赖

pacman -S make
pacman -S diffutils
pacman -S yasm
pacman -S nasm
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gtk3
pacman -S mingw-w64-i686-gtk3
pacman -S git

下载pkg-config

pkg-config是一个软件包配置管理工具,通过它可以记录软件包的版本和安装路径

软件下载可以通过wget指令来进行

wget下载的文件,会被保存到msys2/home/用户名下,再手动解压即可

打开msys2.exe,执行以下指令

wget https://pkg-config.freedesktop.org/releases/pkg-config-0.23.tar.gz

将压缩包中的pkg-config-0.23目录解压到msys2/home下

将pkg-config/win32/bin/pkg-config.exe拷贝到msys2/mingw32/bin下

将pkg-config/win64/bin/pkg-config.exe拷贝到msys2/mingw64/bin下

下载ffmpeg

打开msys2.exe,执行以下指令

wget http://www.ffmpeg.org/releases/ffmpeg-4.3.5.tar.gz

将压缩包中的ffmpeg-4.3.5目录解压到msys2/home下

下载x264

打开msys2.exe,执行以下指令

wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2

将压缩包中的x264-master目录解压到msys2/home下

下载amf

打开msys2.exe,执行以下指令

wget https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/1.4.16.1.tar.gz

将压缩包中的AMF-1.4.16.1目录解压到msys2/home下

手动创建msys2/usr/local/include/AMF目录,再打开msys2.exe,执行以下指令

cp -r /home/AMF-1.4.16.1/amf/public/include/* /usr/local/include/AMF

安装ffnvcodec

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make & make install

编译64位dll

这里以64位为例,32位同理,只不过改用mingw32程序,将脚本中的64改成32就行了

打开msys2/mingw64.exe,输入以下指令编译x264


	cd /home/x264-master/
	
	./configure \
	--prefix=/mingw64 \
	--enable-static \
	--host=msys \
	--disable-cli
	
	make clean
	make -j4
	make install

打开msys2/home/ffmpeg-4.3.5目录,新建build.sh文件,输入以下脚本


	#!/bin/bash
	PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
	PREFIX="./bin-$1"
	echo "Install dir: $PREFIX"
	./configure \
	--prefix=$PREFIX \
	--extra-ldsoflags="-static-libgcc" \
	--extra-cflags="-I/usr/local/include" \
	--extra-ldflags="-L/usr/local/lib" \
	--disable-iconv \
	--disable-doc \
	--disable-debug \
	--disable-avdevice \
	--disable-indevs \
	--disable-outdevs \
	--disable-postproc \
	--disable-ffplay \
	--disable-ffprobe \
	--disable-encoders \
	--disable-decoders \
	--enable-small \
	--enable-shared \
	--enable-ffmpeg \
	--enable-version3 \
	--enable-nonfree \
	--enable-w32threads \
	--enable-avcodec \
	--enable-avformat \
	--enable-swresample \
	--enable-swscale \
	--enable-avfilter \
	--enable-gpl \
	--enable-amf \
	--enable-nvenc \
	--enable-x86asm \
	--enable-libx264 \
	--enable-encoder=flv \
	--enable-encoder=h264_nvenc \
	--enable-encoder=h264_amf \
	--enable-encoder=hevc_nvenc \
	--enable-encoder=hevc_amf \
	--enable-encoder=libx264 \
	--enable-encoder=pcm_s16le \
	--enable-encoder=pcm_s24le \
	--enable-encoder=aac \
	--enable-encoder=ac3 \
	--enable-encoder=dca \
	--enable-encoder=opus \
	--enable-encoder=vorbis \
	--enable-encoder=srt \
	--enable-encoder=ass \
	--enable-encoder=subrip \
	--enable-encoder=mjpeg \
	--enable-encoder=gif \
	--enable-decoder=mpeg4 \
	--enable-decoder=flv \
	--enable-decoder=h264 \
	--enable-decoder=hevc \
	--enable-decoder=vp9 \
	--enable-decoder=h264_cuvid \
	--enable-decoder=hevc_cuvid \
	--enable-decoder=vp9_cuvid \
	--enable-decoder=opus \
	--enable-decoder=vorbis \
	--enable-decoder=aac \
	--enable-decoder=ac3 \
	--enable-decoder=eac3 \
	--enable-decoder=srt \
	--enable-decoder=ass \
	--enable-decoder=subrip \
	--enable-decoder=pcm_s16le \
	--enable-decoder=pcm_s24le \
	--enable-decoder=dca \
	--enable-decoder=mp3 \
	--enable-decoder=flac \
	--enable-decoder=ape \
	--enable-decoder=mjpeg
	
	make clean
	make -j4
	make install

打开msys2/mingw64.exe,输入以下指令编译ffmpeg


	cd /home/ffmpeg-4.3.5
	./build.sh 64

打开msys2/home/ffmpeg-4.3.5/bin-64/bin目录,可以看到编译成功的dll和lib文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值