使用mingw编译ffmpeg 0.5

首先下载 ffmpeg 0.5 的原始码,官方载点:http://ffmpeg.org/releases/ffmpeg-0.5.tar.bz2


编译的最基本选项。(以下所述皆为静态编译,得到的 ffmpeg.exe 可独立执行。不编译 dll

./configure --enable-memalign-hack --extra-cflags=-fno-common
make
make install

--enable-memalign-hack,若无此项无法编译;-fno-common 为应对一个 GCC bug


偶所使用的编译选项

CFLAGS="-pipe -s -fno-common" /path/to/ffmpeg-0.5/configure /
--enable-memalign-hack --disable-logging --disable-debug --disable-ffserver --enable-avisynth /
--enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-avfilter-lavf --cpu=i586 /
/
--enable-pthreads --enable-libx264 --enable-libmp3lame --enable-libfaac --enable-libgsm --enable-libtheora

前两行的选项共计11个,为 ffmpeg 内建可直接使用的选项。--cpu=i586,不能使用 i686 及以上,否则无法使用内建 mpeg4 转文件,ffplay 无法播放视讯。编译过程中会强制开启 -O3configure --cpu 参数会覆盖掉 CFLAGS 中指定的 -march

最后一行的6个选项需要事先安装其它相对应的软件包才能开启。因为 ffmpeg 有内建 mpeg4 vorbis,所以无需额外安装外部编码器 libxvid libvorbis

pthreads--enable-pthreads
CPU 的多线程 / 多核心支持。libx264 依赖于这个软件包。如果只是想要多线程 / 多核心支持,但不安装 libx264。则可使用内建的 Win32 threads--enable-w32threads

下载 pthreadspthreads-w32-2-8-0-release.tar.gz
下载补丁:
http://ffmpeg.arrozcru.org/wiki/images/1/12/Pthreads-w32-2-8-0.diff
http://ffmpeg.arrozcru.org/wiki/images/d/dd/Ffmpeg_r15966_static_pthreads.diff
pthreads 资料夹中:
make clean GC-static patch -p1 < ../pthreads-w32-2-8-0.diff cp libpthreadGC2.a /mingw/lib cp pthread.h sched.h /mingw/include
ffmpeg 资料夹中:
patch -p0 < ../Ffmpeg_r15966_static_pthreads.diff

第一个补丁解决 sched.h 编译出错的问题。第二个补丁解决 ffmpeg 无法使用 pthreads 静态库的问题。

x264--enable-libx264

下载 x264 原始码 ftp://ftp.videolan.org/pub/videolan/x264/snapshots
下载 YASMyasm-0.7.2-win32.exe。重新命名为 yasm.exe,复制到 msys/mingw/bin
x264 原始码数据夹中执行:
./configure --prefix=/mingw --extra-cflags=-DPTW32_STATIC_LIB ; make -j2 ; make install

--extra-cflags 必备,不然 ffmpeg 那边会编译不通过卡在 libx264.aundefined reference to `_imp__pthread

lame--enable-libmp3lame

下载 LAMEhttp://downloads.sourceforge.net/lame/lame-398-2.tar.gz
下载补丁:http://superfq.googlepages.com/ffmpeg-20080908-lame-flush-once.patch
前往 lame-398-2。执行:
./configure --prefix=/mingw --disable-shared --disable-frontend ; make -j2 ; make install

ffmpeg 资料夹中:
patch -p0 < ../ffmpeg-20080908-lame-flush-once.patch

补丁用以解决 lamemp3 编码结束时出现错误的问题:lame: output buffer too small, Audio encoding failed

faac--enable-libfaac

下载 FAAChttp://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
faac 资料夹中:
./bootstrap ; ./configure --prefix=/mingw --disable-shared --without-mp4v2 ; make -j2 ; make install

FAAC 无需编入 mp4 容器支持,封入 mp4 容器的工作由 ffmpeg 负责。

GSM--enable-libgsm
经其编码后的音讯听起来就像是从电话线中传出。(make 编译出错无视之:make: *** [bin/toast] Error 1

下载 GSMhttp://user.cs.tu-berlin.de/~jutta/gsm/gsm-1.0.12.tar.gz
 gsm-1.0-pl12 资料夹中:
make -j2
cp lib/libgsm.a /mingw/lib
cp inc/gsm.h /mingw/include

使用方法特殊:ffmpeg -i input.wav -acodec libgsm_ms -ac 1 -ar 8000 -ab 13000 output.wav

Theora--enable-libtheora
libtheora OGG 的视讯编码,依赖于 libogg

下载
libogghttp://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
Theorahttp://downloads.xiph.org/releases/theora/libtheora-1.0.tar.bz2
 
libogglibtheora-1.0 数据夹中(先安装 libogg):
./configure --prefix=/mingw --disable-shared ; make -j2 ; make install


FFplay
ffplay 是一个简单的问题多多的阳春播放器,不支持去交错。偶是拿它来作测试。一般的影音播放用途应使用其它播放器。ffplay 依赖于 SDL,若未安装 SDL 则不会编译 ffplay

下载 SDLhttp://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz

解压缩后用记事本开启 SDL-1.2.13/bin/sdl-config,将 prefix Users/hercules/tmp/SDL-1.2.13 改为 /mingw 复制 SDL-1.2.13 中的 bin, include, lib /mingw。出现取代数据夹提示时选择全部取代。
 configure 输出的讯息中有显示 SDL support  yes,即表示可编译出 ffplay.exe。使用 ffplay 需要将 SDL.dll  ffplay.exe 放在一起。

帮助文档
必需安装有 texi2html,才会在编译时编译出文档。

下载 texi2htmlhttp://ftp.twaren.net/Unix/NonGNU/texi2html
 texi2html 资料夹中:
./configure --prefix=/mingw ; make install
touch /mingw/bin/pod2man

touch /mingw/bin/pod2man。解决编译时出现错误:「/bin/sh: pod2man: command not found」。如果你有 pod2man 可以省去这步。pod2man 是一个 Perl script,这里建立一个空的免得找不到命令。

帮助文档主要就是6个 HTML 档案,偶已经给它 PO 到网络上:

§ FFmpeg FAQ

§ FFmpeg Documentation

§ FFplay Documentation

§ FFserver Documentation

§ General Documentation

§ Video Hook Documentation



档案下载
ffmpeg-0.5-windows-i586.7z:包括 ffmpegffplay 和帮助文档。

备用载点一
备用载点二

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值