android 音频播放

项目在做播放器的时候,遇到了点麻烦事情。别人的播放器加载网络数据都特别快,我的播放器特别慢,查了一下,Mediaplayer 在prepare卡很久。具体原因目前还不清楚,如果有知道可以留言 感谢。

用户体验非常差,
我就思考了2个解决方案:
1、自己写一个缓存,从服务器上取,取完以后喂个自己的播放器使用。
优点:流程都可以控制,出了问题可以很好解决
缺点:有一定的工作连,要修改现在的代码,代码要迭代

2、找个开源的框架
优点:省时省力
缺点:不可控因素比较多

我就尝试了第二种,我就网上看了看大家都用什么播放。
先尝试了 B站开源的 ijkplayer 我拿来做音频类的播放器

地址
https://github.com/Bilibili/ijkplayer

导入到项目,很简单,去github上看一看就可以了
(FFmpeg库功能强大,如果手动自己编译库,可以做一些裁剪等,大家有兴趣自己了解下)

我主要播放用到 IjkMediaPlayer这个类,使用方法和Android MediaPlayer差距不大,唯一就是他只有异步 prepareAsync 没有同步 并且当他prepaered 以后会马上调用播放,都不用你调用,比如我都不打算让他播,他就播了 我只好调用pause

代码重构很简单 改一下类基本上就完成了

node:在重构之前我先去试了试 加载一个网络MP3 大概0.3秒 感觉很快
当我集成到项目中 发现了问题
我加载大文件,很快
当我加载小文件,如1M的文件 会发现巨慢无比

尝试下改变buffer大小等 但是好像没什么效果。改了改buffer还是 有问题 果断放弃了
可能人家是专门做视频的 或者说我哪里设置有问题

推荐另外一个FFmpegMediaPlayer
https://github.com/wseemann/FFmpegMediaPlayer
这个试用了一下 没有什么问题 封装的和原生的一样 大家可以试试
可能潜在问题,不能确定 ,服务器开销可能增大,待确定

你可能感兴趣的:(android 音频播放)