# 音视频托管指令

注意

该指令只适用于技能协议v2.1,v2.0中没有该指令

音视频资源托管指令为Response中的一部分,托管后,iFLYOS将会全面托管用户关于音视频控制的指令,你无需实现AudioPlayer ReuqestVideoPlayer

指令 说明
Playback.Delegate 将音视频资源托管给iFLYOS

# Delegate 指令(托管音频)

 {
  "type": "Playback.Delegate",
  "orderedList": true,
  "audioItems": [
    {
      "stream": {
        "type": "AUDIO",
        "url": "https://example.com/audiofile.mp3",
        "token": "S0wiXQZ1rVBkov...",
        "expectedPreviousToken": "f78b7d68...",
        "offsetInMilliseconds": 0
      },
      "metadata": {
        "title": "小幸运",
        "artist": "田馥甄",
        "album": "小幸运",
        "albumId": "xxxxxx",
        "source": "kugou",
        "service": "music",
        "mediaSource": "我的少女时代",
        "duration": 265000,//单位为毫秒
        "index": 1,
        "provider": {
          "name": "酷狗音乐",
          "logo": "https://logo.kugou.com"
        },
        "art": {
          "sources": [
            {
              "url": "https://example.com/brie-album-art.png"
            }
          ]
        },
        "card": {
          "type": "Standard",
          "title": {
            "size":"LARGE|SMALL",
            "text":"小幸运"
          },
          "content":"田馥甄",
          "imageUrl":"https://carfu.com/resources/card-images/race-car-small.png",
          "link": {
            "url":"example.iflyos.cn/",
            "text":"点击查看"
          }
        },
        "backgroundImage": {
          "sources": [
            {
              "url": "https://url-of-the-skill-image.com/brie-background.png"
            }
          ]
        }
      },
      "lyric": {
        "url": "https://url-of-the-lyric.iflyos.cn/xiaoxingyun.lrc",
        "format": "lrc"
      }
    },
     ...   
   ]  
 }

参数说明

参数名 说明 类型 必须出现
type 取值Playback.Delegate String
orderedList 托管列表是否有序。无序列表(如音乐)取值为false,无序列表可列表循环播放,可随机播放;有序列表(如有声书)取值为true,不可列表循环播放,不可随机播放。默认为true Boolean
audioItems 包含所要播放的音频资源列表 List
audioItems.[i].stream 云端音频流信息 Object
audioItems.[i].metadata 音频元数据,这些数据将会展现在有屏设备和APP中 Object
audioItems.[i].lyric 音频歌词信息 Object
audioItems.[i].lyric.url 歌词文件链接 String
audioItems.[i].lyric.format 歌词文件格式,可取值:lrc,txt String

stream 参数说明

参数名 说明 类型 必须出现
type 音频文件的类型,可取值
- AUDIO,音频文件
- SPEECH,合成文本
String
url type取值为AUDIO时,此项必填,音频文件的播放地址。一般情况下是http/https地址,当音频内容是二进制音频附件时,格式为cid:{id} String
text type取值为SPEECH时,此项必填。此处填写需要使用TTS合成为音频文件的文本。 String
token 代表该资源的 token,技能方维护 String
offsetInMilliseconds 客户端从指定的offset开始进行播放 Long

metadata 参数说明

参数名 说明 类型 必须出现
title 音频文件的标题 String
artist 作者/艺术家等信息 String
album 专辑信息 String
albumId 专辑的唯一标识 String
source 音频资源的来源,建议填写版权方 String
service 该信源所处的业务或技能 String
mediaSource 音频文件出现的影视作品信息,比如电影、电视、综艺的名称 String
duration 音频文件的长度,以毫秒为单位 Long
provider 内容提供方的信息 Object
art 音频文件封面,尺寸 960 x 960px Image Object
backgroundImage 播放器背景图片,尺寸 1024 x 768 Image Object
card 用于向设备的关联APP推送消息。支持三种卡片类型:Simple、Standard、List。建议在此处使用Standard。点击查看详情 Object

# Delegate 指令(托管视频)

 {
  "type": "Playback.Delegate",
  "orderedList": true,
  "videoItems": [
    {
      "stream": {
        "type": "VIDEO",
        "url": "https://example.com/videofile.mp4",
        "token": "S0wiXQZ1rVBkov...",
        "expectedPreviousToken": "f78b7d68...",
        "offsetInMilliseconds": 0
      },
      "metadata": {
        "title": "长安十二时辰:第1集",
        "artist": "易烊千玺",
        "album": "长安十二时辰",
        "source": "youku",
        "mediaSource": "长安十二时辰",
        "duration": 2650000,//单位为毫秒
        "service": "video",
        "index": 1,
        "provider": {
          "name": "酷狗音乐",
          "logo": "https://logo.kugou.com"
        },
        "art": {
          "sources": [
            {
              "url": "https://example.com/brie-album-art.png"
            }
          ]
        },
        "card": {
          "type": "Standard",
          "title": {
            "size":"LARGE|SMALL",
            "text":"长按十二时辰:第1集"
          },
          "content":"长按十二时辰",
          "imageUrl":"https://carfu.com/resources/card-images/race-car-small.png",
          "link": {
            "url":"example.iflyos.cn/",
            "text":"点击查看"
          }
        },
     },
   }
   ...   
  ]  
}

参数说明

参数名 说明 类型 必须出现
type 取值Playback.Delegate String
orderedList 托管列表是否有序。无序列表(如短视频)取值为false,无序列表可列表循环播放,可随机播放;有序列表(如电视剧)取值为true,不可列表循环播放,不可随机播放。默认为true Boolean
videoItems 包含所要播放的视频资源列表 List
videoItems.[i].stream 云端视频流信息 Object
videoItems.[i].metadata 视频元数据,这些数据将会展现在有屏设备和APP中 Object

stream 参数说明

参数名 说明 类型 必须出现
type 视频文件的类型,固定取值VIDEO String
url 视频文件的播放地址。一般情况下是http/https地址 String
token 代表该资源的 token,技能方维护 String
offsetInMilliseconds 客户端从指定的offset开始进行播放 Long

metadata 参数说明

参数名 说明 类型 必须出现
title 视频文件的标题 String
artist 作者/艺术家等信息 String
album 专辑信息 String
source 视频资源的来源,建议填写版权方 String
mediaSource 视频文件出现的影视作品信息,比如电影、电视、综艺的名称 String
duration 视频文件的长度,以毫秒为单位 String
index 视频的序号,一般用在有声书或课程类音频,代表第x集 Long
provider 内容提供方的信息 Object
art 视频文件封面 Image Object
card 用于向设备的关联APP推送消息。支持三种卡片类型:Simple、Standard、List。建议在此处使用Standard。点击查看详情 Object

# 使用说明

若使用的该指令,技能的response中的shouldEndSession必须取值为true

若使用了该指令,用户的音频控制都会由音频托管服务进行处理,但你的技能还会接收到以下意图:

意图名称 用户场景 response建议
ivs_next_list_intent 当前正在播放托管列表中的最后一个资源,此时用户请求“下一个” Response中包含Playback.Delegate指令,托管当前列表的后一个列表;包含AudioPlayer.Play指令,播放当前音频的下一个音频
ivs_previous_list_intent 当前正在播放托管列表中的第一个资源,此时用户请求“上一个” Response中包含Playback.Delegate指令,托管当前列表的前一个列表;包含AudioPlayer.Play指令,播放当前音频的上一个音频
ivs_select_intent 播放过程中,用户请求“播放第5集/期/个” Response中包含Playback.Delegate指令,托管一个列表;包含AudioPlayer.Play指令,播放符合用户预期的音频