原因:从网上下载的ffmpeg sdk比较全,但是却不能定制,所以打算使用ffmpeg msys编译出来,自己提取sdk。
1.使用msys集成开发包,(集成了很多东东),
2.编译ffmpeg0.8.5,下载src,tar,
./configure --enable-shared --disable-static --enable-memalign-hack --enable-debug=2
make && make install
执行过make install后在X:/msys/1.0/local/就有了相应的文件了,include,lib,主要需要include,lib拷贝出来放到任何一个目录下(vs2005测试用),比如放置到c\:ffmpeg下,现在直接使用这个sdk还有问题,主要就是缺少两个文件和UINT64_C错误,从ffmpeg full sdk中拷贝缺少的文件,然后在comm.h的增加
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
到这里应该可以编译成功
测试文件:
建立一个vs2005的控制台程序
#extern "C"
{
#include <libavcodec/avcodec.h>
...
};
#paragma comment(lib, "libavcodec.dll.a")//这样也可以,不需要改正lib
int _tmain(int argc, _TCHAR* argv[])
{
avcodec_register_all();
return 0;
}
在这里只是简单的测试下函数能否调用成功,具体编解码就没有测试了,ffmpeg还是菜鸡。
其他问题:
在用m sys编译的过程中,默认SDL是不support的,需要自己从SDL网站上download,自己编译。
解决:使用hg代码管理工具,下载1.2.1版本,高版本的好像不支持,下载后解压到msys/1.0/home/Admin.../下,tar -xvf SDL....
./configure --prefix = /usr && make && make install
这样就可以用SDL库了,注意需要--prefix = /usr ,否则的话在ffmpeg configure过程中还是搜索不到sdl,从网上查过,应该是安装路径问题。
使用SDL后,ffmpeg的log信息没有了
解决:修改config.mak中查找到SDL编译参数部分,取出-mwindows选项,具体什么东东不知道。现在在ffmpeg 中增加av_log看看效果已经可以 log了。
需要yasm,baidu一下,搞定
msys的安装包,具体从那down的不记得了,保存在我QQ上,要的话给我email.(251668236@qq.com)