ffmget编译

来源:互联网 发布:网络安全法与等级保护 编辑:程序博客网 时间:2024/06/10 00:43

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

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

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

1 linux中编译

1 获取代码wget   http://ffmpeg.org/releases/ffmpeg-3.0.2.tar.bz2tar   -jxvf    xx.tar.bz22 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 install3 安装SDLyum list *SDL* yum install SDL.x86_64yum install SDL-devel.x86_644 configurecd  /data1/home/wy/ffmpeg/ffmpeg-3.0.2chmod +x configure./configure  --enable-shared  --prefix=/data1/home/wy/ffmpeg/ffmpeg_install5 makemakemake 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.0C:\MinGW\msys\1.0\binC:\MinGW\msys\1.0\libC:\MinGW\msys\1.0\includeC:\MinGW\binC:\MinGW\libC:\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\binC:\MinGW\msys\1.0\libC:\MinGW\msys\1.0\include
C:\MinGW\binC:\MinGW\libC:\MinGW\include
E:\myproject\ffmpeg-3.0.2\binE:\myproject\ffmpeg-3.0.2\libE:\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