方法
play
播放
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 不传参数时,续播之前正在播放的节目,或播放 playlist 中第一个。 |
id | Number | 播放指定 id 的声音,若是喜马拉雅声音,播放器会自动发起请求,获取资源后播放;若非喜马拉雅声音,必须是之前在 sounds 参数中配置,否则无法播放。 |
sound | Object | 播放指定的声音,参数对象必须含有 id、src 属性 |
示例
// 参数为空 => 续播之前正在播的节目,或播放 playlist 列表中第一个
// 注意:如果 initLast 参数为 true,直接 play() 播放的是最近一次播放的声音(从缓存中恢复的),
// 而这个声音极有可能是不在最新的 playlist 列表中的
// 进而初始设置的 playlist 会被替换掉,列表中仅剩当前播放的声音 id
// 所以,在 playlist 列表会变动的场景下,尽可能传入参数,去播放指定声音,可以避免此问题。
player.play()
// 播放 id 为 183339305 的喜马拉雅声音
// 如果 playlist 列表中已存在此声音的 id,播放位置会移到此 id 处
// 如果 playlist 列表中不存在此声音的 id,会将 playlist 列表替换为此声音id,即:[183339305]
player.play(183339305)
// 参数为非喜马拉雅声音id,Number 类型 => 查找 sounds 集合中是否有此 id 的声音
// sounds 集合中有此 id 的声音,可播放
// 无此 id 的声音,播放失败
player.play(123)
// 参数为对象 => 必须有 id、src 属性,且有效
// 如果 playlist 列表中已存在此声音的 id,播放位置会移到此 id 处
// 如果 playlist 列表中不存在此声音的 id,会将 playlist 列表替换为此声音id,即:[1]
player.play({
id: 1,
src: 'http://ice1.somafm.com/groovesalad-128-aac'
})
playByIndex
按播放列表索引播放
参数
参数 | 类型 | 说明 |
---|---|---|
index | Number | playlist 数组列表中的索引,从(从0开始,必须是正整数,列表范围内的有效值) |
示例
// 播放 playlist 列表中第一个声音
player.playByIndex(0)
// 播放 playlist 列表中第4个声音
player.playByIndex(3)
pause
暂停
示例
player.pause()
stop
停止(重新播放会从头播)
示例
player.stop()
prev
播放上一个,如果当前已是列表的第一个,会自动切到倒数第一个。
示例
player.prev()
next
播放下一个,如果当前已是列表的最后一个,会自动切到第一个。
示例
player.next()
getPlaylist
获取播放列表,返回原始的 playlist,与播放模式无关。
示例
// 原始播放列表
const playlist = player.getPlaylist()
getCurrentPlaylist
获取当前的播放列表,与播放模式有关,例如:当前是”随机播放“,此时想获取当前播放列表,必须是 getCurrentPlaylist。大部分时候,getPlaylist 和 getCurrentPlaylist 返回的结果相同。
示例
// 当前播放列表
const currentPlaylist = player.getCurrentPlaylist()
getCurrentIndex
获取当前播放声音在(当前)播放列表中的索引,如果是”随机播放“,获取到的是当前播放列表中的索引,而不是原始传入的 playlist 中索引。
示例
// 索引是从0开始的
const index = player.getCurrentIndex()
getSound
获取当前播放的声音
示例
// 当前播放的声音
const sound = player.getSound()
setSound
设置当前播放的声音(通常你不太需要调用这个方法,如果是想播放某个声音,调用
play
即可)。
参数
参数 | 类型 | 说明 |
---|---|---|
sound | Object | 声音对象,必须有 id、src 属性,否则无法播放 |
示例
// 当前的 playlist 播放列表中,如果没有此声音的 id,会将 playlist 列表替换为此声音id,即:[456]
// 通常来讲,没有调用这个方法的场景,而且调用 setSound 当前播放的声音会停止,新的声音也不自动播。
player.setSound({
id: 456,
src: 'http://ice1.somafm.com/groovesalad-128-aac'
})
getSounds
获取声音集合
示例
// 播放器当前的声音集合
const sounds = player.getSounds()
setSounds
设置声音集合
参数
参数 | 类型 | 说明 |
---|---|---|
sounds | Object | 声音集合 |
示例
const sounds = {
"182847535": {
"id": 182847535,
"src": "http://aod.tx.xmcdn.com/group59/M09/3B/54/wKgLelzWfNbQR3a6ABz31eyJjKY954.m4a"
},
"183339305": {
"id": 183339305,
"src": "http://audio.xmcdn.com/group58/M06/6A/D9/wKgLglzZLrDhQ2V_ABbu1ZmT9ls470.m4a"
},
"197491263": {
"id": 197491263,
"src": "http://audio.xmcdn.com/group62/M04/2E/0F/wKgMZ10qFCqxgoFOABDIjrPCwpo708.m4a"
}
}
player.setSounds(sounds)
seek
跳往(拖动)到某播放位置,或返回当前播放位置
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 参数缺省,返回当前播放位置(单位:秒)。 |
position | Number | 播放位置(单位:秒) |
示例
// 返回当前播放位置
const position = player.seek()
// 拖动到10秒位置并播放(如果输入的位置已超出了当前播放声音的总时长,会播放下一个)
player.seek(10)
seekForward
前进,向后(向结束位置)拖动
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 参数缺省,默认值为1,即前进1秒 |
dif | Number | 前进的时间步长,正数(单位:秒) |
示例
// 前进1秒,缺省参数,默认 1
player.seekForward()
// 前进3秒
player.seekForward(3)
seekBack
后退,向前(向开始位置)拖动
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 参数缺省,默认值为1,即后退1秒 |
dif | Number | 后退的时间步长,正数(单位:秒) |
示例
// 后退1秒,参数缺省,默认 1
player.seekBack()
// 后退3秒
player.seekBack(3)
getDuration
获取正在播放音频的总播放时长(单位:秒),直播返回的将是 Infinity,无正在播放音频,返回 NaN。
示例
// 当前播放音频的总时长(单位:秒)
const duration = player.getDuration()
getVolume
获取当前音量(即使静音,也会返回当前音量)
示例
// 当前音量
const volume = player.getVolume()
setVolume
设置音量
IOS 移动设备无法从 js 操控音量,所以setVolume、upVolume、downVolume、mute、unmute
在 IOS 移动设备上都是不能正常工作的。
参数
参数 | 类型 | 说明 |
---|---|---|
volume | Number | 音量,0~1之间的数值 |
示例
// 音量设置为0.9
player.setVolume(0.9)
// 音量设置为0,即静音
player.setVolume(0)
upVolume
音量增大,增大到1即不再继续增大。
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 参数缺省,默认为 0.1 |
dif | Number | 增大的音量步长,0~1 之间的数值 |
示例
// 音量增大 0.1
player.upVolume()
// 音量增大 0.2
player.upVolume(0.2)
downVolume
音量减小,减小到0即不再继续减小。
参数
参数 | 类型 | 说明 |
---|---|---|
空/undefined | -- | 参数缺省,默认为 0.1 |
dif | Number | 减小的音量步长,0~1 之间的数值 |
示例
// 音量减小 0.1
player.downVolume()
// 音量减小 0.2
player.downVolume(0.2)
mute
静音
示例
player.mute()
unmute
恢复音量
示例
player.unmute()
getPlaybackRate
获取当前播放速率
示例
// 当前播放速率
const playbackRate = player.getPlaybackRate()
setPlaybackRate
设置播放速率
参数
参数 | 类型 | 说明 |
---|---|---|
playbackRate | Number | 播放速度,可选值:0.5、1、2、3、4 |
示例
// 设置2倍速度播放
player.setPlaybackRate(2)
getPlayMode
获取播放模式,查看播放模式值
示例
// 当前播放模式
const playMode = player.getPlayMode()
setPlayMode
设置播放模式
参数
参数 | 类型 | 说明 |
---|---|---|
playMode | String | 播放模式,可选的播放模式值 |
示例
// 设置为单个播放,播完即止。
player.setPlayMode('single')
getPlayState
获取当前播放器状态,可能的状态值。
示例
// 播放器当前状态
const playState = player.getPlayState()
// 是否正在播放
const isPlaying = playState === 'playing'
preloadSound
预加载声音,喜马拉雅声音在播放时,是通过接口请求获取到播放地址,所以提供预加载方法,可以提前准备要播放的声音。
参数
参数 | 类型 | 说明 |
---|---|---|
id | Number | 喜马拉雅声音 id |
success | Function | 预加载成功的回调函数 |
error | Function | 预加载失败的回调函数 |
示例
// 预加载某个声音(通常这样调用即可,执行成功后声音被自动加入到 sounds 声音集合中,后续播放时不再发送请求)
player.preloadSound(197807543)
// 回调示例
player.preloadSound(197807543, sound => {
// 成功回调,sound: 预加载成功的声音
}, id => {
// 失败回调,id: 失败时的声音id
})
// 在播放当前声音时,可以预加载当前播放列表中下一个声音
player.on('play', sound => {
// 当前播放列表
const currentPlaylist = player.getCurrentPlaylist()
// 下一个声音在列表中索引
const nextIndex = player.getCurrentIndex() + 1
// 下一个声音的id
const nextSoundID = currentPlaylist[nextIndex]
// 播放器的声音集合
const sounds = player.getSounds()
// 下一个声音存在 + 声音集合中没有此声音 => 预加载这个声音
if(nextSoundID && !sounds[nextSoundID]) {
// 预加载下一个声音(通常这样调用即可,声音被自动加入到 sounds 声音集合中,后续播放时不再发送请求)
player.preloadSound(nextSoundID)
// 预加载声音时,如果想要执行一些自己的操作,可以在 success、error 回调里操作
// player.preloadSound(
// nextSoundID,
// function(sound) {
// // 预加载成功回调
// },
// function(id) {
// // 预加载失败回调
// }
// )
}
})