最近项目需要想整一下windows下面的FFmpeg编译,当然可以直接下载官方编译好的库,有个缺点就是官方的是默认的编译配置,所以如果我们想自定义配置ffmpeg的编译参数,还是得自己亲自来编译,官方提供三个版本的编译:
先来几个参考网站,
1、官方编译网站
编译需要的原料:
1、FFmpeg源码 —————– 官方下载
2、MSYS2(编译环境) ————-MSYS2官方下载
3、YASM ————————官方下载地址
4、gas-preprocessor ————下载地址
安装msys2
msys2类似于cygwin(可以在windows上配置linux环境)和mingw(git的bash环境),安装完成之后,先需要把安装目录下的msys2_shell.cmd
中注释掉的rem set MSYS2_PATH_TYPE=inherit
,改成set MSYS2_PATH_TYPE=inherit
,主要是将vs的环境继承给msys2
;接着打开msys2的shell,安装4个编译工具,
如果之前安装了cygwin,这里的安装可能会出现冲突问题,导致cygwin的bash窗口中没法使用一些命令,如:ls等等,一般会报错:
1234567 1 [main] ls (138392) D:\msys64\usr\bin\ls.exe: *** fatal error - cygheap base mismatch detected - 0x180305408/0x1802FE408.This problem is probably due to using incompatible versions of the cygwin DLL.Search for cygwin1.dll using the Windows Start->Find/Search facilityand delete all but the most recent version. The most recent version *should*reside in x:\cygwin\bin, where 'x' is the drive on which you haveinstalled the cygwin distribution. Rebooting is also suggested if youare unable to find another cygwin DLL.
这时候我们需要在我的电脑中改变一下环境变量,在Path中将D:\cygwin64\bin
提到D:\msys64\usr\bin
前面,没有的话可以先配置
替换yasm
将下载的yasm-**-win64.exe
改成yasm.exe
,替换msys安装目录x:\msys64\usr\bin\yasm.exe
,可以做个备份把原来的改成yasm.bak
安装gas-preprocessor
将下载的gas-preprocessor.pl放到msys2安装目录下面x:\msys64\usr\bin\gas-preprocessor.pl
从VS的命令窗口重新启动msys2的bash窗口
这一步没有把握正确,编译很容易出错,例如cl is unable to create an executable file.
正确的启动步骤是:先去打开VS的工具命令提示符,C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2015\Visual Studio Tools\Windows Desktop Command Prompts
,然后在命名窗口中使用命令符打开msys2的bash窗口,
我安装在D盘,依次执行命令如下:
在bash窗口中先检查,安装环境是否已经正确配置:
|
|
正确配置之后就可以进行编译了。
开始编译
编译ffmpeg,有两种方式,
微软官方Demo
可以按照微软官方的Demo教程来编译,先使用git下载,
下载完成之后,目录结构如下:
直接在bash窗口中进入,执行执行编译相应版本的命令就行了
手动编译
首先步骤是./configure
配置编译参数,可以参考微软Demo中的脚本FFmpegConfig.sh
,先进入下载的FFmepg源码目录,
比如编译Win10的x64版本,
编译完成之后,ffmpeg的编译库就在Build/Windows10/x64
目录下面,目录结构如下: