【FFmpeg】Windows下64位ffmpeg编译
本文主要记录在64位Windows 7下,编译64位ffmpeg的过程。
1.资源准备
(1). MSYS http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/
(2). MinGW-w64 http://www.drangon.org/mingw/
(3). SDL http://www.libsdl.org/download-1.2.php
(4). x264 http://www.videolan.org/developers/x264.html
(5). FFmpeg http://www.ffmpeg.org/download.html
MinGW-w64中已经包含Yasm,因此不需要额外准备Yasm。
2.软件安装
(1). MinGW+Msys安装
下载MSYS,解压到E:/ffmpeg64/msys目录。
下载MinGW-w64,解到E:/ffmpeg64/msys/mingw64目录。
启动msys.bat,打开类似于Linux的终端,并导入mingw64的环境变量。
echo 'export PATH=.:/local/bin:/mingw64/bin:/bin' > .profile
source .profile
(2). SDL安装
下载SDL1.2.14,解压到E:/ffmpeg64/SDL-1.2.14目录。
进入SDL-1.2.14目录,依次执行:
./configure --host=x86_64-w64-mingw32
make
make install
编译过程中,出现如下错误:

查看SDL_dx5video.c源代码,如下图所示,可以看出启用预定义NONAMELESSUNION,则会引用u1、u2的结构,出现上述错误。
解决方法是去除预定义NONAMELESSUNION,具体代码修改参考:http://hg.libsdl.org/SDL/rev/eada7e321df6

另一种简便的解决方法是更换SDL库,换成SDL-1.2.15或SDL-2.0.3。由于ffplay.c主要是利用SDL-1.2的接口实现,若使用SDL-2.0.3,则需要修改ffplay.c的源代码,因此,本文利用SDL-1.2.15重新编译,生成SDL库,安装过程和安装SDL-1.2.14一样。
完成编译过程,但在安装(make install)出现如下错误,提示“系统找不到指定的文件”,但是/bin/install和sdl-config都是存在。

查询相关资料后,发现出错的原因可能是终端在解释路径出错,如:http://mingw-users.1079350.n2.nabble.com/Problem-with-ranlib-while-running-make-install-for-SDL-td3282130.html。当MinGW+Msys和Cygmin同时存在时,会出现路径冲突的问题,在Cygmin中,根目录"/"被解释为当前目录的根目录,即”E:/",Cygmin会将"/bin/install"解释为"E:/install",因而出现“系统找不到指定的文件”的错误。
解决方法:修改Makefile文件,重新设置install的路径。

(3). x264安装
下载x264,解压到E:/ffmpeg64/x264目录下。
进入x264目录,依次执行:
./configure --host=x86_64-w64-mingw32 --enable-shared
make
make install
(4). FFmpeg安装
下载FFmpeg1.2,解压到E:/ffmpeg64/ffmpeg1.2
进入ffmpeg目录,依次执行:
./configure --enable-gpl --enable-libx264 --enable-shared --enable-static --arch=x86_64 --extra-cflags='-I/local/include -I/local/cross-tools/i386-mingw32/include/SDL' --extra-ldflags='-L/local/lib -L/local/cross-tools/i386-mingw32/lib'
make
make install
--extra-cflags用于指定头文件路径,--extrac-ldflags用于指定库文件路径。
注意:一定要指定SDL库和x264库的头文件和库文件路径。
(5). 验证安装
验证生成ffmpeg工具是否可执行,利用ffplay播放视频文件,查看是否可以正常播放。

验证生成的动态库和可执行程序是否是64位,利用dumpbin查看动态库和可执行程序的属性信息。

