# 播放控制
# 协议类型
| 消息类型 | 名称 | 必须实现 | 
|---|---|---|
| event | control_command | 否,需云端支持播放控制才需实现 | 
应用场景
当用户在设备上通过按键/界面控制音频播放时,可以发送请求告知云端,云端会根据请求命令返回一个音频资源,终端设备需等待云端的返回并进行对应的执行。
注意
- 当用户在设备上通过按键/界面控制资源播放时,如果可以在设备上自行处理该用户请求(终端已获取播放列表),请自行在设备上进行处理,无需发送请求至云端
 - 如果无法在设备上自行处理该用户请求,可以发送
playback_controller.control_command,由云端判断用户控制的是什么资源 - 为了防止网络状态不好时用户无法暂停资源播放,用户点击PAUSE按钮,设备必须在设备上自行处理暂停操作
 
# context
"unios_context": {
  ...
  "playback_controller": {
    "version": "1.0"
  },
  ...
}
 1
2
3
4
5
6
7
2
3
4
5
6
7
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| version | string | 模块版本,现在是1.0 | 是 | 
# event
播放控制
请求示例
{
  "unios_header": {...},
  "unios_context": {...},
  "unios_event": {
    "header": {
      "name": "playback_controller.control_command",
      "message_id": "xxxxxxxx"
    },
    "payload": {
      "type": "PAUSE",
      "resource_id":"xxxxxx",
      "offset":15000,
    }
  }
}
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 参数 | 类型 | 说明 | 必填 | 
|---|---|---|---|
| unios_header | Object | 构建的通用 unios_header | 是 | 
| unios_context | Object | 构建的通用 unios_context | 是 | 
| type | String | 状态类型,详细信息见下表 | 是 | 
| resource_id | String | 当前播放资源ID | 否 | 
| offset | Integer | 当前播放位置 | 否 | 
| target_offset | Integer | 目标播放位置 | 否 | 
type类型说明
| type类型 | 说明 | 是否有回复 | 
|---|---|---|
| PAUSE | 执行了暂停动作之后,发送此类型并告知当前 resource_id | 是,得到pause回复 | 
| RESUME | 执行了继续播放之后,发送此类型并告知当前 resource_id | 是,会收到一个带offset的播放内容,应该优先用offset进行播放对应资源 | 
| NEXT | 按键下一首,发送此类型并告知当前 resource_id | 是,得到下一首内容 | 
| PREVIOUS | 按键上一首,发送此类型并告知当前 resource_id | 是,得到上一首内容 | 
| FAST_FORWARD | 快进,发送此类型并告知当前 resource_id、offset、target_offset | 是,会收到一个带offset的播放内容,应该优先用offset进行播放对应资源(如果上传target_offset,则回复中的offset值为target_offset的值,常见场景:用户滑动播放器中的滚动条时的快进快退) | 
| FAST_REWIND | 快退,发送此类型并告知当前 resource_id、offset、target_offset | 是,会收到一个带offset的播放内容,应该优先用offset进行播放对应资源(如果上传target_offset,则回复中的offset值为target_offset的值,常见场景:用户滑动播放器中的滚动条时的快进快退) | 
| EXIT | 按键关闭,发送此类型消息并告知当前resource_id | 否 |