LLVM BLOG

使用android ndk r9 编译ffmpeg 2.0.1(附件更新)

  最近趁着有空将ffmpeg 2.0.1版做了次android移植,关于ffmpeg的移植文章在网上可以说是非常多了,但是在2.0.1的移植过程中还是出现了不少问题,特此记录,以备查阅。
  参考文章:  http://my.oschina.net/wangqin/blog/80345
 
  个人开发环境:
  Linux Mint 15(X64)  android-ndk-r9 (linux X86 32bit)   

  个人移植工程目录结构如下:

  ffmpeg_android  工程主目录
     |--jni
         |--audiocore  存放ffmpeg库测试代码
         |--ffmpeg     存放ffmpgeg源码

  相同的地方不再重复叙述,以免给人盗贴之嫌。

 
  首先创建移植配置脚本preconfig.sh和各个模块的Android.mk, 内容见附件:
  使用傲本前请将ndk目录安实际替换 

  原本想用android ndk最新的4.8 toolchain, 可视在预配置脚本执行过程中会报错,换用4.6版本的toolchain可以顺利通过。  
  提示错误如下(暂时未能解决):
  /home/mike/devtool/android-ndk-r9/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
  is unable to create an executable file. C compiler test failed.
 
  根据参考链接进行相应文件修改。 
 
  附加修改:
  将libavutil/time.h改名libavutil/avtime.h
   
libavutil/time.c改名libavutil/avtime.c 
 
 
将以下文件中的"libavutil/time.h"作相应修改

  ffmpeg.c
  ffplay.c
  ffserver.c
  libavcodec/fft-test.c
  libavcodec/dct-test.c
  libavcodec/motion-test.c
  libavformat/rtspenc.c
  libavformat/utils.c
  libavformat/hls.c
  libavformat/sapenc.c
  libavformat/rtspdec.c
  libavformat/network.c
  libavformat/rtpdec.c
  libavformat/rtsp.c
  libavformat/mux.c:37
  libavformat/hlsproto.c
  libavformat/ftp.c
  libavformat/udp.c
  libavformat/rtmphttp.c
  libavformat/tcp.c
  libavformat/avio.c
  libavutil/avtime.c
  libavutil/des.c

  
  将libavfilter下Makefile中的如下内容删除或是注释
  #clean::
  #$(RM) $(CLEANSUFFIXES:%=libavfilter/libmpcodecs/%)
 
 将以下文件中的"#include <stdlib.h>"注释(android ndk在编译时总是报错,注释后顺利通过)
  libavcodec/dcahuff.h
  libavcodec/put_bits.h
  libavcodec/utils.c
  libmpcodecs/mp_image.c
  libmpcodecs/mp_image.h
  libavformat/avlanguage.c
  libavformat/file.c
  libavformat/mux.c
  libavformat/rpl.c
  libavutil/avassert.h
  libavutil/common.h
  libavutil/log.c
  libavutil/mem.c
  libavutil/samplefmt.c
  libavutil/timer.h
  libpostproc/postprocess.c
  执行预配置脚本
  ./preconfig.sh

 
 修改libavutil/attributes.h
 #define av_restrict restrict
 
改为 
 #define av_restrict
 
  使用ndk-build命令编译
  如果没有特殊问题,应该可以顺利完成编译。
 
  原来的bz2压缩包无法正常解压缩,已经更新为zip包。
  附件下载:android ffmpeg makefile 压缩包
   
  
  

posted on 2013-10-29 15:40 LLVM 阅读(5080) 评论(0)  编辑 收藏 引用 所属分类: android


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


My Links

Blog Stats

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