2010_3_1最新 完整 FFMPEG 编译详解
在网上看了很多编译详解,都很零散。经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴。
第一步:准备编译平台。
需要 一个 MinGW 和 一个 MSYS 安装包 以及 MSYS_DTK.
当前最新是版本:
MinGW5.1.6.exe [url=http://sourceforge.net/projects/mingw/files/]下载[/url]
msysDTK-1.0.1.exe [url=http://downloads.sourceforge.net/mingw/msysDTK-1.0.1.exe]下载[/url]
Msys1.0.11.exe [url=http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe]下载[/url]
按照以上顺序安装 :
建议:(可选)
把 MinGw5.1.6 安装到 F:/MinGw (为了路径简短起见)
把Msys1.0.11 安装到 F:/MinGw/Msys(为了方便起见)
(有些机器不会在/MinGw/Msys/etc中产生正确的fstab文件,因此确保
/MinGw/Msys/etc中具有一个fstab文件 内容为:F:/MinGw /minwg 前者为你的MinGw安装目录 后面对应MinGw目录)
第二步:准备编译工具
需要一些编译工具,以便能够编译需要的库。
1.二进制工具(xx.exe文件)
pr.exe (在coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 包的bin目录中)[url=http://sourceforge.net/projects/mingw/files /MSYS Base System/_obsolete/coreutils-5.97-MSYS-1.0.11-2/coreutils- 5.97-MSYS-1.0.11-snapshot.tar.bz2/download]下载[/url]
(ffmpeg中 configure执行需要用到)
复制到 MinGW/bin中
(注意:是MinGW目录中的bin)
SDL 工具 [url=http://www.libsdl.org/docs.php]下载[/url] (ffmpeg 需要用到)
在包中的四个目录:bin lib include share 一起复制到 MinGw 目录下
(bin 中包含 有 SDL.dll 和 sdl-config)
在sdl-config中修改 第一行为 prefix=/mingw
([url=http://www.ffmpeg.com.cn/index.php/Ffplay使用事例]参考[/url])
unzip.exe 工具 [url=unzip-5.51-1.exe][url=http://sourceforge.net/projects/gnuwin32 /files/unzip/]下载[/url][/url] (安装 libamrnb libamrwb 需要用到)
解压 unzip-xxx-bin.zip 后在bin 中复制 unzip.exe 到 MinGw/Msys/bin 中
(注意:是 Msys目录中的bin)
wget.exe 工具 [url=http://ftp.gnu.org/gnu/wget/]下载[/url] (安装 libamrnb libamrwb 需要用到)
解压后 在 bin 中拷贝 wget.exe 到 MinGw/Msys/bin 中
(注意:是 Msys目录中的bin)
git.exe 工具 下载(获取x264库需要用到)
安装:[url=http://msysgit.googlecode.com/files/Git-1.6.5.1-preview20091022.exe]Git-1.6.5.1-preview20091022.exe[/url]
2.源码安装包(需要编译安装的工具包)
autoconf [url=http://ftp.gnu.org/gnu/autoconf/]下载[/url]
automake [url=http://ftp.gnu.org/gnu/automake/]下载[/url]
libtool [url=http://ftp.gnu.org/gnu/libtool/]下载[/url]
yasm [url=http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz]下载[/url]
下载最新版 然后解压到 Msys目录中的home/Administrator 中
(说明:以后需要执行 'configure' 'make' 'make install' 命令来安装的xx.tag.gz包 都解压到Administrator里 以便控制台中方面路劲的输入)
包的安装:
举例安装 autoconf 包
在Msys命令行中:
cd autoconf 回车 (从 ~ 目录 进入 autoconf 目录)
configure 回车 (执行配置文件)
make 回车 (开始编译)
make install 回车 (安装)
安装 automake包: 动作同上,只是要进入 automake 目录.(cd automake)
第三步:准备一个线程库(不准备编译x264的可以跳过)
pthread包 [url=ftp://sources.redhat.com/pub/pthreads-win32/pthreads- w32-2-8-0-release.tar.gz]下载[/url] ([url=http://ffmpeg.arrozcru.org/wiki/index.php?title=Pthreads]参考[/url])
解压到 MinGw/Msys/home/Administrator的pthread中
在Msys命令行中:
cd pthread 回车
make GC 回车
然后在pthread中找到 pthreadGC.dll 拷贝到 MinGw/bin 和 MinGw/lib 中
...............找到 pthread.h 和 sched.h 拷贝到 MinGw/include 中
(注意有个Bug 打开sched.h line:152 和 line:154 的两个函数的参数类型pid_t 改成 int 这个Bug是自己遇到的,修改并不会影响任何功能,但并没有官方验证)
目前这里就配置好所有的编译环境了!
以下是支持要编译的编解码库:
//===== Mp3lame [url=http://sourceforge.net/projects/lame/files/lame/]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 lame
在Msys安装:
cd lame 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== faac 和 faad2 [url=http://www.audiocoding.com/downloads.html]下载[/url] (两个包)
faac 安装:(faac-1.28 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=368&k=bdbac83ed608d3697e25e985527c3b9c&t=1267424723&fid=11&sid=ab1ep/jU/kNhVRIt9st/5vPwWJxoQCf7uJGIj3A397qIkfc]faac-1.28.diff[/url] )
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faac
把补丁放到 faac 目录中
在Msys安装:
cd faac 回车
patch -p1 < faac-1.28.diff 回车
bootstrap 回车
configure --with-mp4v2 --enalbe-shared 回车
(不需要MP4 则第一个参数用--without-mp4v2 代替)
make 回车
make install 回车
faad 安装:(faad2-2.7 需要一个补丁 [url=http://bbs.chinavideo.org/attachment.php?aid=369&k=4624ab33cb734713942aafb25213926c&t=1267427156&fid=11&sid=3fa8T1Vt6ibnc+wFOLP4vp0CkKhIQj1NZ+Hpq3RhVaiUQPw]faad2-2.7.diff[/url] )
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 faad2
把补丁放到 faad2 目录中
在Msys安装:
cd faad2 回车
patch -p1 < faad2-2.7.diff 回车
(也可以手动修改,注释掉 faad2/frontend/main.c 中
line: 34 的 #define off_t __int64 )
bootstrap 回车
configure --with-mp4vip --enalbe-shared 回车
(第一个参数可选)
configure顺利完成之后
在libfaad/Makefile中修改:
将AM_CFLAGS = -iquote $(top_srcdir)/include
改成:AM_CFLAGS = -I $(top_srcdir)/include
(这个是一个Bug修正 以免出现:
cc1.exe: error: unrecognized command line option "-iquote")
make 回车
make install 回车
//===== amrnb 和 amrwb [url=http://www.penguin.cz/~utx/amr#download]下载[/url]
amrnb安装:
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrnb
在Msys安装:
cd amrnb 回车
configure --enalbe-shared 回车
make 回车
make install 回车
amrwb安装:
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 amrwb
在Msys安装:
cd amrwb 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== xvidcore [url=http://www.xvid.org/Downloads.43.0.html]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 xvid
在Msys安装:
cd xvid/build/generic 回车
configure --enalbe-shared 回车
make 回车
make install 回车
//===== H.264
下载x264库:
在Windows 的控制台中输入 :
C:/...> cd F:/mingw/msys/home/Administrator 回车
(切换路径到 Administrator目录)
F:/mingw/msys/home/Administrator > git clone git://git.videolan.org/vlc.git
这时x264包就会下载到mingw/msys/home/Administrator目录中
在Msys安装:
cd x264 回车
configure --enalbe-shared 回车
make 回车
make install 回车
(有个Bug,安装后 在mingw/msys/local/include/x264.h 中
line:209 中 修改 int i_bframe_pyramid; 为int b_bframe_pyramid; 保存)
//**************到这里 有一些常用的编解码库了 下面来编译FFMPEG
FFMPEG [url=http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2]下载[/url]
解压到 ~ 目录 (MinGw/Msys/home/Administrator)改名目录为 ffmpeg
(注意了,编译x264库 需要修改一下 ffmpeg的configure
把 line 1996 :中的 x264_encoder_open加上一个x264版本号,可以从F:/MinGw
/msys/local/bin中的libx264-xx.dll 得知,这里编译得到的是libx264-88.dll
所以 把 line 1996 :中的 x264_encoder_open 改为 x264_encoder_open_88,以解决
编译x264后,编译ffmpeg 提示 libx264 not found.)
在ffmpeg目录中 新建一个文本文件 改名为 cml (无扩展名)
编辑 cml :
configure /
[size=3]--enable-ffplay /
--enable-static /
--enable-memalign-hack /
[/size][size=3]--enable-gpl / [/size]
[size=3]--enable-libmp3lame /
--enable-libfaac /
--enable-libfaad /
--enable-libx264 /
[/size][size=3]--enable-nonfree / [/size][size=3]
--enable-libamr-nb /
--enable-libamr-wb / [/size]
[size=3]--extra-ldflags=-L/usr/local/lib /
--extra-cflags=-I/usr/local/include [/size]
保存.
在Msys中输入:
cml 回车
make 回车
make install 回车
大功告成! 不过xvid不能在ffmpeg编译中使用--enable-shared参数
不然会报错,你可以试试,如果可以,那就是我的机器问题! :-) 愉快
admin 发表于 2010-3-1 03:47 PM
非常完整,不错,谢谢分享!:victory:
lovesai 发表于 2010-3-19 10:29 AM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
请问这是在哪个平台上的编译?如果要应用到WIN32怎么编,编译后要能直接被VC调用的那种
wzyzb 发表于 2010-3-24 03:36 PM
给的链接好多东西都下不了
wzyzb 发表于 2010-3-24 04:46 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget 和SDL 都不知道怎么下载啊 老兄!!
wzyzb 发表于 2010-3-24 07:21 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b] wget下载解压没有/bin目录
wzyzb 发表于 2010-3-26 02:37 PM
[b] [url=http://bbs.chinavideo.org/redirect.php?goto=findpost&pid=30236&ptid=7837]1#[/url] [i]golocy[/i] [/b]
autoconf 编译提示perl is not found
mlinmxf 发表于 2010-3-26 07:23 PM
楼主把你的系统环境先介绍一下啊。你是在win平台下编的?linux下要怎么编呢?
gboystal 发表于 2010-3-27 09:16 AM
搞了一下午,终于编完了。。
jcooper 发表于 2010-4-12 04:38 PM
很好,楼主辛苦了,谢谢总结,其实编译ff这个东西熟悉了就容易多了,难点在于如何用VC在win32平台下编译以获得最高性能
xchinasl2008 发表于 2010-4-21 04:26 PM
为什么我的X264下不下来啊
czt151715 发表于 2010-4-21 09:57 PM
可以下的
地址是:git clone git://git.videolan.org/x264.git
hunter104 发表于 2010-5-28 01:01 PM
enalbe 应该是enable吧?
xshzh 发表于 2010-7-16 09:32 AM
在安装libtool的时候出现:
checking for non-GNU ld... no
configure: error: no acceptable ld found in $PATH
请问是咋回事?执行configure的时候。
谢谢
admin 发表于 2010-7-16 10:45 AM
没有找到“ld.exe”
xshzh 发表于 2010-7-16 11:23 AM
“ld.exe”哪里有下载,谢谢
tocute 发表于 2010-7-29 06:36 PM
請問在 win 7 中操作以上的動作
卻一直出現
Permission Denied
即使用了 chmod 777 結果也是一樣
請問我該如何解決了 謝謝
admin 发表于 2010-7-29 07:24 PM
[quote]Permission Denied[/quote] 这肯定是权限问题了,建议你关闭UAC试试!
2010_3_1最新 完整 FFMPEG 编译详解的更多相关文章
- ffmpeg命令详解(转)
FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证.它提供了录制.转换以及流化音视频的完整解决方案.它包含了非常先进的音频/视频编解码库l ...
- Java工程师 基础+实战 完整路线图(详解版)
Java工程师 基础+实战 完整路线图(详解版) Java 基础 Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装.继承.多态.此外还有泛型.反射 ...
- 转:ffmpeg time_base详解
ffmpeg time_base详解 https://my.oschina.net/u/3054677/blog/866368
- Flutter完整开发实战详解
Flutter完整开发实战详解(一.Dart语言和Flutter基础) Flutter完整开发实战详解(二. 快速开发实战篇) Flutter完整开发实战详解(三. 打包与填坑篇)
- Android 6.0 RK3288 ROM编译详解+命令详解【转】
本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...
- Android编译详解之lunch命令 【转】
本文转载自: Android编译详解之lunch命令 (2012-10-08 10:27:55) 转载▼ 标签: it 分类: android内核剖析 Android的优势就在于其开源,手机和 ...
- C语言001--hello world编译详解
1.编写hello.c程序,并编译运行 book@100ask:~/linux/c01$ cat hello.c -n 1 #include <stdio.h> 2 3 int main( ...
- FFmpeg时间戳详解
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10584910.html 1. I帧/P帧/B帧 I帧:I帧(Intra-coded pi ...
- 02.PHP7.x编译详解
#php7编译安装安装 ``` useradd -M -s /sbin/nologin www yum -y install openssl-devel bzip2-devel curl-devel ...
随机推荐
- python脚本程序,传入参数*要用单引号'*'
*号作为python脚本的传入参数时,必须用单引号'',才能正确传入.如python test.py 2014 '*' age python test.py 2014 * age是错误的. 比如 te ...
- (NO.00004)iOS实现打砖块游戏(二):实现游戏主界面动画
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个内容不错的游戏也要一个好的包装.玩家进入游戏时第一眼看到的是 ...
- [python] Start a http server
If you want to start a simple httpserver on your windows, you may choose python.simpleHTTPServer mod ...
- Linux之命令的组合
在Linux下有好多经典的操作,其中尤为经典的是命令的组合,不管是作为参数,还是命令之间的配合,都做得比较完善.下面看一下常用的一些命令吧. 1.连续运行多个命令就可以使用':'作为分隔,但是缺点就是 ...
- iOS中GET 和 POST 数据请求
iOS中GET 和 POST 网络数据请求 同步请求和异步请求的差别: 1.同步请求,有主线程完成网路请求任务,在数据没有请求之前,用户的所有的交互事件应用都无法处理,会造成一种卡顿现象,影响用户体验 ...
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示(优化篇)
上一张效果图: 之前的项目有一个Galley的项目,但是代码结构特别乱,别问我为什么,我也是刚接手这个项目,为了方便以后阅读和维护我对一些模块进行了重构.ViewPager实现Galler效果,但是当 ...
- 索引构建情况分析、mongoDB安全(四)
索引好处:加快索引相关的查询 坏处:增加磁盘空间消耗,降低写入性能 评判当前索引构建情况: 1. mongostat工具介绍 2. profile集合介绍 3. 日志介绍 ...
- 控件的基本使用-iOS—UI笔记
学习目标 1.[掌握]第一个UI项目 2.[掌握]控件连线 3.[掌握]按钮的基本操作 4.[掌握]控件的常用属性 一.第一个UI项目 UI (User Interface)也是就用户界面,是App的 ...
- Spring揭秘 读书笔记 七 BeanFactory的启动分析
首先,先看我自己画的BeanFactory启动时的时序图. 第一次接触时序图,可能有些地方画的不是很符合时序图的规则,大家只关注调用顺序即可. public static void main(Stri ...
- Activity堆栈管理
task就好像是能包含很多activity的栈. 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个 ac ...