织梦CMS - 轻松建站从此开始!

罗索

Cygwin 交叉编译 ffmpeg for win ce

罗索客 发布于 2009-10-26 16:10 点击:次 
ffmpeg作为一个开源的比较好的解码库,编码库,音视频播放位一体的程序,很值得参考,虽然直接把他一直到mobile上面效率不佳,但是经过针对arm 汇编优化后的解码库还是不错的。我在我的项目里面准备使用它的解码库,根据自己的实际需要裁减编译成vs2005可用的静态库。
TAG:

  ffmpeg作为一个开源的比较好的解码库,编码库,音视频播放位一体的程序,很值得参考,虽然直接把他一直到mobile上面效率不佳,但是经过针对arm 汇编优化后的解码库还是不错的。我在我的项目里面准备使用它的解码库,根据自己的实际需要裁减编译成vs2005可用的静态库。

  从网上找了很多资源,可是都有头没尾的,自己实际编译了一下。整理供自己以后编译用,呵呵。

  环境:Windows XP 下用Cygwin,cygwin的版本无所谓,安装一个相对完整的cygwin就ok了。

  编译器用cygwin-cegcc-mingw32ce-0.51.0-1,这个是一整个cygwin或者linux下面编译ce程序的工具链。下载地址是http://ncu.dl.sourceforge.net/sourceforge/cegcc/cygwin-cegcc-cegcc-0.51.0-1.tar.gz

  源码:我用的是国外一个播放器裁减的他们在windows ce上面编译过的版本,下载地址为http://nchc.dl.sourceforge.net/sourceforge/ambulant/ffmpeg-wm5.zip  是2009年2月份的一个版本,还可以接受,不是太老。

  下面就开始了:

  1.将cygwin-cegcc-mingw32ce-0.51.0-1解压到 cygwin的安装目录下,如果驻cygwin的安装目录为c:\\cygwin,

   那么解压后cegcc的目录应该为c:\\cygwin\\opt\\mingw32ce

  2.将源码解压,随便你想放到哪里,假设c:\\cygwin\\ffmpegwm5 下面就行

  3.打开cygwin,进入源码目录,如 cd /ffmpegwm5

  4.修改PATH, 在命令行健入 PATH=/opt/mingw32ce/bin:$PATH

  5.开始编译,输入以下configure选项:

./configure --enable-memalign-hack --target-os=mingw32ce --arch=arm --enable-cross-compile
--cross-prefix=arm-wince-mingw32ce- --enable-small
--enable-static --enable-shared
--disable-mmx --disable-zlib --disable-ipv6 --disable-debug
--disable-ffmpeg --disable-ffserver --disable-ffplay
--disable-encoders --disable-network --disable-muxers --disable-decoders --disable-filters
--disable-demuxers --disable-devices --disable-protocols --disable-bsfs --disable-parsers
--enable-decoder=mpeg4
--enable-decoder=h264 --extra-cflags=\"-march=armv4 -mtune=xscale\"

  这个是我自己的,你可以./configure --help来看具体的configure配置选项,还有他的解码库什么的。

  6.打开c:\\cygwin\\opt\\mingw32ce\\arm-wince-mingw32ce\\include\\errno.h 

  注掉  11行 //#ifdef __COREDLL__
        12行 //# include_next <errno.h>
        13行 //#else /* __COREDLL__ */
        107行//#endif /* Not __COREDLL__ */

   当然,你要高兴只把11行改成//#ifdef 0 也行。都一样的。

   然后,按先后顺序,分别进入libavutil,libavcodec,libavformat,分别make,就得到 dll,但是他最后会提示你make:lib command not found之类的错误,这个不要担心,呵呵,是不能生成lib而已。

  7. pexports *.dll > *.def  用这个工具对咱们的dll生成def文件,方便下一步生成lib,这个工具的下载地址是http://www.emmestech.com/software/pexports-0.43/pexports-0.43.zip 下载完了再bin目录下找到这个工具,生成def文件即可。

  8. 生成lib文件。Microsoft Visual Studio 8\\VC\\bin\\lib.exe /def:*.def /MACHINE:ARM 这个就可以生成lib,他中间可能会提示你mspdb80.dll无法找到,这个文件其实有,只是和lib不同路径。解决方法:添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\IDE;,注意结尾最后用“;”。下面在运行就可以生成.lib文件了。具体各个编译器生成lib,dll什么不同的,可以参考 http://www.geocities.com/yongweiwu/stdcall.htm

  9.希望大家喜欢,因为lib我编译出来的不一定适合大家用,就不上了,大家自己编译吧。

  ps:

  很多同学发现这个方法引用函数没有问题,可是在引用dll里面全局变量的时候会有问题。这个主要是因为方法不对,下面给出全局变量的调用办法。

#pragma comment(lib,\"../ffmpeg/lib/avcodec.lib\")
extern AVCodec _declspec(dllimport) h263_decoder;
extern AVCodec _declspec(dllimport) mpeg4_decoder;
extern AVCodec _declspec(dllimport) h264_decoder;

(JesseZhao)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200910/7578.html]
本文出处:博客园 作者:JesseZhao
顶一下
(1)
50%
踩一下
(1)
50%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容