最近项目需要开发网络视频应用,因为视频要编码,选择使用h.264进行编码,从网上找到x264这个库使用,但是不幸的是这个库是linux下的,但是我们的应用需要部署在windows系统上,故我只能自己编译成动态链接库来使用了,从网上找了好多方法,但是发现都不太好用,到我这老是出问题,特在此将我自己的配置过程记录下来。
我采用的mingw进行编译的方式
首先从网上下载mingw,地址http://sourceforge.net/projects/mingw/,下载下来之后进行安装,到选择安装模块的时候,选择所有的模块,如下图所示:图中显示不全,需要将滚动条向下滑动,选中所有的。
之后进行安装,这个安装是在线的,需要进行一段时间,趁着这个时间我们可以把其他需要的工具下载下来。
从x264的官网下载x264的源代码,http://www.videolan.org/developers/x264.html,下载下来后解压到任意位置,之后下载一个叫yasm的软件,因为在编译x264的时候会用到,地址:http://yasm.tortall.net/Download.html,下载win32版的,如果下载下来的名字不为yasm.exe,将其改名为yasm.exe,此时差不多mingw也安装好了,将yasm拷贝到mingw文件夹下的bin文件夹下,比如我的是C:/mingw/bin。
接下来,进行最重要的一步,将mingw添加进环境变量,否则会出问题,可以使用命令行,也可以使用界面直接设置。命令行使用如下:打开cmd 输入setx MSYS_HOMEc:/mingw/bin,一定要把目录地址设置为自己的mingw的安装文件夹的位置。或者使用界面设置,右键计算机->属性->高级系统设置->环境变量,添加一条新的。
这时,运行mingw文件夹下msys/1.0/msys.bat,然后就能看到如下图所示界面,通过命令行切换到x264源代码所在目录。
然后输入./configure--enable-shared不出意外地话就能成功了,然后输入make,趁着make的时间我们再来下载一个工具用来将dll导出lib,这个工具名字叫做poxports,下载链接:http://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/,下载之后将poxports.exe放在/mingw/bin目录下,然后等make成功之后执行下面的命令:
pexports d:\\libx264-120.dll >d:\\libx264-120.def
之后打开cmd,切换到x264源代码所在的目录,输入以下命令:(执行这条命令必须确保机器安装了vs2008或者vs2010的vs tools)
lib /machine:x86 /def:libx264-132.def/out:libx264-32.lib
然后就能导出libx264-132.dll和libx264-32.lib
用vs新建工程,将libx264-132.dll和libx264-32.lib放到工程目录下,
从x264文件夹下拷出x264.h与x264_config.h到工程目录下,并添加到工程,
同时再工程设置中添加lib库。编译运行,ok。运行过程可能会提示缺少pthreadGC2.dll,
从网上下载一个就好了。
#include <iostream>
#include <string>
#include "stdint.h"
extern "C"
{
#include "x264.h"
#include "x264_config.h"
};
using namespace std;
int main()
{
x264_param_t param;
x264_param_default(¶m);
return 0;
}
我觉得这个库其实可以编译好了之后直接拿来用就好了,不用每个人都自己编译一遍的,
我将我自己编译的结果进行了打包,但是今天却不能传到csdn上,所以有需要的可以留下邮箱,
我看到之后直接发你邮箱。等之后可以上传了之后我就直接上传上去。
关于具体的这个库的使用我现在也不太会,等学习了之后再更新怎么编程。
我把这个库和我编译好的ffmpeg库都传到了我的github上,需要的点击这里