admin管理员组

文章数量:1605635

[TOC]

0x00 需求

单曲循环播放歌曲,要求过度连贯,听不出来卡顿感觉。

0x01 解决思路

MediaPlayer

对于常见的音乐播放,我们第一时间想到的应该就是它,它有一个方法

MediaPlayer.setLooping(true);

就是用来进行单曲循环的。但是很遗憾,如果你简单的这么做,上面的目的是达不到的,会出现上一遍结束出现一个明显的停止才开始播放下一次的现象。

不过最后就是用的这个组件,不过不是简单的设置 setLooping(true)。

SoundPool

一段时间内可能会播放很多音乐的时候,我们首先应该选择这个。

第三方组件

如果没有特殊的需求,这个不是首选,特别是当引入的组件特别重的时候。

因为之前踩过坑:iOS上直接播放mp3文件,单曲循环的时候播放的间隙特别长,卡顿的感觉无法接受,解决方法是将mp3转换成m4a,基本上听不出中间的过度间隙。

首先尝试了使用 MediaPlayer 来播放,在我的机器(MX4 Pro)上播放还勉强能接受,间隙不是非常明显,换到配置差一点的机器上就不能忍了。然后尝试了 SoudPool ,无论是预加载一次循环播放,还是预加载两次循环播放,中间的卡顿感觉和用 MediaPlayer.setLooping(true); 一样一样的。再然后,尝试macOS 下编译 vlc for android ,我失败了╮(╯▽╰)╭)问题总要解决的,再找其他办法。

0x02 死循环

找了很多资料,最后使用一个循环

本文标签: 单曲播放器音乐androidmediaplayer