2009.03.21补充:ffmpeg-0.5正式发布,地址为:[url]http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2[/url]。修改了第7步,可以通过编译。
 
2009.03.31补充:ffmpeg-0.5的动态库编译。增加5.2步。感谢本日志评论第8楼的deepocean网友的帮忙。
(明天是哥哥的祭日,在这缅怀一下!)
 
2009.04.18补充:加入libamr库,支持amr格式解码。参见第14步。
2009.07.13补充:加入libmp3lame库,支持MP3编码。参见第15步。
2009.07.14补充:加入faac及faad支持。参见第16步。
2009.07.28补充:设置Msys的字体及背景。参见第17步。
2009.08.03补充:加入x264支持。参见第18步。
2009.08.18补充:添加pr命令。参见第10.2步。
 
编译环境要求:
Msys: 1.0.10
MinGW:5.1.4
make: 3.81
gcc: 4.3.2
w32api: 3.13
SDL: 1.2.1
MinGW-Runtime: 3.15
 
一步步的来吧:
1. Minimal SYStem (MSYS) 安装
[url]http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe[/url]
安装到c:/msys/(去掉1.0,因为我看着不爽,(*^__^*) 嘻嘻……),其他的步骤默认。临近最后会出现个dos窗口,最后一句为:
Do you wish to continue with the post install? [yn ]
输入n,结束安装。
 
2. MSYS DTK (Developer Tool Kit) 安装
[url]http://prdownloads.sourceforge.net/mingw/msysDTK-1.0.1.exe[/url]
安装到C:/msys/,其他默认。
 
3. 升级下MSYS
[url]http://downloads.sourceforge.net/mingw/msysCORE-1.0.11-2007.01.19-1.tar.bz2[/url]
解压这个文件,将bin/mount.exe, msys-1.0.dll, ps.exe三个文件copy到c:/msys/bin下面覆盖下。
 
4. 升级下MSYS的BASH
[url]http://prdownloads.sourceforge.net/mingw/bash-3.1-MSYS-1.0.11-snapshot.tar.bz2[/url]
解压这个文件,将bin/bash.exe, sh.exe两个文件copy到c:/msys/bin。
 
5. MinGW 安装
[url]http://downloads.sourceforge.net/mingw/MinGW-5.1.4.exe?modtime=1209244789&big_mirror=1[/url]
安装,选择download and install,下两步之后选择Candidate,不要选Current。选择MinGW base tools (autoselected), g++ compiler, MinGW make; 安装路径为c:\mingw。等待下载完了安装吧。O(∩_∩)O……
 
5.2. 还原binutils-2.16.91
很多朋友需要用ffmpeg的dll来做开发。编译的时候是用./configure --enable-memalign-hack --disable-static --enable-shared。但是最终编译出来make install或者将相关的dll拷贝得到ffmepg同级目录后,执行ffmpeg或者ffplay报错:应用程序正常初始化失败。
经过google了许多资料,发现是binutils的版本问题。chinavideo论坛上面有的朋友说是mingw的版本问题,使用MinGW-3.1.0-1.exe会解决。Jeremiah经过试验,发现不大行,从报错的结果来看,MinGW-3.1.0-1.exe没有自带binutils。还是要自己安装。而MinGW-5.1.4.exe的candidate选项会默认给我们安装binutils-2.18.50-20080109-2.tar.gz。而这个binutils会最终导致应用程序正常初始化失败的错误。
Jeremiah和网友deepocean测试了n个binutils的版本,最后发现binutils-2.16.91-20050827-1.tar.gz是最适合的。其他的,ms不行!
解压到c:/mingw,覆盖原来的。
 
6. 配置fstab
copy C:/msys/etc/fstab.sample 成 fstab,确保以下对应:
#Win32_Path    Mount_Point
c:/mingw         /mingw

原始环境就搭建好了。可以启动桌面上行的MSYS了。
 
7. 升级make
[url]http://www.esnips.com/nsdoc/90f17b99-d45a-420e-8cda-23544b64eb0d/?action=forceDL[/url]
下载make-3.81.90-msys.rar,解压,复制make.exe到c:/msys/bin下,覆盖原来的make。
MSYS中输入make -v显示的版本为3.81。
 
