Chinaunix首页 | 论坛 | 博客
  • 博客访问: 520760
  • 博文数量: 86
  • 博客积分: 1076
  • 博客等级: 准尉
  • 技术积分: 1018
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-02 19:15
文章分类

全部博文(86)

文章存档

2013年(15)

2012年(69)

2011年(2)

分类: Android平台

2013-05-17 17:48:57

    最近要移植一个ffmpeg版本到android,当然有两种方式,一种是NDK编译方式,网上有很多的资料,例如:http://blog.sina.com.cn/s/blog_4868f98601016o4e.html 《ffmpeg neon优化必看》。
    但是也比较麻烦,我这里介绍一种交叉编译方式,这样就可以像gcc编译一样,configure、make、make install了。

    同时,这里需要ffmpeg支持NEON图像加速指令,这对视频的解码性能有及其重要的影响,那么应该如何正确移植ffmpeg neon版本呢?
    (本文参照了VLC for android的相关代码)

    首先是configure,例如:

  1. ./configure --prefix=xxx/arm-linux-androideabi --enable-cross-compile --target-os=linux --arch=arm --cpu=cortex-a8 --enable-neon --cross-prefix=arm-linux-androideabi-

    然后就可以直接make和make install了。
    你可以查看ffmpeg/libavcodec/arm/目录下的一些带neon的汇编源码是否参与了编译,按照上述编译,肯定是编译了的。
    但是有一点奇怪的,config.h里面的配置仍然是#define HAVE_NEON 0,但是确实是优化过了的。

    需要补充的是,这里的交叉编译工具链是从NDK中提取出来的,可以参照之前的博文http://blog.chinaunix.net/uid-25272011-id-3491368.html 制作一个android编译工具,下载一个ffmpeg的版本,我这里采用的是ffmpeg-0.8.14的版本。
    我的工程是VLC改编的,这样链接了这个ffmpeg版本,解码视频的性能明显提升了不少。


阅读(3241) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

jgfntu2013-09-24 15:48:38

你好,我采用的是比较老的vlc版本移植的android版本,所以编译ffmpeg的脚本是另外写的。其实,我现在发现了更好的编译方式,也就是vplayer的ffmpeg-android的编译脚本,写的非常的好,给个链接你https://github.com/yixia/FFmpeg-Android
希望对你有帮助

回复 | 举报