mingw编译ffmpeg+x265过程记录,ffmpegx265


mingw编译ffmpeg+x265过程记录

email: tuyuandong@gmail.com

工作环境 OSwindows 7

1.相关资源下载

Ffmpeg-2.3     http://ffmpeg.org/releases/ffmpeg-2.3.3.tar.bz2

X265-1.3下载  https://bitbucket.org/multicoreware/x265/wiki/Home

http://ffmpeg.zeranoe.com/builds/source/external_libraries/

X264下载 http://ffmpeg.zeranoe.com/builds/source/external_libraries/

  

2.编译x265-1.3

x264x265ffmpeg等都需要yasm编译器,需要将yasm编译器下载,复制到ming/bin目录下。

X265需要安装cmake来生产工程文件,需要下载最新的cmake-2.8.12版本,并安装,注意需要将其安装路径加入windows环境变量的PATH变量下。

2.1 进入到x265/build/msys目录,执行 make-Makefiles.sh


先点下面的configure,然后点generate即可,然后关闭,回到命令行。同上面的执行make 然后是 make install。最后编译成功应该可以找到对应的lib文件在/loacal/lib目录下。

3.编译ffmpeg-2.3

3.1. Ffmpeg编译配置选项

x264x265编译后的头文件,静态库文件copy/usr/local/对应的目录下


tyd.sh文件copyffmpeg-2.3.3目录下。运行tyd.sh脚步即可

3.2 运行编译选项存在的问题

ERROR: x265 not found

3.2.1. 缺少pkg-config程序、缺少x265.pc文件



查看config.log日志文件,根据以下的错误信息,应该是缺少pkg-config程序,以及缺少对应的x265.pc文件。


pkg-config程序的安装参考一下文章,或者直接下载pkg-config copy/ming/bin目录下

pkg-config

安装  http://blog.csdn.net/chaosllgao/article/details/3984462

下载  http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip

x265.pc文件copy /usr/local/lib


可以通过pkg-config得到x265相关的文件信息。

3.2.2 config.log错误日志信息

a) 缺少gcc依赖库

  如下图所示,链接new\delete函数失败,显然是缺省gcc相关的函数导致


原因是msys版本的pkg-config不能正确读取x265库的依赖库导致,需要手动添加


b) 奇怪的链接错误


c:/mingw/lib/libstdc++.a(new_op.o):new_op.cc:(.text+0x34): undefined reference to `_Unwind_SjLj_Register'

c:/mingw/lib/libstdc++.a(new_op.o):new_op.cc:(.text+0x87): undefined reference to `_Unwind_SjLj_Unregister'

c:/mingw/lib/libstdc++.a(new_op.o):new_op.cc:(.text+0xb7): undefined reference to `_Unwind_SjLj_Resume'


通过分析查找,发现时上述链接使用的gcc函数库与x265.exe使用的函数库不一致的原因导致。本质原因还是pkg-config不能正确解析x265.pc文件所致,解决方案如下:


c) 正确执行configure配置的结果


可以看到ffmpeg依赖的第三方库已经正确的配置好了libx264libx265

4.编译ffmpeg项目

到这一步基本上大功告成了,只需要执行make && make install即可。

最后可以在目录output下找到编译的结果。






windows下怎编译ffmpeg?

要在windows下编译ffmpeg,并生成dll,要用到mingw或者msys。搭建这两个环境有点烦,具体可以在网上找一下相关的方法。
在ffmpeg的网站上有已经编译好的windows下使用的ffmpeg的dll相关东西,可以直接下载下来使用。
搜索windows下编译ffmpeg,也可以看到很多方法。
 

想知道ffmpeg 怎在win7下编译,最好有具体的文档,可以发给我分成功配置的好环境文件 xiaoyaocust@126com

到官网上下载新版的ffmpeg 0.6.1 :www.ffmpeg.org/releases/ffmpeg-0.6.1.tar.bz2

我当时下载mingw安装时是完全在线安装,在mingw目录下会有msys

我mingw装在c:/mingw 下,msys在c:/mingw /msys

编译ffmpeg 还需要SDL 地址:www.libsdl.org/release/SDL-1.2.14.tar.gz

解压该软件包;
将lib下的所有文件复制到C:/mingw/lib;
将include下的所有文件复制到C:/mingw/include;
将bin下的i386-mingw32msvc-sdl-config复制到C:/mingw/bin,并重命名为sdl-config;
将bin下的SDL.dll复制到C:/mingw/bin中。

并找到sdl的源码包,将其中的include文件复制到C:/mingw/include中

(因为ffmpeg例子依赖其头文件)

解压ffmpeg-0.6.1.tar.bz2,复制到盘,c:/ffmpeg-0.6.1 (此文件夹中就有configure等文件了)

打开msys/1.0/etc中的文件fstab 增加一行:C:/ffmpeg-0.6.1

接着运行:msys.bat文件,启动了命令行界面:

切换到cd C:/ffmpeg-0.6.1

接着输入命令:

./configure --enable-memalign-hack
 

相关内容