最近在研究ffmpeg的编译,之前使用的Ubuntu,需要安装虚拟机,非常麻烦,所以后来改研究在Windows平台编译。

一开始遇到很多挫折,参考了网上很多的帖子,但要么不全要么内容已过期,经过我的反复试验或研究,最终搞定了。在此记录一下,也希望能对编译ffmpeg的朋友们有所帮助。

首先安装Mingw和Msys平台,可以参考我其他几篇转载的帖子,基本都不会有问题

然后从ffmpeg官网下载源码,可以选择最新的Git测试版或稳定版(我下载的是ffmpeg-1.1),编译方式都大同小异,如果不需要第三方库的话,编译选项如下(shared和static只能有一个为enable):

./configure --enable-static --disable-shared --enable-memalign-hack --arch=x86 --target-os=mingw32 --pkg-config=pkg-config --enable-runtime-cpudetect --disable-debug --enable-pthreads
make
make install

下面介绍各种第三方库的编译。为了方便编译,所有库均先解压到[mingw]/msys/1.0/home/[username]根目录,然后在mingw shell中cd命令定位到库文件夹下。

X264

http://www.videolan.org/developers/x264.html,下载最新版本的git

编译安装:
./configure --enable-win32thread
make
make install
cp -iv x264.h x264_config.h /mingw/include  
cp -iv libx264.a /mingw/lib  
cp -iv x264.pc /mingw/lib/pkgconfig

ffmpeg编译参数:--enable-gpl --enable-libx264


LAME 3.99.5

http://sourceforge.net/projects/lame/files/lame/,下载lame-3.99.5.tar.gz

编译安装:

./configure --enable-export=full --enable-static --disable-shared --disable-frontend

make

make install

ffmpeg编译参数:--enable-libmp3lame

librtmp 2.3

http://rtmpdump.mplayerhq.hu/,下载rtmpdump-2.3.tgz(网上有帖子说是rtmpdump-2.3-windows.zip,但我下载了,里面都没有makefile)

librtmp依赖于zlib和openssl,所以要先编译两个库,见下面:

Zlib 1.2.7

http://zlib.net/,下载zlib-1.2.7.tar.gz

make -f win32/Makefile.gcc
cp -iv zlib1.dll /mingw/bin  
cp -iv zconf.h zlib.h /mingw/include  
cp -iv libz.a /mingw/lib 
cp win32/Makefile.gcc Makefile.gcc

ffmpeg编译参数:--enable-zlib

OpenSSL 1.0.1

http://www.openssl.org/,下载openssl-1.0.1c.tar.gz
./configure mingw --prefix=`pwd`/win32libs -DL_ENDIAN -DOPENSSL_NO_HW
make
make install

编译完成后,把当前目录的win32libs子文件夹下的include和lib分别拷贝到mingw32,以供后面librtmp使用