【FFmpeg】Windows下64位ffmpeg编译的更多相关文章
- Windows下64位Apache+PHP+MySQL配置
软件下载 目前,Apache和PHP均未出现官方的64位版本. Apache 64位: http://files.cnblogs.com/liangjie/httpd-2.2.19-win64.rar ...
- Windows下64位Apache服务器的安装
转自:http://www.blogjava.net/greatyuqing/archive/2013/02/13/395308.html 首先需要说明的是,Apaceh服务器没有官方的64位版本,只 ...
- windows下64位python的安装及机器学习相关包的安装(实用)
开通博客已久,想了好久决定写个基础的安装教程,望后人少走弯路,也借此希望跟大家多多交流.文中给出的链接默认是基于对python2.7的前提下的包. 1.首先下载64位Python包,进行安装(默认py ...
- windows 下编译64位ffmpeg
window下如何编译ffmpeg 前文已有介绍,前面介绍的都是如何编译32位的库,本文主要介绍window 下如何编译64位ffmpeg库. 一.搭建编译环境 1.下载 windows下编译64位F ...
- ffmpeg windows下编译ffmpeg
windows下编译ffmpeg 今天由于工作需求需重新编译ffmpeg,百度,goole了一大堆,看眼花缭乱的,但几乎都是三种方案,大部分都是直接转发,一字不漏,错误的缺文件的还是照转,可是问题都大 ...
- windows(64位)下使用curl安装
windows(64位)下使用curl安装 转自:https://blog.csdn.net/wkj001/article/details/54889907 2017年02月06日 09:46:47 ...
- 【VS开发】【miscellaneous】windows(64位)下使用curl命令
windows(64位)下使用curl命令 Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具 ...
- linux下hadoop2.6.1源码64位的编译
linux下hadoop2.6.1源码64位的编译 一. 前言 Apache官网上提供的hadoop本地库是32位的,如果我们的Linux服务器是64位的话,就会现问题.我们在64位服务器执行Hado ...
- Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境
Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境 下载PCL For windows 软件包 到这个网站下载PCL-All-In-One Installer: ...
随机推荐
- fir.im Weekly - 17 个提升 iOS 开发效率的必备工具
本期 fir.im Weekly 精选了一些iOS 开发工具和动画源码分享,希望每个开发者能专注效率.实用.灵感. iOS开发工具--如何优化ipa包大小 @iOS程序犭袁 推荐了关于"如 ...
- Wait Type:IO_COMPLETION
在等待 CXPACKET 完成的时间内,我查看 sys.dm_exec_requests ,发现Session的 Logical Read/Write, Physical Read 都没有变化.Wai ...
- Android入门(十八)服务
原文链接:http://www.orlion.ga/674/ 一.定义一个服务 创建一个项目ServiceDemo,然后在这个项目中新增一个名为 MyService的类,并让它继承自 Service, ...
- hibernate(九)多对多关联
原文链接:http://www.orlion.ml/29/ 一.多对多单向关联 假设一个老师教多个学生,一个学生被多个老师教,这就是典型的多对多关系 配置方式是在Teacher类的getStudent ...
- Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
地图资源可以通过Slicing Tool工具生成,教程如下: 1.打开Eclipse标准版4.3.2,以Java项目形式导入”slicingtool“项目,运行.(必须是eclipse4.3.2及以上 ...
- 【Java基础】泛型
Num1:请不要在新代码中使用原生类型 泛型类和接口统称为泛型.每种泛型定义一组参数化的类型,构成格式是:类或接口名称,接着用<>把对应于泛型形式类型的参数的实际参数列表括起来.比如:Li ...
- android调试输出
测试时不想直接debug总要调试输出一些字符串信息,那以下方法可选: 1.用Log.i(TAG, "onCreate");日志输出. 先要引用 import android.uti ...
- storm坑之---传递对象
继之前遇到的那个同步问题的坑之后(storm坑之---同步问题),最近对代码又做了调整和重构,并且又遇到了另一个storm开发中应该值得警惕的坑.接下来说说这个坑的大体情况. 在我的storm程序中, ...
- Java编程思想——初始化与清理
PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化 虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...
- Azure ARM (1) UI初探
<Windows Azure Platform 系列文章目录> 在笔者之前的文章中,我们使用国内由世纪互联运维的Azure China,管理界面地址是:https://manage.win ...