6. 编译ffmpeg,链接libx264,libfaac,libfaad
确保libx264,libfaac,libfaad都是静态库
Ffmpeg编译会出现很多问题,我们首先从配置configure文件开始
#cd ffmpeg
#./configure \
--enable-memalign-hack \
--target-os=mingw32ce \
--arch=arm \
--enable-cross-compile \
--prefix=/wm \
--extra-cflags=-I/wm/include \
--extra-ldflags=-L/wm/lib \
--cross-prefix=arm-mingw32ce- \
--enable-small \
--enable-gpl \
--enable-shared \
--disable-static \
--disable-mmx \
--disable-zlib \
--disable-ipv6 \
--disable-debug \
--disable-ffmpeg \
--disable-ffserver \
--disable-ffplay \
--disable-vhook \
--disable-encoders \
--disable-network \
--disable-muxers \
--disable-decoders \
--disable-filters \
--disable-demuxers \
--disable-devices \
--disable-protocols \
--disable-bsfs \
--disable-parsers \
--enable-libfaac \
--enable-encoder=libfaac \
--enable-libfaad \
--enable-decoder=libfaad \
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--extra-cflags="-march=armv4 -mtune=xscale"
由于命令过长,可以写一个shell脚本,然后把这些贴过去
此时,大部分都会出现libx264 not found错误
解决方法:
打开configure文件,找到"enable libx264 && require llibx264 x264.h x264_encoder_open -lx264 -lm"这一行,改为"enabled libx264 && require2 libx264 "stdint.h x264.h" x264_encoder_open_84 -lx264 -lm",有的ffmpeg中不是x264_encoder_open而是x264_encoder_init,照样可以这样更改。
#cd libavutil
#make
这里面不会有错误,但是请注意:
如果在cygwin中导入了微软提供的lib命令,你注意看命令行就会发现有问题:
Lib /MACHINE:i386 /DEF:libavutil-49.def /OUT:libavutil-49.lib
注意到了没:i386
我们是要放到手机上运行了,所以最起码得是arm
所以我们自己手动输入如下命令:
Lib /MACHINE:arm /DEF:libavutil-49.def /OUT:libavutil-49.lib
#make install
#cd libavcodec
#make
这里会出现错误,一般都是文件后缀为.s的文件,可悲的是,我对汇编感冒,只能到网上求助,不过幸好有解决方法:
打开出错的文件,将所有的func替换为.global,注释掉endfunc,再次编译,出现新的错误,然后根据错误提示的行数,注释掉!
#make install
#cd libavformat
#make
#make install
这个format太好了,什么错误都没有
从此可以运行在wince上的ffmpeg包括libx264,libaac,libaad编译完成,可以运行了。
转载于:https://blog.51cto.com/nyyzpp/536251