【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: ...
随机推荐
- Android 在线SDK更新 和谐被墙解决
Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: Connect ...
- 复杂 XML 的 序列化 反序列化
已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象. <?xml version="1.0" encoding="utf-8" ...
- Java 7 中的Switch 谈 Java版本更新和反编译知识
Java 7 中的Switch 谈 Java版本更新和反编译知识 学习编程,享受生活,大家好,我是追寻梦的飞飞.今天主要讲述的是Java7中的更新Switch实现内部原理和JAD反编 ...
- SDWebImage清除图片缓存
背景: 使用 SDWebImage 库,由于内存中一直缓存着加载的图片,而导致内存过高(我们无法手动管理内存),弹出内存警告而导致程序很卡或者直接crash掉. 我的解决方法: 在AppDelegat ...
- java虚拟机内存区域的划分以及作用详解
序言 为什么有时候学着学着会突然之间觉得一切度是那么无趣,男的每个月也有那么几天难道?哈哈,不然是什么,我还是要坚持,可以做少一点,但是不能什么度不做.总会过去的,加油 --WH 一.运行时数据区 什 ...
- HashSet源码详解
序言 在写了HashMap文章后,隔了几天才继续这一系列的文章,因为要学的东西实在是太多了,写一篇要花费的时间很多,所以导致隔了几天才来写.不过希望自己坚持下去.终有一天会拨开云雾见青天的.学Hash ...
- JAVA设计模式《二》
上一篇为大家介绍了一下设计模式中的责任链模式,本篇为大家介绍一下关于设计模式中的单例模式与模板方法模式.单例模式的作用在于,保证应用中某个实例有且只有一个,单例模式又被分为:饱汉模式与饿汉模式,两者的 ...
- vs xamarin android 监听返回键退出程序
public override bool OnKeyDown([GeneratedEnum]Keycode keyCode, KeyEvent e) { if (keyCode == Keycode. ...
- Android之Notification介绍
Notification就是在桌面的状态通知栏.这主要涉及三个主要类: Notification:设置通知的各个属性. NotificationManager:负责发送通知和取消通知 Notifica ...
- 使用Python将HTML转成PDF
主要使用的是wkhtmltopdf的Python封装--pdfkit 安装 1. Install python-pdfkit: $ pip install pdfkit 2. Install wkht ...