Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60403
  • 博文数量: 11
  • 博客积分: 546
  • 博客等级: 中士
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-19 20:00
文章分类
文章存档

2010年(11)

分类: 嵌入式

2010-09-21 21:39:42

  为了能在android平台上播放全格式的多媒体文件,我们需要自己做一个多媒体播放器。android自带的opencore系统解码格式较少,只支持mp4和ogg,并且结构不是很好理解。如果要加其他的解码方式实在太费劲。经过考虑,基于ffmpeg实现全功能的播放器比较容易并且成本比较低。
  本文讨论制作全格式多媒体播放器的第一步:ffmpeg 移植。

  第一步:得到别人已经移植过的一个比较旧的android平台上的ffmpeg。地址为 ~olvaffe/ffmpeg/ffmpeg-android ,我们将使用其*.mk 文件。我将此源码放到一个临时目录中。

  第二步:得到新版本的ffmpeg。地址为 。一般用git clone 得到。我将源码放到了android源码树的external/目录下。

  第三步:configure ffmpeg ,目的是得到android平台上的config.mak和config.h文件。所以只需要configure成功即可,不必编译,稍候我们会在android源码树下编译。
export PREBUILT=/home/Dev/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
./configure --target-os=linux
--arch=armv41
--enable-cross-compile
--cc=$PREBUILT/bin/arm-eabi-gcc
--cross-prefix=$PREBUILT/bin/arm-eabi-
--nm=$PREBUILT/bin/arm-eabi-nm
--extra-cflags="-fPIC -DANDROID"
--enable-static
--disable-shared
--disable-asm
--disable-yasm
--prefix=`pwd`/android_bin
--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=/home/Dev/android/out/target/product/generic/obj/lib -L/home/Dev/android/out/target/product/generic/obj/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"
解释一下,PREBUILT为我的android编译器路径,我使用的是android源码树下的tool-chian。configure命令中除了目录可能不一样外,其他的应该不需要做改动。

  第四步:将临时目录中的ffmpeg-android下的*.mk拷贝到android源码树的external/ffmpeg目录下。这样就完成了移植。(这一步中,可能需要做修改,我将需要修改的文件打了个包,放在附件中)

  第五步:在android目录下make libavutil libavcodec libavformat libswscale。

注:我已经基于最新的ffmpeg(0.6版本-git-6157eab)做的改动上传了。你只需要将附件解压,并替换源ffmpeg中相应的文件,即可直接执行第五步。
文件:changes.tar.bz2
大小:16KB
下载:下载

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

chinaunix网友2010-10-14 12:16:50

现在meego的系统包含的多媒体方面功能比较全面,看来要超越android,建议考虑meego平台做手机开发。

chinaunix网友2010-10-12 23:29:59

哎 年初我就曾经为这个问题头痛过 当时编这玩意花了两天时间 后来一次与别人交谈的时候 他告诉我 FFMPEG是需要你的软件公开代码的 否则就不允许使用 这样一来,在商业上就可用余地就大大减少了