前段时间,由于项目需要在windows平台编译ffmeg,于是去ffmpeg官网查询了一下http://trac.ffmpeg.org/wiki/CompilationGuide
在windows平台大概有四种编译方式:
- CompilationGuide/MinGW – MinGW Compilation Guide for compiling FFmpeg with Windows/MinGW/MSYS.
- CompilationGuide/CrossCompilingForWindows – Cross compiling for Windows is sometimes easier than using MSYS+MinGW.
- CompilationGuide/WinRT - Compiling FFmpeg for Windows Apps (Windows 10 and Windows 8.1)
- CompilationGuide/MSVC - Compiling FFmpeg using MSVC (see also the instructions on the reference web page)
其中第一种和第二种,本质都是利用Mingw-w64 - GCC作为编译器来编译,最后一种使用微软MSVC编译。Mingw-w64 - GCC是一套将GCC和GNU Binutils移植到Windows平台的编译工具集,但是本身FFmpeg是支持MSVC编译的,所以个人感觉选择MSVC编译好点。下面我们主要来说如何利用MSVC来编译FFmpeg。
由于官网的MSVC编译方式比较复杂以及墙的限制,结合网上文章,整理了一套简单方便的编译方法。
1.下载安装msys2
官网链接http://www.msys2.org/,下载msys2-x86_64开头的这个exe文件,然后安装。
2.给 MSYS2 添加中科大的源,安装必要的命令行工具
修改msys64\etc\pacman.d\mirrorlist.msys,修改完成之后如下:
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
Server = http://repo.msys2.org/msys/$arch
Server = http://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch
Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/
运行pacman -S make gcc diffutils yasm pkg-config确认下载安装成功。
3.配置编译环境
mys2安装目录下的msys2_shell.cmd这个文件,将里面的
rem set MSYS2_PATH_TYPE=inherit这句更改成set MSYS2_PATH_TYPE=inherit然后保存。
点击电脑右下角开始菜单,点击“Visual Studio 201x-> VS201x x86 本机工具命令提示符(vs201x x86 Native Tools Command Prompt)”,(这里决定编译器的配置,x86编译出来的库是32位,x64编译出来的是64位的)
会弹出命令行窗口,输入并执行命令"安装目录\mys64\mys2_shell.cmd",例如 本机msys2安装在C盘根目录,则输入C:\msys64\msys2_shell.cmd并执行,如下图所示:
之后会运行msys2
4.编译ffmpeg
在msys2里切换到 FFmepg根目录下,根据自己的需求configure和make即可。