8. 升级gcc
[url]http://ftp3.ie.freebsd.org/pub/sourceforge/t/td/tdm-gcc/gcc-4.3.2-tdm-1-core.zip[/url]
解压到c:/mingw,覆盖原来的。
MSYS中输入gcc -v显示的版本为4.3.2。
 
 
10. 添加SDL
[url]http://www.libsdl.org/release/SDL-devel-1.2.11-mingw32.tar.gz[/url]
解压该软件包;
将lib下的所有文件复制到C:\mingw\lib;
将include下的所有文件复制到C:\mingw\include;
将bin下的i386-mingw32msvc-sdl-config复制到C:\mingw\bin,并重命名为sdl-config;
将bin下的SDL.dll复制到C:\mingw\bin。
 
10.2 添加pr.exe
解压,拷贝bin的pr.exe到c:/msys/bin下。
 
整体上的编译环境就搭建好了。
 
copy到c:/msys/home/your_name下面。
解压:tar xjvf ffmpeg-checkout-snapshot.tar.bz2。
vi一个文件ffmpeg-conf.sh,内容为:
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-memalign-hack
执行./ffmpeg-conf.sh。
执行make,应该不会有错误的。
执行ffplay filename就可以播放了。
 
12. 写在编译完之后
Jeremiah只是对ffmpeg进行了简单的编译,如果需要其他的功能还是去google吧。
编译完了应该会出三个可执行文件:ffmpeg.exe, ffplay.exe, ffserver.exe, 但是我编译完了只有前两个,没有ffserver.exe。因为MinGW里面少了关于ffserver用的网络的相关的包。
单独使用ffplay,需要将c:/mingw/bin/SDL.dll和ffplay.exe放到相同的目录下。
Ffmpeg工程组的网站不错[url]http://www.ffmpeg.com.cn[/url],它的论坛[url]http://bbs.chinavideo.org/index.php[/url]里面应该有不少关于FFmpeg的东西。
本文所有下载的东西,在我的公共邮箱提供了下载,具体下载方式为:
1). 登录http://mail.qq.com
2). 用户名:jeremiah_vlc
3). 密码:发邮件给我(jeremiah.vlc@gmail.com),我会告知。
4). 在“我的文件夹”的“Jeremiah_VLC相关资源”有所有资料的超大附件连接。
 
13. Msys的编辑
以前很不喜欢这个系统,因为不能跟cmd或者其他linux的命令行一样复制粘贴,去网上查了一下,发现可以的其实,只不过方式不一样。
复制:选中一段文字,就将这段文字复制到剪贴板。
粘贴:shift+鼠标左键,就将剪贴板的内容粘贴到命令行了。
 
14. libamr库加入
首先下载[url]http://gd.tuwien.ac.at/gnu/mingw/wget-1.9.1-mingwPORT.tar.bz2[/url],解压wget.exe到/mingw/bin下。
下载http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip,解压bin/unzip.exe到/mingw/bin下。
下载两个库:
分别解压到~下面。(~:/home/yourname)。
下载[url]http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-700.zip[/url],将这个zip包放到~/amrnb-7.0.0.2下面。
下载[url]http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-700.zip[/url],将这个zip包放到~/amrwb-7.0.0.3下面。
~/amrnb-7.0.0.2和~/amrwb-7.0.0.3下面分别执行:
./configure --disable-shared
make
make install
其中,--disable-shared将产生静态库,如需要动态库,则不要加这个选项。
进入ffmpeg-0.5目录,
保存以下脚本为ffmpeg-conf02.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-memalign-hack --enable-libamr-nb --enable-libamr-wb --enable-nonfree --extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
执行以下脚本:
rm -rf config.*
sh ffmpeg-conf02.sh
make
其中rm -rf config.*是为了确保config.h文件能被重写。如果不删除而是覆盖的话,可能会有不能写入覆盖的情况,所以,每次重新从configure开始的编译的话,还是执行下这个rm命令把configure产生的文件都干掉。
这样编译出来的ffplay就可以播放3gp文件了。(附件提供)
 
