ffmget编译

网上有直接可以运行执行文件可下,但是还是想感觉一下ffmpeg在windows编译的过程.都说不容易,到底有多难呢?

这么大一份代码,了解它如何编译后,会对它的框架有一个大致的认识.

我的这个编译没有加入任何扩展库,很原始的,很简单的.等我把这个编译完成后,会加入第三方库的,譬如librtmp,x264等.

1 linux中编译

1 获取代码
wget   http://ffmpeg.org/releases/ffmpeg-3.0.2.tar.bz2
tar   -jxvf    xx.tar.bz2

2 yasm
//是因为 FFMPEG为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话,就会出现上述的问题。
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar zxvf yasm-1.3.0.tar.gz
# cd yasm-1.3.0
# ./configure
# make && make install

3 安装SDL
yum list *SDL* 
yum install SDL.x86_64
yum install SDL-devel.x86_64

4 configure
cd  /data1/home/wy/ffmpeg/ffmpeg-3.0.2
chmod +x configure
./configure  --enable-shared  --prefix=/data1/home/wy/ffmpeg/ffmpeg_install

5 make
make
make install

linuc编译很简单,并且相对快.主要是win下的编译.

在win7上编译,参考的网址是:http://blog.chinaunix.net/uid-28472581-id-3794394.html

编程成功后,我把我的步骤总结一下.

首先说明的是编译很慢,configure要十几分钟,make大约要半小时吧.
中间出现几处错误,我花了大半天时间才成功.

2下载文件.

先下载一些东西

  1. 下载MinGW : mingw-get-setup.exe
  2. 下载 yasm(汇编编译器) : yasm-1.3.0-win32.exe
  3. 下载 pthreadGC2.dll: pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需的一个DLL文件。
  4. 下载 ffmpeg : ffmpeg-3.0.2
  5. 下载SDL: SDL-devel-1.2.15-mingw32.tar.gz

这是我下载的所有东西.开始安装

3安装

3.1 MinGw

MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。

安装这个时有点怪的,需要自己来选择一些工具的.最基本的是: C Compiler,C++ Compiler和MSYS等.这一些都是好像默认的,开始安装.

这个需要等一会,不用急.

我的安装路径是: c:/MinGw

里面有几个比较重要的路径:

C:\MinGW\msys\1.0
C:\MinGW\msys\1.0\bin
C:\MinGW\msys\1.0\lib
C:\MinGW\msys\1.0\include
C:\MinGW\bin
C:\MinGW\lib
C:\MinGW\include

有这几个路径后,说明安装成功了.

还要改一个东西,至于为什么要改,不知道.

C:\MinGW\msys\1.0\etc目录下: 
复制一份fstab.sample,然后改名为:fstab

3.2 yasm

把 yasm-1.3.0-win32.exe 改名为 yasm.exe
并放入到:C:\Windows\System32

3.3 pthreadGC2.dll

放入到:C:\MinGW\bin中

3.4 SDL

解压后,会出现bin,lib,include文件夹.

修改bin下的 sdl-config文件:

prefix=/usr 改成: prefix=c:/mingw
其中:c:/mingw 为 mingw的安装路径,请根据你的安装进行修改。

为了编译时和运行是能够找到SDL,把这三个文件夹的内容移到这两个地方:

C:\MinGW\msys\1.0\bin
C:\MinGW\msys\1.0\lib
C:\MinGW\msys\1.0\include
C:\MinGW\bin
C:\MinGW\lib
C:\MinGW\include
E:\myproject\ffmpeg-3.0.2\bin
E:\myproject\ffmpeg-3.0.2\lib
E:\myproject\ffmpeg-3.0.2\include

E:\myproject\ffmpeg-3.0.2 是ffmpeg 解压后的目录,bin,lib,include是我自己创建的.

这三个地方其实只需要一个就可以了,为了避免麻烦,我直接放到了这三个地方.

3.5 ffmpeg

解压到文件夹:E:\myproject\ffmpeg-3.0.2 下

4 编译

4.1 启动 MinGW

打开: C:\MinGW\msys\1.0\msys.bat

cd 到E:\myproject\ffmpeg-3.0.2目录下

4.2 configure

ffmpeg的configure很复杂.第一次大部分走默认:

./configure --enable-shared --disable-static --enable-ffplay --disable-ffprobe --disable-ffserver --extra-cflags=-IE:/myproject/ffmpeg-3.0.2/include   --extra-ldflags=-LE:/myproject/ffmpeg-3.0.2/lib  --enable-memalign-hack

参数的意义是:

--enable-shared --disable-static                      //编译动态库
--enable-ffplay --disable-ffprobe --disable-ffserver  //编译出ffplay
--extra-cflags=-IE:/myproject/ffmpeg-3.0.2/include    //SDL的include路径
--extra-ldflags=-LE:/myproject/ffmpeg-3.0.2/lib       //SDL的lib路径
--enable-memalign-hack                                //windows编译必须加上这个.

由于我的目标主要是FFMPLAY,第一次编译只出现了这个:ffmpeg.原因是configure时,没检测出SDL.

SDL support               no

如果检测出了,会为yes.

网上给出的答案是,configure后,硬改,改完后确实成功了.

E:\myproject\ffmpeg-3.0.2目录下config.mak文件:
!CONFIG_FFPLAY=yes,
!HAVE_SDL=yes

注释掉的了.所以去掉前面的感叹号.

很蛋疼.

configure也忒慢了,执行一个命令而已,要十来分钟.半天等不出来.

4.3 make

make的时候出现了代码错误,出现地方在file.c文件中,网上给出答案是,正确答案.

#include <windows.h>
#include <unistd.h>

取代

#include <unistd.h>

make也半个多小时吧.耐心等待..

成功后,会在ffmpeg的目录下出现ffmpeg和ffplay文件.

make install的话,会出现把生成的文件拷贝到:C:\MinGW\msys\1.0\local\下.

4.4 测试成功

ffplay  test.flv

测试成功.

5 总结

win编译,肯定会遇到问题,网上有很多种不同的别人的编译步骤.所以每个人的步骤大同小异,遇到问题后,再查google吧.应该会编译成功,只是会花点时间而已.

下一篇我要加上扩展库,librtmp和x264库.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值