MPlayer往Android上的移植(1) - houdiney的专栏 - CSDN博客

来源:百度文库 编辑:神马文学网 时间:2024/05/01 05:18:38

MPlayer往Android上的移植(1)收藏

    把mplayer往android上移植有近二十天了,现在终于可以开始第二个阶段了,即把mplayer的音视频输出往Android的机制里面加。

    之前遇到好多问题,前面的过程大概分了三个小步骤:

   1.把mplayer本身在Android里面能够编译,生成mplayer。这步没有把mplayer里面ffmpeg的两个库libavcodec和libavformat加进去,因为开始还编译不过。这一步困难的地方在于有个函数在Android的glibc中没有,被裁减掉了。需要自己下载一份BSD的glibc,然后给它添加上。(Android的glibc从BSD裁减过来的。),等到把mplayer生成能运行了,开始再加ffmpeg部分,花了一个星期都没成,一堆的错误,屏幕上都显示不过来了...

   2.看来还是单独先移植下ffmpeg吧。这步生成几个库容易,但问题是链接生成ffmpeg程序麻烦了点,也改了下bionic,csdn上有个jl兄弟在blog上讲过在编译时遇到一些问题加#include,但不知道他有没有用来生成可执行文件,还是只生成库就够了。要生成可执行文件,还是要改改bionic的。终于,在上周末ffmpeg生成了,能转视频格式了。

   3.既然mplayer本身已经可以了,ffmpeg也可以了,合起来就应该不怎么费事了。昨天很快就把mplayer下的ffmpeg的几个库加进去了,顺便再把libfaad和libmpeg2给加进去,在Android上一运行,音频设备打不开,情理之中的事了,Android给占用了。这就是下一大步的事了。视频给它在/dev下把graphics下的设备链一个到设备符fb0,居然能显示,只是一会有一会无,莫非是mplayer在和Android的surface打架吗?

    下面开始先把音频输出到Android的AudioFlinger上面去...

发表于 @2009年08月04日 09:27:00 | 评论( 7) | 编辑| 举报| 收藏

旧一篇:转:启动过程 | 新一篇:MPlayer往Android上的移植(2)

查看最新精华文章 请访问博客首页相关文章
最新版本mplayer移植pxa270成功!
Windows下FFmpeg快速入门
x264编译,dll
FFMPEG笔记1
我的ffmpeg移植日记(1)
Android上ffmpeg移植(2)
SIP与RTP综合应用4
附录4:为何不能运用动态链接库?
jinlking 发表于2009年08月06日 星期四 00时12分56秒  IP:举报回复删除
哈哈,生成库就够用了啊,难道你还要用Android来做视频转换器,在上层应用的时候还是用Java写比较好。
houdiney 发表于2009年08月06日 星期四 09时36分05秒  IP:举报回复删除
谢谢大侠指教啊
jinlking 发表于2009年08月06日 星期四 17时49分47秒  IP:举报回复删除
你编译MPLayer,然后指定一个fb0,但是Android框架也是用的这个显示驱动设备,所以你Mplayer需要刷新的时候就会使用fb0把视频数据刷到显存,但是android框架也会使用这个驱动,他们之间是完全独立的(因为你根本没有吧他们联系起来),但是显示设备只有一个,所以你的屏幕就会一闪一闪,谁需要刷屏的时候就交给谁,我在写c的opengles程序在模拟器上运行也碰到这个问题,就是你必须要把你的显示集成到Surface里面,这样才能解决问题。
houdiney 发表于2009年08月06日 星期四 20时17分06秒  IP:举报回复删除
是啊是啊,所以把MPlayer解码后的音频和视频分别都输出到Android系统的AudioFlinger和SurfaceFlinger就是我第二阶段的事情。音频还差一点就快好了,主要是对C 不怎么熟练。
kikicat0_0 发表于2009年09月16日 星期三 10时52分15秒  IP:举报回复删除
能不能利用libavcodec和libavformat做成OpenCore的Component,这样就不用去烦跟AudioFlinger和SurfaceFlinger整合的事情了。
offbye 发表于2009年11月10日 星期二 12时57分06秒  IP:举报回复删除
现在 移植的进度怎么样了啊 ?
匿名用户 发表于2010年01月17日 星期日 20时08分45秒  IP:举报回复删除
能否将你所做的工作都公开啊,,如被你改动过的源代码、编译步骤等,这样,大家可以一起工作,你可以在Google Code开一个源代码库,以后代码就可以通过SVN一起合作开发了啊。