ffmpeg 在windows 上编译
我在网上看到了一些资料,但是很多都不怎么全,而且 总会碰到这样或那样的问题,下面是我的一些经验,分享一下,当然也参考了大侠们的东西呵呵!
环境:
OS:windows
mingw +yasm+fmpeg-0.8.5.tar.gz+SDL-1.2.15.tar.gz - GPG signed
FFmpeg是在Linux平台下开发的,但它同样也可以在其它操作系统环境中编译运行,本文介绍的就是在windowsXP下编译FFmpeg。
一 准备环境:
1 下载 mingw 和 MSYS
去 http://sourceforge.net/projects/mingw/ 下载
A 点击“DownLoad mingw-get-inst-...exe”;
B 切换到页面:download? Check your browser's security bar, or try a direct link, or try another mirror. ;
C 点击“direct link”下载类似:mingw-get-inst-20110802.exe 的文件。
提示:msys此处就不用下载了,mingw-get-inst-20110802.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。
2 下载 yasm
ffmpeg编译里面的汇编代码需要yasm.exe
去官网:http://yasm.tortall.net/Download.html 下载
直接下载:Win32 .exe (for general use on 32-bit Windows)
文件名为:yasm-1.1.0-win32.exe
3 下载 ffmpeg
ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载
本人选择的是最新版本:ffmpeg-0.8.5.tar.gz
文件名为:ffmpeg-0.8.5.tar.gz
4 下载 SDL
SDL下载可以到:http://www.libsdl.org/download-1.2.php
选择:SDL-1.2.15.tar.gz - GPG signed
此版本需要自己编译,后面会解释为什么下载该版本,而不下载编译好的SDL-devel-1.2.14-mingw32.tar.gz (Mingw32)
5 下载 pthreadGC2.dll
pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需的一个DLL文件。这是一个无威胁文件。属于Open Source Software community project的文件。直接去baidu.com三搜索下载就可以了。
二 编译步骤
1 安装 mingw 和 msys
执行下载文件:mingw-get-inst-20110802.exe,
在第3步选择“Download latest repository catalogues”
选择安装路径:C:\MinGW(我直接采用默认路径,未做修改)
在“Select Components”步骤中选择:
√ C Compiler (默认且一定选择)
√ C++ Compiler
√ MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装)
√ MinGW Developer ToolKit
等待安装完成!(需要等待一定的时间,因为安装过程需要下载文件,可想而知,网速越快,安装越快)
安装完成后,在C:\MinGW目录下可以看到 msys 文件夹,msys也已经安装。
2 配置 msys.bat 批处理文件
为了方便VS200X以及VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib,当然,如果你没有这个需要,那么就可以省略以下处理,直接进入步骤3。
进入:C:\MinGW\msys\1.0\文件夹,使用UltraEdit打开msys.bat文件,在文件的最最前面加入如下一行:
call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
其中“D:\Program Files\Microsoft Visual Studio 10.0”为你机器上安装VS200X或VS2010的目录,我的电脑安装的是VS2010,并且安装在了D盘。文件修改后保存即可。
3 配置 yasm
为了减少配置环境变量的麻烦,本处直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系统目录下:C:\WINDOWS\system32。
4 解压ffmpeg 与 SDL
ffmpeg-0.8.5.tar.gz 的解压目录您可以直接选择,本人解压到:D:\ffmpeg中,解压后目录为:D:\ffmpeg\ffmpeg-0.8.5
SDL-1.2.14.tar.tar 解压到 D:\ffmpeg\ffmpeg-0.8.5 目录下,解压后的目录结构为:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14
5 编译SDL
双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,
切换到SDL目录:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,切换方法如下:
$ cd /d
$ cd ffmpeg
$ cd ffmpeg-0.8.5
$ cd SDL-1.2.14
再执行以下命令:
$ ./configure --prefix=/usr 回车等待…
$ Make 回车等待…
$ make install 回车等待…
编译完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夹下可以看到编译结果。
直接编译ffmpeg时,发现未生成ffplay.exe,
configure的时候提示信息如下:
SDL support no
所以需要开启SDL,本人头天接触这东西,不知道使用什么方法可以开启,但通过编译SDL后
SDL support yes
如果你的 SDL 已经是开启状态,你可以直接使用下载中提到的编译好的压缩包SDL-devel-1.2.14-mingw32.tar.gz,直接解压,并把解压包中的bin、include和lib文件夹中的文件复制到D:\ffmpeg\ffmpeg-0.8.5,与步骤六相同,只是不在从C:\MinGW\msys\1.0中复制。
6 拷贝编译结果:
C:\MinGW\msys\1.0 到D:\ffmpeg\ffmpeg-0.8.5下 覆盖
bin下的SDL.dll、sdl-config拷贝到 bin中
include下的 SDL文件夹拷贝到 include中
lib下的libSDL.a、libSDL.dll.a、libSDL.la和libSDLmain.a拷贝到 lib中
7 修改sdl-config配置文件
使用UltraEdit打开D:\ffmpeg\ffmpeg-0.8.5\bin下的 sdl-config文件
把 prefix=/usr 该成: prefix=c:/mingw
其中:c:/mingw 为 mingw的安装路径,请根据你的安装进行修改。
8 编译 ffmpeg
双击“C:\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,
切换到SDL目录:D:\ffmpeg\ffmpeg-0.8.5\SDL-1.2.14,
切换方法如下:
$ cd /d
$ cd ffmpeg
$ cd ffmpeg-0.8.5
如果你的“MinGW32”没有关闭,可以直接切换路径到:D:\ffmpeg\ffmpeg-0.8.5。
再执行以下命令:
$ ./configure --enable-shared --disable-static --enable-memalign-hack
请耐心等待一段时间
$ make
需要等待很长一段时间,等待编译结束。
为了汇总编译结果,请继续执行以下命令:
$ make install
等待完成,在C:\MinGW\msys\1.0\local中将会生成 bin、include、lib等文件夹,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和头文件等。
9 运行测试
直接双击运行”ffplay.exe”,如果提示没有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷贝到当前目录,也可放到系统目录C:\WINDOWS\system32中。
avcodec.lib avformat.lib swscale.lib avutil.lib
10 添加一些库
运行ffplay.exe,会发现缺少很多库,在下面的网站下载
http://code.google.com/p/aforge/source/detail?spec=svn1644&r=1644
参考:http://blog.csdn.net/q506616671/article/details/7080407
ffmpeg 在windows 上编译的更多相关文章
- FFMPEG在windows平台编译的详细过程,包括环境安装
下面开始: 由于FFMpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译.要想使用FFMpeg ...
- 在Mac/Linux/Windows上编译corefx遇到的问题及解决方法
这两天尝试在Mac/Linux/Windows三大平台上编译.NET跨平台三驾马车(coreclr/corefx/dnx)之一的corefx(.NET Core Framework),结果三个平台的编 ...
- [ZZ] 在windows上编译Mesa3d opengl32库
在windows上编译Mesa3d opengl32库 cheungmine http://blog.csdn.net/ubuntu64fan/article/details/8061475 Mesa ...
- 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl
利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...
- 在windows上编译wireshark源代码
终于在windows上成功编译了wireshark源代码,个中酸辛,都是泪..只能说要多试! windows上编译wireshark共用到三个东西:wireshark源代码.python.cygwin ...
- 在windows 上编译部署Rap2
在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...
- 在windows上编译MatConvNet
有个BT的要求,在windows上使用MatConvNet,并且需要支持GPU. 费了些力气,记录一下过程(暂不支持vl_imreadjpeg函数) 在这里下载MatConvNet,机器配置vs201 ...
- 如何在 Windows上编译Objective-C
Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...
- Windows 上编译 corefx 源码生成 Linux 上可用的 System.Data.SqlClient.dll
最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点. github 上签出 corefx 的源代码,运 ...
随机推荐
- [C++学习历程]中级部分 OpenGL第一个例子实现
作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/21488231 环境:VS2010 准备工作: 1.下载 ...
- iOS 图片裁剪与修改
最近做的项目中需要上传头像,发表内容的时候也要涉及到图片上传,我直接用的原图上传,但是由于公司网络差,原图太大,老是加载好久好久,所以需要把原图裁剪或者修改分辨率之后再上传,找了好久,做了很多尝试才解 ...
- Web Service进阶(二)如何用Apache TCPMon来截获SOAP消息
注:以下是关于TCPMon的一些使用常识,如果不需要或是已经熟悉就不用往下看了. 在WebService服务器和客户机之间会传递SOAP消息,有时我们需要得到这些消息以便调试,而Apache的TCPM ...
- python multiprocessing example
python multiprocessing example Server Code: #!/usr/bin/python #-*- coding: UTF-8 -*- # mpserver.py # ...
- Dynamics CRM2013 注释中的内容无法正常显示问题
CRM2013中在表单中插入注释,并把注释设置成默认选项卡后 打开一个已经挂了附件的表单,但却显示找不到记录 必须要再点击下注释,内容才会出来 查了半天不得其解,终于在ur1 for CRM2013 ...
- flume1.4.0 保存文件到hdfs错误调试
报错如下 解决方案:将FLUME_HOME/lib目录下的jar文件,替换成HADOOP_HOME/share/hadoop/common/lib下版本更新的jar文件
- 我眼中的Linux设备树(六 memory&chosen节点)
六 memory&chosen节点根节点那一节我们说过,最简单的设备树也必须包含cpus节点和memory节点.memory节点用来描述硬件内存布局的.如果有多块内存,既可以通过多个memor ...
- lua c函数注册器
lua与c的交互 关于lua和c的交互,主要有两个方面,一是lua调用c的函数,而另一个则是c调用lua函数.而这些都是通过lua stack来进行的. c调用lua 在c里面使用lua,主要是通过l ...
- H5学习之旅-H5的块标签的使用(9)
块元素的基本语法 1. Html块元素 ,块元素在开始时候通常以新行开始,比如h1,p,ul 2.内联元素,通常不会以新行开始,比如a,b,img 3.html的div元素,div也被称为块元素,其主 ...
- JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块
JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 ...