muplayer『百度音频内核』

—— 跨平台、轻量级音频播放解决方案。

muplayer的Player类(对应player.js)是对外暴露的接口,它封装了音频操作及播放列表(Playlist)逻辑,并屏蔽了对音频内核适配的细节对音频内核适配的细节。
对一般应用场景,只需签出编译后的 dist/js/player.min.js 即可
文档中 player 指代Player的实例。

Player

function
Player()

Player初始化方法

参数说明
名称 类型 描述
options Object
选项 说明
mode 默认值: 'loop'。加入播放器的歌曲列表的播放顺序逻辑,可选值为 'loop'(循环播放),'list'(列表播放,该列表播放到最后一首或第一首后则停止播放),'single'(单曲播放),'random'(单曲随机),'list-random'(列表随机,与random的区别是保证已随机过的列表中歌曲均播放一次后,再对列表随机重置)。
mute 默认值: false。是否静音。
volume 默认值: 80。播放音量,取值范围0 - 100。
engine 初始化Engine,根据传入的engines来指定具体使用FlashCore还是AudioCore来接管播放,当然也可以传入内核列表,Engine会内核所支持的音频格式做自适应。这里只看一下engines参数的可能值(其他参数一般无需配置,如有需要请查看engine.coffee的源码):
 engines: [{
constructor: 'FlashCore',
args: { // 初始化FlashCore的参数
swf: '../dist/swf/fmp.swf' // 对应的swf文件路径
}
}, {
constructor: 'AudioCore'
}]

play

method
Player.prototype.play() ->player

若播放列表中有歌曲就开始播放。会派发 player:play 事件。

参数说明
名称 类型 描述
startTime Number 指定歌曲播放的起始位置,单位:毫秒。

pause

method
Player.prototype.pause() ->player

若player正在播放,则暂停播放 (这时,如果再执行play方法,则从暂停位置继续播放)。会派发 player:pause 事件。

stop

method
Player.prototype.stop() ->player

停止播放,会将当前播放位置重置。即stop后执行play,将从音频头部重新播放。会派发 player:stop 事件。

replay

method
Player.prototype.replay() ->player

stop() + play()的快捷方式。

prev

method
Player.prototype.prev() ->player

播放前一首歌。会派发 player:prev 事件,事件参数:

cur // 调用prev时正在播放的歌曲

next

method
Player.prototype.next() ->player

播放下一首歌。参数auto是布尔值,代表是否是因自动切歌而触发的(比如因为一首歌播放完会自动触发next方法,这时auto为true,其他主动调用auto应为undefined)。
会派发 player:next 事件,事件参数:

auto // 是否为自动切歌
cur  // 调用next时正在播放的歌曲

getCur

method
Player.prototype.getCur() ->String

获取当前歌曲(根据业务逻辑和选链_fetch方法的具体实现可以是音频文件url,也可以是标识id,默认直接传入音频文件url即可)。
如果之前没有主动执行过setCur,则认为播放列表的第一首歌是当前歌曲。

setCur

method
Player.prototype.setCur() ->player

设置当前歌曲。

参数说明
名称 类型 描述
sid String 可以是音频文件url,也可以是音频文件id(如果是文件id,则要自己重写_fetch方法,决定如何根据id获得相应音频的实际地址)。

curPos

method
Player.prototype.curPos() ->Number

当前播进度(单位秒)。

duration

method
Player.prototype.duration() ->Number

单曲总时长(单位秒)。

add

method
Player.prototype.add() ->player

将音频资源添加到播放列表

参数说明
名称 类型 描述
sid String,Array 要添加的单曲资源或标识,为数组则代表批量添加。会派发 player:add 事件。

remove

method
Player.prototype.remove() ->player

从播放列表中移除指定资源,若移除资源后列表为空则触发reset。会派发 player:remove 事件。

参数说明
名称 类型 描述
sid String,Array 要移除的资源标识(与add方法参数相对应)。

reset

method
Player.prototype.reset() ->player

播放列表和内核资源重置。会派发 player:reset 事件。
如有特别需要可以自行扩展,比如通过监听 player:reset 来重置相关业务逻辑的标志位或事件等。

getState

method
Player.prototype.getState() ->String

获取播放内核当前状态。所有可能状态值参见 cfg.coffee 中的 engine.STATES 声明。

setUrl

method
Player.prototype.setUrl() ->player

设置当前播放资源的url。一般而言,这个方法是私有方法,供_fetch等内部方法中调用,客户端无需关心。
但出于调试和灵活性的考虑,依然之暴露为公共方法。

参数说明
名称 类型 描述
url String

getUrl

method
Player.prototype.getUrl() ->String

获取当前播放资源的url。

setVolume

method
Player.prototype.setVolume()

设置播放器音量。

参数说明
名称 类型 描述
volume Number 合法范围:0 - 100,0是静音。注意volume与mute不会相互影响,即便setVolume(0),getMute()的结果依然维持不变。反之亦然。

getVolume

method
Player.prototype.getVolume() ->Number

获取播放器音量。返回值范围:0 - 100

setMute

method
Player.prototype.setMute() ->player

设置是否静音。

参数说明
名称 类型 描述
mute Boolean true为静音,flase为不静音。

getMute

method
Player.prototype.getMute() ->Boolean

获取静音状态。

canPlayType

method
Player.prototype.canPlayType() ->Boolean

检验内核是否支持播放指定的音频格式。

参数说明
名称 类型 描述
type String 标识音频格式(或音频文件后缀)的字符串,如'mp3', 'aac'等。

getSongsNum

method
Player.prototype.getSongsNum() ->Number

播放列表中的歌曲总数。这一个快捷方法,如有更多需求,可自行获取播放列表:player.playlist.list。

setMode

method
Player.prototype.setMode() ->player

设置列表播放的模式。

参数说明
名称 类型 描述
mode String 可选值参见前文对初始化Player方法的options参数描述。

getMode

method
Player.prototype.getMode() ->String

获取列表播放的模式。