ffmpeg编译(生成Windows Mobile或Wince平台dll, lib)

ffmpeg编译(生成Windows Mobile或Wince平台dll, lib)


介绍:本文简要介绍通过cygwin环境来编译生成ffmpeg。
包括解码组件libfaad与libopencore-amrnb的编译。


1)安装cygwin环境
具体安装过程可以看网上教程
假设装在c:/cygwin

2)安装最新cegcc_mingw32ce_cygwin
从网站http://sourceforge.net/projects/cegcc/files/下载
我安装的是:cegcc_mingw32ce_cygwin1.7_r1375.tar.bz2
解压缩至c:/cygwin/目录下,可以看到目录C:/cygwin/opt/mingw32ce_59/(我将mingw32ce改成了mingw32ce_59)

3)修改mingw32ce_59/arm-mingw32ce/include/errno.h文件,如下
//change for wince
//#ifdef __COREDLL__
#if 0

3)下载最新ffmpeg源码
我用的是:ffmpeg-export-2009-12-22版(即:SVN-r20910-snapshot)
解压缩至e:/ffmpeg_r20910_wm

4)修改e:/ffmpeg_r20910_wm/common.h文件,如下:
#ifndef av_cold
//GCC on MinGW has bug on "cold" feature
//#if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,3)
#if 0

如果文件存在,可能还需修改e:/ffmpeg_r20910_wm/libavodec/dsputil_arm.S文件尾部,如下:
将bx              lr 替换成:
#if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_3__) /
|| defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__)
 mov  pc, lr
#else
        bx              lr
#endif

5)按需下载各解码组件,如
faad2-2.7.zip  (AAC解码组件)
opencore-amr-0.1.2.tar.gz (amr解码组件)
新建e:/ffmpeg_r20910_wm/codecs目录,将组件放入其中

6)编译各解码组件
6.1)设置编译环境
PATH=$PATH:/opt/mingw32ce_59/bin
6.2)libfaad
解压缩faad2-2.7.zip,依次执行
autoreconf -ivf
./configure --host=arm-mingw32ce --enable-static --disable-shared --prefix=/mobile
make (编译时出错mp4ffint.h什么的,不用管,libfaad.a已经生成)
make install
6.3)libopencore-amr
解压缩opencore-amr-0.1.2.tar.gz,依次执行
./configure --host=arm-mingw32ce --enable-static --disable-shared --prefix=/mobile
make (编译时出错perrror什么的,不用管,libopencore-amrnb.a libopencore-amrwb.a已经生成)
make install

7)编译ffmpeg
./configure --enable-memalign-hack --prefix=/mobile --target-os=mingw32ce --arch=arm --enable-cross-compile --cross-prefix=arm-mingw32ce- --

enable-libfaad --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-small --disable-static --enable-shared --enable-gpl --enable-

version3 --disable-mmx --disable-zlib --disable-ipv6 --disable-debug --disable-ffplay --disable-ffmpeg --disable-ffserver --disable-encoders

--disable-network --disable-muxers --extra-ldflags="-L/mobile/lib" --extra-cflags="-I/mobile/include -march=armv4 -mtune=xscale"
此命令太长,可以将命令写入到sh文件(如doConfigure.sh)来执行。(出现libvdpau>=0.2提示,不用管)
make
make install

8)生成lib文件
将/mobile/bin/下的所有DLL拷贝出来(通过Windows查找),放入/Microsoft Visual Studio 8/VC/bin/DLL目录中,
按大小排序,删除一些1k左右的DLL,剩下的DLL改名,如avcodec-52.43.0.dll->avcodec-52.dll。
将生成的所有def文件也拷贝出来,放入同一目录下。
添加本机系统环境变量PATH->C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;,注意结尾最后用“;”
在cmd命令行下,用/Microsoft Visual Studio 8/VC/bin/lib.exe /def:*.def /MACHINE:ARM 来生成LIB

 

以上编译后的DLL我自己在Windows Mobile平台上运行过,可以播放。有问题欢迎回贴讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值