15. libmp3lame库加入
首先到lame-3.97.tar.gz (不要最新的版本3.98.2,ms有些问题,说audio专码的buffer不够)
解压到~下。
执行以下脚本:
./configure --disable-shared
make
make install
进入ffmpeg-0.5目录,
保存以下脚本为ffmpeg-conf03.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h
ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-nonfree -
-extra-ldflags=-L/usr/local/lib --extra-cflags=-I/usr/local/include
执行以下脚本:
rm -rf config.*
sh ffmpeg-conf03.sh
make
make后就可以使用ffmpeg玩MP3的转码了
ffmpeg -i d:/video/01.avi -vcodec mpeg2video -acodec libmp3lame 01.mpg
 
16. libfaac及libfaad库加入
下载faac及faad的源码:
分别解压到~下。
注释掉faad2-2.7/frontend/main.c的第34行:
/*#define off_t __int64*/
分别执行:
./bootstrap
./configure --disable-shared --without-mp4v2
make
make install
进入ffmpeg-0.5目录,
保存以下脚本为ffmpeg-conf04.sh
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure --enable-ffplay --enable-static --disable-shared --enable-memalign-h
ack --enable-libamr-nb --enable-libamr-wb --enable-libmp3lame --enable-libfaac -
-enable-libfaad --enable-gpl --enable-nonfree --extra-ldflags=-L/usr/local/lib -
-extra-cflags=-I/usr/local/include
执行以下脚本:
rm -rf config.*
sh ffmpeg-conf04.sh
make
make后就ffmpeg就可以使用faac及faad了。
ffmpeg -i d:/video/02.mp3 -acodec libfaac 01.aac
 
17. 修改Msys的字体及背景色
用文本编辑器打开C:/Msys/msys.bat,如下:
if "x%MINGW32BGCOLOR%" == "x" set MINGW32BGCOLOR=Black
if "x%MINGW32FGCOLOR%" == "x" set MINGW32FGCOLOR=Yellow
start rxvt -backspacekey     -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn "Courier New-20" -tn msys -geometry 80x30 -e /bin/sh --login -i
其中上面的Black及Yellow都是颜色。下面的-fn后面跟"字体-大小",80x30为每行80个字符,共显示30行。这都是Jeremiah喜欢的设置。
 
18. x264编码支持
下载x264源码需要用git。
git clone git://git.videolan.org/x264.git
或者去http://www.videolan.org/developers/x264.html中,选You can browse the source on-line,点选最新的snapshot。
 
将源码解压到~下,执行
./configure --disable-asm --enable-shared
make
make install
进入ffmpeg-0.5目录,
保存以下脚本为ffmpeg-conf04.sh
#this is enable amr mp3 aac aad x264
SDL_CFLAGS=/mingw/include
SDL_LIBS=/mingw/lib
./configure \
                --enable-ffplay \
                --enable-static \
                --disable-shared \
                --enable-memalign-hack \
                --enable-libamr-nb \
                --enable-libamr-wb \
                --enable-libmp3lame \
                --enable-libfaac \
                --enable-libfaad \
                --enable-gpl \
                --enable-nonfree \
                --enable-libx264 \
                --extra-ldflags=-L/usr/local/lib \
                --extra-cflags=-I/usr/local/include
执行以下脚本:
rm -rf config.*
sh ffmpeg-conf05.sh
make
make成功后,使用x264,如下:
$ ffmpeg -i d:/01.avi -f psp -acodec libfaac -ab 94k -vcodec libx264 -cqp 28 -coder 1 -refs 3 -deblockalpha 1 -deblockbeta -1 -me_method umh -subq 9 -me_range 32 -trellis 2 -chromaoffset -2 -nr 0 -bf 2 -b_strategy 1 -bframebias 0 -directpred 3 -g 250 -i_qfactor 1.3 -b_qfactor 1.4 -flags2 +bpyramid+wpred+mixed_refs+8x8dct -er 2 -s 480x320 d:/01.mp4
 