注意:openssl的编译需要在安装Mingw时包含Perl 5环境,如果没有的话,可到网上下载(我用的是5.16.2版,见http://www.cpan.org/src/README.html),下载后编译参数如下:

./Configure -des -Dprefix=$HOME/localperl
make
make test
make install

ffmpeg编译参数:--enable-nonfree --enable libopenssl

librtmp的编译命令如下:

make SYS=mingw
make SYS=mingw install

注意:编译ffmpeg时会提示“ERROR:   librtmp not found”错误,主要是因为一些library没链接好,不知道是否为ffmpeg的Bug。解决办法是在configure文件中“enabled librtmp”一行最后要添加“ -lwinmm -lwsock32 -lgdi32”

ffmpeg编译参数:--enable-librtmp

xvidcore 1.3.2

http://www.xvid.org,下载xvidcore-1.3.2.tar.gz

编译安装:
cd xvidcore/build/generic  
./configure --prefix=/mingw

执行到这里后,搜索xvidcore/build/generic 目录下面所有文件(我的版本是platform.inc中有两处)中的 -mno-cygwin 这个选项, 这个选项已经不被GCC支持,全部删除后继续。

make
make install
cp -iv \=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a

ffmpeg编译参数:--enable-libxvid

libgsm 1.0.13-3

http://libgsm.sourcearchive.com/,下载libgsm_1.0.13.orig.tar.gz

编译安装:

make

mkdir /mingw/include/gsm

cp inc/gsm.h /mingw/include/gsm

cp lib/libgsm.a /mingw/lib

ffmpeg编译参数:--enable-libgsm

libogg

供libvorbis和libtheora用

http://www.xiph.org/downloads/,下载libogg-1.1.4.tar.gz

解压,编译安装:

./configure –prefix=/olibs –disable-shared
make
make install

LIBVorbis 1.3.3

http://xiph.org/downloads/,下载libvorbis-1.3.3.tar.gz

编译安装:

./configure

make

make install

ffmpeg编译参数:--enable-libvorbis

LIBTheora 1.1.1

http://xiph.org/downloads/,下载libtheora-1.1.1.tar.bz2

编译安装:

./configure

make

make install

ffmpeg编译参数:--enable-libtheora

LIBSpeex 1.2rc1

http://xiph.org/downloads/,下载speex-1.2rc1.tar.gz

./configure

make

make install

ffmpeg编译参数:--enable-libspeex

加入以上第三方库以后,在ffmpeg中就可以下面的参数进行编译:

./configure --enable-static --disable-shared --enable-memalign-hack --arch=x86 --target-os=mingw32 --pkg-config=pkg-config --enable-runtime-cpudetect --disable-debug --enable-pthreads --enable-gpl --enable-bzlib --enable-libx264 --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libxvid --enable-zlib--enable-openssl --enable-librtmp --enable-nonfree --enable-libspeex

make

make install

ffmpeg第三方库编译记录的更多相关文章

  1. android studio 导入第三方库的记录

    android studio 导入第三方库的记录.jar包 和 库 一.jar包 1.jar包的话很简单,首先换成project模式,将你要用的jar包复制到lib下面.如图 2.然后右键选择Add ...

  2. [ffmpeg 扩展第三方库编译系列] 关于libopenjpeg mingw32编译问题

    在mingw32如果想编译libopenjpeg 会比较麻烦 会出现undefined reference to `_imp__opj_destroy_cstr_info@4' 等错误 因此编译时候需 ...

  3. [ffmpeg 扩展第三方库编译系列] 关于需要用到cmake 创建 mingw32编译环境问题

    我在这里给出我编译的例子 cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=& ...

  4. [ffmpeg 扩展第三方库编译系列] 关于libvpx mingw32编译问题

    在编译libvpx的时候遇到挺多的问题, 1.[STRIP] libvpx.a < libvpx_g.a strip: Bad file number   这个错误也是比较难搞的,一开始以为只是 ...

  5. [ffmpeg 扩展第三方库编译系列] frei0r mingw32 下编译问题

    在编译安装frei0r的时候遇到两个错误地方, 两个都是在install的时候. 一开始编译都很顺利,输入了 make install之后就走开了,回来一看,报错误. 提示mkdir -p //usr ...

  6. [ffmpeg 扩展第三方库编译系列] 关于 mingw32 下编译libcaca

    在编译前最好先看一下帮助 ./configure --help 开始编译 ./configure  --disable-shared --disable-cxx \ --disable-csharp ...

  7. [ffmpeg 扩展第三方库编译系列] 关于须要用到cmake 创建 mingw32编译环境问题

    我在这里给出我编译的样例 cmake -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=& ...

  8. 调用第三方库时需注意MD/MT的链接编译方式(遇到的坑记录)

    MD与/MT编译 1./MD是动态库链接方式编译 (DEBUG版本是/MDd) 2./MT是静态库链接方式编译 (DEBUG版本是/MTd) 编译器不会检查到的问题 我今天遇到的记录下来 当你调用第三 ...

  9. ios常用的第三方库

    ios开发中有可能用到的第三方库进行记录一下: 注:资料信息来源于网络 自己整理  https://developer.apple.com/reference(苹果官方文档) https://gith ...

随机推荐

  1. 用C#来学习唐诗三百首和全唐诗

    Begin 最近把项目做完了,闲来无事,就想做点好玩的事情,刚好前几天下载了[唐诗三百首]和[全唐诗]这两个txt文件,正好用C#来整理一下. 然后导出QData格式,可以给其他软件读取. 以后弄个开 ...

  2. 初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(二)

    由于感觉上一次写的篇幅过长,所以新开一贴,继续介绍Modbus TCP/IP的初步认识, 书接上回 3).03(0x03)功能码--------读保持寄存器 请求与响应格式 这是一个请求读寄存器108 ...

  3. 反射机制,jvm,class类型

    [说明]这是上午完成的内容或者说是接触到的知识点,包括servlet简单的数据库连接,表格的显示需要用到的插件jstl,还有最最多的java反射原理的讲解 1)数据库的设计 2)编程中用到的知识点 3 ...

  4. 【BZOJ4894】天赋 有向图生成树计数

    [BZOJ4894]天赋 Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是 ...

  5. CoreMotion 加速器陀螺仪

    初始化CoreMotion #import <CoreMotion/CoreMotion.h> CMMotionManager *motionManager = [[CMMotionMan ...

  6. 4.对urls.py的解释

    解释: 路由配置文件(URL分发器),它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表.就是以这种方式告诉Django对于每个URL的处理类.Django启动的时候回去加载urls. ...

  7. python+NLTK 自然语言学习处理四:获取文本语料和词汇资源

    在前面我们通过from nltk.book import *的方式获取了一些预定义的文本.本章将讨论各种文本语料库 1 古腾堡语料库 古腾堡是一个大型的电子图书在线网站,网址是http://www.g ...

  8. HDU 4824 Disk Schedule

    //

  9. 11.23 Eclipse

    一.Eclipse Workspace File-->Switch Workspace 编译环境:Window -- Preferences – Java - Compiler 运行环境:Win ...

  10. 模仿jquery框架源码 -生长---跨域访问

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...