# 视频播放器

消息类型 名称 必须实现
response video_out 否,设备需要支持视频播放才需实现
request progress_sync 否,设备需要支持视频播放才需实现

# context

"iflyos_context": {
  ...
  "video_player": {
    "version": "1.0",
    "state": "IDLE",
    "resource_id": "xxxx",
    "offset": 3000    
  },
  ...
}
参数 类型 说明 必填
version String 模块版本,现在是1.0
state String 视频播放器的状态,取值:
- IDLE(未运行/被关闭)
- PLAYING(播放中)
- PAUSED(暂停中)
resource_id String 视频内容的ID。state取值为PLAYING和PAUSED时必须出现
offset Long 视频内容的播放进度。若设备无法获取,可不出现。该字段不出现时,会在某些场景影响用户体验。

注意

video_player运行中,若打开其他app,video_player需要关闭。

版本说明

版本 说明 更新日期
1.0 基础实现 2019-08-13
1.0 增加recommend字段,表示视频推荐内容 2020-02-19

# response

# 视频播放

当你接收到视频播放指令的时候,你需要使用合适的视频播放器来播放里面的内容。

回复示例

{
  "iflyos_responses": [
    ...,
    {
      "header": {
        "name": "video_player.video_out"
      },
      "payload": {
        "url": "https://music.iflyos.cn/tts/sadf.mp3?token=xxxxxxxx",
        "control": "PLAY",
        "behavior": "UPCOMING",
        "resource_id": "e52e7xxxxxxxxxxxe52e7",
        "offset": 3000,
        "recommend": {
          "url" : "xxxxx"
        }
      }
    }
  ]
}
参数 类型 说明 必有
control String 播放器控制,取值: PLAY: 播放 PAUSE: 暂停 RESUME: 继续播放EXIT: 关闭播放器
behavior String 资源播放方式: - IMMEDIATELY: 马上播放,收到资源资源之后必须马上播放 - UPCOMING: 即将播放,收到资源后必须在当前设备播放队列播放完毕之后播放,可以先行预加载。当设备已有预加载内容的情况下,再次收到UPCOMING的内容时,需要把设备已预加载的内容清除,再预加载。,当controlPLAY才会出现
url String 内容播放地址,当controlPLAY才会出现
resource_id String 内容ID,当controlPLAY才会出现
offset String 播放位置,常见于快进快退,和某些暂停播放,单位为毫秒,当controlPLAY才会出现
recommend.url String 推荐内容,iFLYOS会对一些内容进行相关推荐。如果你收到这个内容,请调用接口传输该url的内容

说明

当用户说“继续播放”时:

  1. 若你的设备没有上报offset,你收到的iflyos_response如下:
{
  "iflyos_responses": [
    ...,
    {
      "header": {
        "name": "video_player.video_out"
      },
      "payload": {
        "control": "RESUME"
      }
    }
  ]
}
  1. 若你的设备有上报offset,你收到的iflyos_resposne如下:
{
  "iflyos_responses": [
    ...,
    {//表示从`offset`指定的位置开始播放音频
      "header": {
        "name": "video_player.video_out"
      },
      "payload": {
        "url": "https://music.iflyos.cn/tts/sadf.mp3?token=xxxxxxxx",//视频播放链接
        "control": "PLAY",
        "behavior": "IMMEDIATELY",
        "resource_id": "e52e7xxxxxxxxxxxe52e7",//视频内容ID
        "offset": 3000//设备上报的当前视频的播放进度
      }
    }
  ]
}

# request

# 播放进度同步

在 iFLYOS 中我们使用播放器信息同步来同步多端信息同步,比如在手机上显示播放内容。同时也使用播放信息同步的方式来获取音乐的下一首资源等等,所以你必须实现好本接口

请求示例

{
  "iflyos_header": {...},
  "iflyos_context": {...},
  "iflyos_request": {
    "header": {
      "name": "video_player.progress_sync",
      "request_id": "xxxxxxxx"
    },
    "payload": {
      "type": "STARTED",
      "resource_id": "xxxxx",
      "offset": 60000,
      "failure_code": 1001
    }
  }
}
参数 类型 说明 必填
iflyos_header Object 构建的通用 iflyos_header
iflyos_context Object 构建的通用 iflyos_context
type String 状态类型,详细信息见下表
resource_id String 该请求对应的内容ID。若为播放失败,则此处为失败的内容ID
offset String 内容的播放进度,若你的设备无法获取该字段,可不传。
failure_code Long 错误代码,type为 FAILED 时,必填。取值1001~1005,代码含义见下表

type 取值说明:

type 类型 说明 是否有回复 必须发送
STARTED 播放开始播放的时候,发送此类型并告知 resource_id,手机端可获得播放内容信息
FAILED 播放失败的时候,发送此类型并告知播放失败的 resource_id,云端会下发其他内容 可能得到一个新的内容
NEARLY_FINISHED 音频播放即将结束,一般取内容的1/3的时间长度,如果在小内存系统中,可以选择结束前10秒或者播放开始后30秒 可能回复下一首的资源
FINISHED 播放结束时候发送此类型,发送此类型并告知 resource_id

failure_code 取值说明:

code 错误类型值 描述
1001 MEDIA_ERROR_UNKNOWN 发生了未知错误
1002 MEDIA_ERROR_INVALID_REQUEST 请求无效。可能的情况有:bad request, unauthorized, forbidden, not found等。
1003 MEDIA_ERROR_SERVICE_UNAVAILABLE 设备端无法获取音频文件
1004 MEDIA_ERROR_INTERNAL_SERVER_ERROR 服务端接收了请求但未能正确处理
1005 MEDIA_ERROR_INTERNAL_DEVICE_ERROR 设备端内部错误

# 文件限制

EVS 支持视频文件格式为: mp4, m4a, wav,单个文件的大小不得超过100M。