MinGW下简单编译FFmpeg的更多相关文章

  1. Win7 VS2017简单编译FFMPEG播放器FFPlay

    Win平台简单编译FFPlay播放器,顺便纪念下雷霄骅,一年前刚学FFMPEG时还看过他的博客,昨晚再次搜FFMPEG文章时才知道人已经走了... 做成了视频放到B站 https://www.bili ...

  2. Linux下NDK编译FFMPEG包含neon参数

    FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...

  3. Windows 系统 vs2012 MinGW 编译ffmpeg 静态库

    Windows系统下 vs2012编译ffmpeg 动态库 前面已经有文章讲述,本文将讲述如果编译生成ffmpeg静态库以方便 在vs2012下调用. 准备工作:安装MinGW环境,修改ffmpeg配 ...

  4. [原]如何用Android NDK编译FFmpeg

    我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装.那么如何使用Android的ND ...

  5. MinGW-MSYS Bundle Win32编译ffmpeg 生成DLL并加入X264模块

    组件资源站点 1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/files/ 2)yasm汇编器 http://yasm. ...

  6. VS2012编译FFmpeg 2.1.4

    这次的目标是完整编译FFmpeg包括汇编代码,并且尽量少修改源代码. 环境是WIN7 64位,VS2012, Intel.Parallel.Studio.XE.2013.SP1 一. 安装MinGW, ...

  7. Xcode编译ffmpeg(2)

    iOS: FFmpeg编译和使用问题总结 折磨了我近一周多时间的FFmpeg库编译问题终于解决了,必须得把这一段时间来遇到过的坑全写出来.如果急着解决问题,编译最新版本的FFmpeg库请直接看第二部分 ...

  8. Linux 编译ffmpeg 生成ffplay

    本来主要介绍linux环境下如何编译ffmpeg使之生成ffplay.编译总是离不开源码的版本,以及编译环境下:编译环境Ubutun 16.04 ,ffmpeg 版本3.4.2.如何下载ffmpeg ...

  9. windows 7下mingw+msys编译ffmpeg

      windows 7下mingw+msys编译ffmpeg   1-->下载安装MingW,mingw-get-inst-20120426.exe  http://sourceforge.ne ...

随机推荐

  1. CentOS 7 yum 安装 MySQL5.7

    1.下载 MySQL 官方的 Yum Repository ,官网地址:https://dev.mysql.com/downloads/repo/yum/ 从 MySQL 官网选取合适的 MySQL ...

  2. React入门教程

    做前端的人都知道,目前热门前端的框架是 VAR => Vue,Anglur,React. 而如果说最热门的前端框架是谁,毫无悬念是 React React 是由 Facebook 主导开发的一个 ...

  3. 济南清北学堂游记 Day 2.

    在大佬云集的地方被直线碾压是什么样的体验? 大概就是210和1030的差别. 大概就是高质量机械键盘和空气的区别. 回来的路上,我一直在想,我到底是不是一个高三的? 大概也是能找到以前在家和学校训练时 ...

  4. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

  5. BZOJ 3669: [Noi2014]魔法森林 [LCT Kruskal | SPFA]

    题目描述 为了得到书法大家的真传,小 E 同学下定决心去拜访住在魔法森林中的隐 士.魔法森林可以被看成一个包含 n 个节点 m 条边的无向图,节点标号为 1,2,3,…,n,边标号为 1,2,3,…, ...

  6. VUE 2.0 引入高德地图,自行封装组件

    1. 高德地图官网 申请帐号, 申请相应(JavaScript API)的 Key 2. 在项目中引入, 这里和其他的引入不同的是 直接在 index.html, 不是在 main.js 引入, 博主 ...

  7. Newtonsoft.Json 操作 JSON 字符串

    Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用:DataContractJsonSeriali ...

  8. coredump故障分析

    如果一个程序运行3天后才会出错,这个时候 难道需要我们一直用GDB调试程序3天吗? 这个时候我们就需要使用到core  dump: 1.Core Dump又叫核心转存.当程序在运行过程中发生异常, 这 ...

  9. iOS图片轮播

    基于ScrollView的图片播放 ScrollView的方法 NSTime的循环 UIPageControl的运用 委托方法 基于iphone5 未做屏幕的适配 import "ViewC ...

  10. Sql server 卸载方法

    sql server不正确卸载时,重新安装会失败,会提示各种错误:如数据库实例已存在等... 下面是我摸索总结出来的卸载方法,以及重装失败后的处理方法: 卸载方法: 注意:SQL Server 200 ...