互动视频开放协议
引言
编写目的
本文档提供了一套互动视频开放协议,以实现内容创作者的快速接入及互动视频技术的推广和应用。
预期读者和阅读建议
本文档开放给互动视频内容创作者、互动视频从业者等相关人员参考。
文档输入
《互动视频基础指南》中提供了关于互动视频的详细介绍,该文档可在爱奇艺APP中,“我的”-“关于我们”-“互动视频标准”中查看。
术语
(英文缩写) | (英文全称) | (中文全称) |
---|---|---|
IV | Interact Video | 互动视频 |
IVP | Interact Video Platform | 互动视频平台 |
IVG | Interact Video Guidelines | 互动视频标准 |
IVE | Interact Video Engine | 互动视频引擎 |
IVS | Interact Video Service | 互动视频服务 |
互动视频(IV)
互动视频(IV)是一种全新的视频类型。旨在通过增强体感反馈、剧情参与、内容探索等方式为用户带来更加丰富的观看体验。
互动视频标准(IVG)
互动视频标准(IVG)定义了一系列互动视频生产流程和标准。旨在通过可实操的标准,降低内容创作者、软件工具等各方参与互动视频领域的门槛,促进各方对互动视频领域的探索。
互动视频平台(IVP)
互动视频平台(IVP)是为视频添加互动能力的平台。旨在通过将互动能力添加环节与视频拍摄、剪辑的整个制作流程深度结合,帮助内容创作者便捷高效地打造出高品质的互动视频。
互动视频引擎(IVE)
互动视频引擎(IVE)是指互动视频在播放器中支持的各种互动功能,这些功能包括播放记录同步、X因子处理、交互展示、交互命令处理、统计等。
互动视频服务(IVS)
互动视频服务(IVS)是围绕互动视频提供生产服务、播放服务、交互、用户相关功能在内的多套服务,覆盖从互动视频上传、处理、审核,到存储、分发、播放,再到视频管理、统计、分析的全流程。
名 称 | 含义 |
---|---|
播放区间 | 在互动视频播放的过程中,观众可以根据偏好进行选择,而选择的结果将影响剧情的发展,整个互动视频将会依据用户的选择在不同的视频片段之间切换,因此一个完整的互动视频将会包含多个视频片段,而其中的每一个片段所需相关的信息的集合称为一个播放区间。关于播放区间的具体定义参见播放区间信息。 |
交互区间 | 一次互动从开始到结束的整个生命周期中所需相关信息的集合称为一个交互区间。 例如,在某个互动视频播放的过程中,当其中的某个视频片段播放至该视频片段的第30秒时互动组件开始在界面中展示,当该视频片段播放至第40秒时互动组件从界面中消失,则视第30秒为互动的开始,第40秒为互动的结束。在这次互动中所需要的信息包括互动开始时间、互动展示时长、是否有展示动画、互动出现时是否暂停播放等等,这些信息共同构成了一个交互区间的定义。互动展示时长最短5秒,最长30秒。关于交互区间的具体定义参见交互区间信息。 |
产品概述
总体框架
互动视频协议的输出方式为脚本文件集,该文件集由若干文件构成(详见脚本文件集结构),由内容创作者提供。如上图所示,在整个系统中,脚本文件集起到承载相关互动信息的作用,在IVS和IVE之间传递。
脚本文件集结构
脚本文件集由以下三个部分构成,压缩后的大小需小于1.5M:
文件类型 | 示例名称 | 功能 |
---|---|---|
索引脚本文件 | index.json | 提供所有的播放区间和交互区间的索引信息,脚本文件集内唯一 |
交互区间脚本文件 | interact001-Para.json | 配合交互区间UI样式文件 实现交互组件内容的动态配置 一个交互区间对应一个脚本文件,可为多个 |
资源文件 | close.png | 交互区间脚本使用的图像资源 支持的格式主要包括:png、jpg |
命名规范
文件类型 | 命名规范 | 约束限制 |
---|---|---|
索引脚本文件 | 名称固定为index.json | 全小写,半角英文 |
交互区间脚本文件 | interact+编号-Para.json | “interact”和“-Para”是固定字符,编号为三位数字,范围从001~099,顺序编号 |
资源文件 | 符合常见操作系统中对文件的命名规范 | 全小写,半角英文和数字组成,最大长度20个英文字符和数字 |
索引脚本文件说明及定义
索引脚本文件基础结构
索引脚本文件提供了所有的播放区间和交互区间的索引信息。
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
base | Dictionary | Y | 包含了文档所需要的协议版本号、交互模式等基本信息 |
globle | Dictionary | N | 包含了全部X因子的名称及初始值关于X因子的介绍可参见《互动视频基础指南》中的X因子 |
interactBlockList | Array | Y | 定义了互动视频所需的全部交互区间数组中元素个数最大值为30 |
playBlockList | Array | Y | 定义了互动视频所需的全部播放区间数组中元素个数最大值为100 |
示例
{
"base": {},
"globle": {},
"interactBlockList": [],
"playBlockList": []
}
基础信息(base)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
filename | String | Y | 当用户首次播放互动视频时,播放的第一个片段的视频文件名称 对于同一互动视频,第一个片段是唯一的需包含扩展名,扩展名固定为“.mp4” 最大长度为20个英文字母或数字 |
fileVersion | String | Y | 索引脚本文件的文件版本号,当索引脚本文件被修改后,需要更新此节点以做区分 三个小于10的正整数以点分割,例如1.0.1 |
protocolVersion | String | Y | 协议版本号,当前协议版本号固定为1.0 |
interactMode | String | Y | 互动能力类型 0: 画面信息探索互动能力 1: 分支剧情互动能力 关于互动能力请参见《互动视频标准》中的互动能力支持 |
示例
"base": {
"filename": "video001.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "1"
}
全局信息(globle)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
varList | Array | N | X因子列表 包含了全部X因子的名称及初始值 数组中元素个数最大值为20 关于X因子的介绍可参见《互动视频基础指南》中的X因子 |
"globle": {
"varList":[]
}
varList
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
name | String | Y | X因子名称,在本文其他部分中使用的X因子都需在此处定义 这些部分包括: 3.3 交互区间信息interactBlockList 3.4 播放区间信息 playBlockList 4.4 按钮元素信息 btns 4.5 定制元素信息 ctrls 最大长度为20个英文字母 |
initValue | String | N | X因子初始值,不填写默认为0 本节点取值范围为0~100 |
示例
"varList":[
{
"name": "varA",
"initValue": "50"
},
{
"name": "varB",
"initValue": "50"
}
]
交互区间信息(interactBlockList)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
blockid | String | Y | 交互区间id 本节点内容格式:interact+编号 interact为固定字符编号为三位数字,范围从001~099,顺序编号 命名示例:interact001 最大长度为20个英文字母、数字 |
inPlayBlockid | String | Y | 该交互区间所在的播放区间id 该节点需在索引脚本文件playBlockList节点(链接到3.4)中存在定义,与playBlockList中的blockid节点相对应 最大长度为20个英文字母、数字 |
startTime | String | N | 交互区间开始时间 单位为秒 本节点可取值为5.0~36000.0的浮点数 实际取值需要满足以下公式: startTime<=交互区间所对应的视频片段的总时长-交互区间展示时长-2 |
duration | String | N | 交互区间的展示时长,即互动结束时间减去互动开始时间所得值 本节点取值范围为5.0~30.0的浮点数 单位为秒 |
exeShowAnimation | N | 是否执行组件展示动画 取值为“0”或者不填写表示不展示动画 取值为“1” 表示展示动画 组件展示动画时长为1秒,出现时组件从界面底部由下至上升起、消失时由上至下收起 样式UI0001、样式UI0002不能设置该字段 | |
des | N | 对交互区间的描述,将会用在故事线中作为交互区间的名称展示 最大长度为9个中英文字符和数字的组合 | |
showConditionList | Array | N | 交互区间展示条件列表 当本节点元素数量大于0时,交互区间是否可以展示根据本节点中的条件判断,满足条件列表中任一条件即可展示交互区间 数组中无元素或没有此节点默认为展示交互区间 本节点数组中元素个数最大值为20 |
state | Dictionary | N | 交互区间开始后,当前视频的播放状态信息,可为暂停或者播放两种状态之一 |
preLoadList | Array | N | 交互区间中的组件被用户操作后可能会触发视频片段的跳转。交互区间包含的所有组件中有可能会触发视频片段跳转的,均要将跳转到的视频信息在此处定义,包含视频片段对应的播放区间id和起播时间 本节点用于进行预加载 数组中元素个数最大值为10 |
UIInfo | Dictionary | Y | 交互区间对应的UI样式文件、交互区间脚本文件信息 |
示例
{
"blockid": "interact001",
"inPlayBlockid": "play001",
"startTime": "54.0",
"duration": "20.0",
"exeShowAnimation": "1",
"des": "某某选择描述",
"showConditionList":[],
"state": {},
"preLoadList":[],
"UIInfo": {}
}
showConditionList
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
expressType | String | N | 此节点表示条件判断表达式类型 交互区间是否可以展示可通过对showConditionList中的条件进行逐一判断确定。条件列表中的条件可采用以下三种形式之一进行定义,即本节点的取值为: condition:条件判断 max:取最大值 min:取最小值 |
express | String | N | 条件判断表达式 当expressType 为condition时,表达式支持多个表达式以&&连接,&&表示需要同时满足多个表达式才能展示交互区间。每个单独的条件判断表达式左侧为单个X因子、右侧为单个值,支持符号包括:>,<,!=,==,>=,<=,表达式的最大长度为30个英文字母、字符、数字。示例表达式:var1>2&&var2<10当expressType 为max时,表达式需要包含两个及以上X因子,X因子之间以逗号分隔,需要判断这些X因子中哪个最大,表达式的最大长度为30个英文字母、字符、数字。示例表达式:var1,var2,var3 当expressType 为min时,表达式需要包含两个及以上X因子,X因子之间以逗号分隔,需要判断这些X因子中哪个最小,表达式的最大长度为30个英文字母、字符、数字。示例表达式:var1,var2,var3 |
expressPara | String | N | 本节点为表达式的参数 当expressType为conditon时此项不填写当expressType为max时此项必填,内容为某个X因子,表示express列出的X因子中,最大的一个是否为本节点填写的X因子,若是则满足展示条件,否则不满足展示条件,参数示例:var1 当expressType为min时此项必填,内容为某个X因子,表示express列出的X因子中,最小的一个是否为本节点填写的X因子,若是则满足展示条件,否则不满足展示条件,参数示例:var2 |
示例
"showConditionList":[
{ // 表示X因子var1大于3并且X因子var2小于10时
// 则满足展示条件 可展示交互区间
"express":"var1>3&&var2<10",
"expressType":"condition"
},
{ // 表示X因子var1、var2中如果var2最大
// 则满足展示条件 可展示交互区间
"express":"var1,var2,var3",
"expressType":"max",
"expressPara":"var2"
},
{ // 表示X因子var1、var2中如果var2最小
// 则满足展示条件 可展示交互区间
"express":"var1,var2,var3",
"expressType":"min",
"expressPara":"var2"
}
]
state
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
playState | String | N | 表示交互区间展示时视频的播放状态,取值可以为以下两种 play:正常播放(仅支持小写) pause:暂停播放(仅支持小写) 不填写默认为play |
示例
"state": {
"playState": "pause"
}
preLoadList
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
playerBlockid | String | N | 本节点表示需要进行预加载的播放区间id 该节点需在索引脚本文件playBlockList节点(链接到3.4)中存在定义,与playBlockList中的blockid节点相对应。 交互区间中的组件被用户操作后可能会触发视频片段的跳转。交互区间包含的所有组件中有可能会触发视频片段跳转的,均要将跳转到的视频片段对应的播放区间id在此处定义 最大长度为20个英文字母、数字 |
preLoadTime | String | N | 需要预加载的视频片段的起播时间 交互区间包含的组件元素中有可能会触发视频片段跳转的,均要将跳转到的视频片段起播时间在此处定义 取值范围0~36000.0浮点数,不填写默认为0 单位为秒 |
示例
"preLoadList":[
{
"playerBlockid": "play002",
"preLoadTime": "20.0 "
}
]
UIInfo
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
UIid | String | Y | 本节点为交互区间UI样式id 目前平台开放三种UI样式,对应样式编号为 UI0001 UI0002 UI0003 UI0004 |
paraFile | String | N | 交互区间脚本文件路径+文件名 路径为相对与脚本文件集根路径的相对路径 最大长度为30个英文字母、数字 |
示例
"UIInfo": {
"UIid": "UI0001",
"paraFile" : "interact001-Para.json"
}
播放区间信息(playBlockList)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
blockid | String | Y | 播放区间id 本节点内容格式为play+编号 编号为三位数字,范围从001~099,顺序编号 最大长度为20个英文字母、数字 |
filename | String | Y | 播放区间对应视频文件的名称 该名称在整个播放区间列表中需唯一 需包含扩展名,扩展名固定为“.mp4” 最大长度为20个英文字母或数字 |
endAction | Dictionary | N | 当一个视频片段播放结束时可能存在需要处理的操作,如播放下一视频片段等,本节点中需要列出相关操作的定义 不定义则意味着播放区间对应的视频片段播放结束后整个互动视频播放结束 |
示例
{
"blockid": "play001",
"filename": "video002.mp4",
"endAction": {}
}
endAction
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
actionName | String | Y | 本节点表示播放区间对应的视频片段播放结束的时候,需要处理的事件名称,具体取值如下: SWITCHVIDEO :若当前播放的视频片段播放结束后,需要切换到下一视频片段播放,那么应在当前视频片段对应的播放区间定义中配置endAction的actionName为SWITCHVIDEO CONDITIONSWITCH:若当前播放的视频片段播放结束后,需要根据X因子的值选择将要播放的下一视频片段,那么应在当前视频片段对应的播放区间定义中配置endAction的actionName为CONDITIONSWITCH |
nextPlayBlockid | String | N | 当前视频片段播放结束时,可切换至下一视频片段播放,本节点为下一视频片段所对应的播放区间id本节点需在索引脚本文件playBlockList节点中存在定义,与playBlockList中的blockid节点相对应 最大长度为20个英文字母、数字 当actionName 为SWITCHVIDEO时此项必填 当actionName 为CONDITIONSWITCH时此项不填 当索引脚本文件中,base字段interactMode节点为0时即画面信息探索类型,此时nextPlayBlockid必填,固定为第一段视频的播放区间id |
nextPlayTime | String | N | 当前视频片段播放结束时,可切换至下一视频片段播放,本节点为下一视频片段的起播时间 取值范围为0~36000.0的浮点数,不填写默认为0单位为秒 当actionName 为SWITCHVIDEO时此项必填 当actionName 为CONDITIONSWITCH时此项不填 |
switchConditionList | Array | N | 若当前播放的视频片段播放结束后,需要根据X因子的值有条件的选择将要播放的下一视频片段,则可配置actionName为CONDITIONSWITCH,并在本节点中配置需要判断的条件列表 数组元素个数最大值为10 CONDITIONSWITCH使用的切换条件列表 当actionName 为CONDITIONSWITCH时此项必填 当actionName 为SWITCHVIDEO时此项不填 |
示例
"endAction" : {
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "76.0"
}
switchConditionList
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
expressType | String | N | 此节点表示条件判断表达式类型 若当前视频片段播放结束后需要根据X因子的值判断将要播放的下一视频片段,可通过对showConditionList中的条件进行逐一判断确定。判断条件可采用以下三种形式之一进行定义,即本节点的取值为: condition:条件判断 max:取最大值 min:取最小值 |
express | String | N | 本节点为条件判断表达式 当expressType为condition时:支持多个表达式以&&连接,&&表示需要同时满足多个表达式才能展示交互区间。每个单独的条件判断表达式左侧为单个X因子、右侧为单个值,支持符号包括:>,<,!=,==,>=,<=,最大长度为30个英文字母、字符、数字。示例表达式:varA>=3&&varB<2 当expressType为max时:表达式需要包含两个及以上X因子,X因子之间以逗号分隔,表示判断这些X因子中哪个最大,最大长度为30个英文字母、字符、数字。示例表达式:varA,varB,varC 当expressType为min时:表达式需要包含两个及以上X因子,X因子之间以逗号分隔,表示判断这些X因子中哪个最小,最大值长度30个英文字母、字符、数字。示例表达式:varA,varB,varC |
expressPara | String | N | 本节点为表达式的参数 当expressType为conditon时此项不填写 当expressType为max时此项必填,内容为某个X因子,表示express列出的X因子中,最大的一个是否为本节点填写的X因子,若是则满足切换条件,否则不满足切换条件 当expressType为min时此项必填,内容为某个X因子,表示express列出的X因子中,最小的一个是否为本节点填写的X因子,若是则满足切换条件,否则不满足切换条件 |
nextPlayBlockid | String | N | 当上述条件能够满足时,可通过本节点中的内容判断将要播放的下一视频片段,本节点为下一片段所对应的播放区间id 本节点需在索引脚本文件playBlockList节点(链接到3.4)中存在定义,与playBlockList中的blockid节点相对应 最大长度为20个英文字母、数字 |
nextPlayTime | String | N | 当上述条件能够满足时,可通过本节点中的内容判断将要播放的下一视频片段的起播时间 取值范围为0~36000.0的浮点数,不填写默认为0单位为秒 |
示例
"switchConditionList":[
{
"express":"varA>=3&&varB<2",
"expressType":"condition",
"nextPlayBlockid": "play008",
"nextPlayTime": "0"
},
{
"express": "varA,varB,varC",
"expressType":"max",
"expressPara":"varA",
"nextPlayBlockid": "play009",
"nextPlayTime": "0"
},
{
"express":"varA,varB,varC ",
"expressType":"min",
"expressPara":"varB",
"nextPlayBlockid": "play010",
"nextPlayTime": "0"
}
]
交互区间脚本文件说明及定义
交互区间脚本文件基础结构
交互区间脚本文件为交互区间UI样式文件提供了组件展示所必要的信息,作为交互区间UI样式文件的输入,实现组件内容的动态化处理、展示。
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
base | Dictionary | Y | 包含了文档所需要的协议版本号、文件版本号等基本信息 |
metas | Array | N | 包含了组件中可供内容制作者配置的全部文本元素 本节点数组中元素个数最大值为10 |
imgs | Array | N | 包含了组件中可供内容制作者配置的全部图像元素 本节点数组中元素个数最大值为10 |
btns | Array | N | 包含了组件中可供内容制作者配置的全部按钮元素 本节点数组中元素个数最大值为10 |
ctrls | Array | N | 包含了组件中可供内容制作者配置的全部其他定制元素 本节点数组中元素个数最大值为10 |
statistics | Dictionary | Y | 统计信息,发送页面展示统计时使用 |
示例
{
"base": {},
"metas":[],
"imgs":[],
"btns":[],
"ctrls":[],
"statistics":{}
}
基础信息(base)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
interactid | String | Y | 交互区间id 本节点内容格式:interact+编号 interact为固定字符编号为三位数字,范围从001~099,顺序编号 命名示例:interact001 最大长度为20个英文字母、数字 |
fileVersion | String | Y | 交互区间脚本文件的文件版本号,当交互区间脚本文件被修改后,需要更新此节点以做区分 三个小于10的正整数以点分割,例如1.0.0 |
protocolVersion | String | Y | 协议版本号,当前协议版本号固定为1.0 |
示例
"base": {
"interactid ": "interact017",
"fileVersion": "1.0.0",
"protocolVersion": "1.0"
}
文本元素信息(metas)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
id | String | Y | 文本元素id 本节点内容格式为meta+编号 meta为固定字符 编号为三位数字,范围从001~099,顺序编号 |
text | String | N | 文本元素展示在界面中的文本内容 最大长度为50个中英文字符、数字 |
示例
"metas":[
{
"id":"meta001",
"text":"接下来"
},
{
"id":"meta002",
"text":"你有没有什么话对我说?"
}
]
图像元素信息(imgs)
属性示例
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
id | String | Y | 图像元素id 本节点内容格式为img+编号 img为固定字符 编号为三位数字,范围从001~099,顺序编号 |
url | String | N | 图像元素在界面中展示的图片对应的图片路径 路径为资源在整个脚本文件集中的相对路径 最大长度为30个中英文字符、数字 例如:res/select.png |
示例
"imgs":[
{
"id":"img001",
"url":"res/select.png"
},
{
"id":"img002",
"url":"res/selected.png"
}
]
按钮元素信息(btns)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
id | String | Y | 按钮元素id 本节点内容格式为btn+编号 btn为固定字符 编号为三位数字,范围从001~099,顺序编号 |
text | String | N | 按钮元素在界面中展示的文本内容 最大长度为10个中英文字符、数字 |
des | String | N | 按钮元素的描述,仅用于统计,不用做实际展示 最大长度为20个中英文字符、数字 |
isDefaultSelect | String | N | 倒计时结束之后是否以本按钮元素为默认选项 “1”默认选项,其他值或空值为非默认选项 所有按钮元素中最多只能有一个为1,倒计时结束后会默认选择该选项 如果一个按钮配置了showConditionList则不能设置isDefaultSelect为1 |
backImgNormal | String | N | 按钮元素在界面中展示的背景图片的路径 路径为资源在整个脚本文件集中的相对路径 最大长度为30个中英文字符、数字 例如:res/back1.png |
showConditionList | Array | N | 当组件展示时,元素可能会受到X因子的影响,根据X因子的值来确定是否能够展示,此时可以使用本节点来判断元素是否满足展示条件 当本节点不为空时展示条件中有任意一条满足则展示元素,否则不展示 当本节点为空或不存在时默认为展示对应的元素 本节点数组中元素个数最大值为20 |
statistics | Dictionary | Y | 发送点击统计时使用的信息 按钮点击后根据本节点内容发送点击统计,用于统计展示点击比 |
actionList | Array | N | 本节点为按钮被点击后所做触发事件的列表 当一个按钮被点击时,用户操作可能会触发视频片段的切换、视频的暂停、X因子的计算等操作,这些操作均可在本节点中以列表形式定义 本节点数组中元素个数最大值为20 |
示例
"btns":[
{
"id":"btn001",
"text":"不后悔",
"des":"不后悔",
"isDefaultSelect":"1",
"backImgNormal":"res/back1.png",
"showConditionList":[],
"statistics":{},
"actionList":[]
}
]
statistics
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
rseat | String | N | 统计节点,定义了按钮在组件中的位置,当用户点击按钮时将该节点的作为统计信息发送到后台,以便于后台统计展示点击比 最大长度为20个中英文字符 如不填写默认为当前区间对应的元素id 例如:btn001 |
block | String | N | 统计节点,定义了按钮的描述信息,当用户点击按钮时将发送该节点的统计信息到后台,以便于后台统计展示点击比 最大长度为20个中英文字符如不填写默认为当前交互区间的interactid 例如:interact001 |
示例
"statistics":{
"rseat":"btn001",
"block":"interact001"
}
actionList
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
actionName | String | N | 本节点为按钮被点击后所触发的事件的名称 当一个按钮被点击时,用户操作可能会触发视频片段的切换、视频的暂停、X因子的计算等操作,这些操作在本节点中定义,并配合事件参数字典actionPara共同完成功能。 本节点中定义的事件可以为以下几种: ALGORITHM:X因子运算,有参数,参数在actionPara中定义 SWITCHVIDEO:视频切换,有参数,参数在actionPara中定义 CONDITIONSWITCH:条件视频切换,有参数,参数在actionPara中定义 PLAY:播放,无参数 PAUSE:暂停,无参数 REMOVE:移除交互区间,无参数 |
actionPara | Dictionary | N | 以上有参数的事件对应的参数信息字典 当actionName 为ALGORITHM时,参数定义详见ALGORITHM 当actionName 为SWITCHVIDEO时,参数定义详见SWITCHVIDEO 当actionName 为CONDITIONSWITCH时,参数定义详见CONDITIONSWITCH |
示例
"actionList":[
{
"actionName":"ALGORITHM",
"actionPara":{}
}
]
ALGORITHM
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
algorithmList | Array | N | 一组X因子的运算操作集,不支持单一因子的重复计算 当用户点击按钮元素时,可根据本节点中定义的运算表达式改变X因子的值 表达式形式如var1=var1+1,等号左边为要改变的X因子,等号右侧为公式 公式可以支持多个X因子之间的加减计算 当计算所得到的X因子小于0时,将取0为结果 数组元素个数最大值为10 |
示例
{
"actionName":"ALGORITHM",
"actionPara":{
"algorithmList":[
"globalA=varA-1",
"globalB=varB+1"
]
}
}
SWITCHVIDEO
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
insertToTime | String | N | 当用户点击按钮元素时,可通过在actionList中配置SWITCHVIDEO事件,实现跳转到下一个视频片段,可立即切换,也可预设当前视频切换到下一视频的时间。 当insertToTime为0或者空则立即播放下一视频 当insertToTime大于0时将以insertToTime为预设时间,在该时间点切换至下一视频 例如,insertToTime为100时,当前视频将会在播放到100秒时执行切换下一视频的操作 本节点可取值为0~36000.0的浮点数 单位为秒 本节点的最小值需要大于交互区间的开始时间 本节点的最大值值需要小于等于当前视频片段的总时长 |
nextPlayBlockid | String | N | 下一视频片段对应的播放区间id 该节点需在索引脚本文件playBlockList节点(链接到3.4)中存在定义,与playBlockList中的blockid节点相对应 最大长度为20个英文字母、数字 |
nextPlayTime | String | N | 下一视频片段的起播时间 本节点可取值为0~36000.0的浮点数 单位为秒 不填写默认为0 本节点的值需要小于下一视频片段的总时长 |
示例
{
"actionName":"SWITCHVIDEO",
"actionPara":{
"insertToTime":"0",
"nextPlayBlockid":"play002",
"nextPlayTime":"0"
}
}
CONDITIONSWITCH
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
switchConditionList(链接到3.4.1.1) | Array | N | CONDITIONSWITCH使用的切换条件列表 若当用户触发按钮元素时,需要根据X因子的值有条件的选择将要播放的下一视频片段,则可配置actionName为CONDITIONSWITCH,并在本节点中配置需要判断的条件列表及满足条件后跳转的下一视频片段的信息 列表从头开始遍历数组,找到第一个满足条件的元素,则取其节点信息进行视频切换 express、expressType、expressPara三个元素用于判断切换条件是否满足,具体含义可参见本文playBlockList中switchConditionList对三个属性的描述 insertToTime、nextPlayBlockid、nextPlayTime三个元素用于满足条件后的视频切换,具体含义SWITCHVIDEO中对三个属性的描述 数组元素个数最大值为10 |
示例
{
"actionName": "CONDITIONSWITCH",
"actionPara":{
"switchConditionList":[
{
"express":"varA,varB,varC",
"expressType":"max",
"expressPara":"varA",
"insertToTime":"",
"nextPlayBlockid": "play019",
"nextPlayTime": "0"
},
{
"express":"varA,varB,varC",
"expressType":"max",
"expressPara":"varB",
"insertToTime":"",
"nextPlayBlockid": "play032",
"nextPlayTime": "0"
},
{
"express":"varA,varB,varC",
"expressType":"max",
"expressPara":"varC",
"insertToTime":"",
"nextPlayBlockid": "play002",
"nextPlayTime": "0"
}
]
}
}
定制元素信息(ctrls)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
id | String | Y | 元素id 本节点内容格式为ctrl+编号 ctrl为固定字符 编号为三位数字,范围从001~099,顺序编号 |
controlType | String | N | 定制元素类型 目前仅支持倒计时元素 倒计时元素该节点的值固定为COUNTDOWN |
controlBackColor | String | N | 元素背景的RGB十六进制颜色值 固定以0x开头后接RGB十六进制颜色值 颜色数据取值从000000~ffffff 例如Oxffffff |
totalTime | String | N | 交互区间的展示时长 本节点取值范围为5.0~30.0的浮点数本 节点需要与交互区间脚本文件在索引脚本文件中定义的展示时长相同,具体参见interactBlockList中的duration 单位为秒 |
statistics | Dictionary | Y | 默认选择统计节点 倒计时结束之后如果没有按钮元素配置了isDefaultSelect则执行COUNTDOWN倒计时元素中的事件 |
actionList | Array | N | 倒计时完成后默认执行事件 倒计时结束之后如果没有按钮元素配置了isDefaultSelect则执行COUNTDOWN倒计时元素actionList中定义的事件 本节点数组中元素个数最大值为20 |
示例
"ctrls": [
{
"id":"ctrl001",
"controlType":"COUNTDOWN",
"controlBackColor":"0xffffff",
"totalTime":"7",
"statistics":{
"rseat":"0",
"block":"call block"
},
"actionList":[
{
"actionName":"PLAY",
"actionPara":{}
},
{
"actionName":"REMOVE",
"actionPara":{}
}
]
}
]
统计信息(statistics)
属性说明
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
rpage | String | N | 统计节点,定义了交互区间的页面信息,当用户点击按钮时将发送该节点的统计信息到后台,以便于统计展示点击比 最大长度为20个英文字母、数字 如不填写默认为索引脚本文件中base节点下filename节点的内容 |
block | String | N | 统计节点,定义了交互区块的信息,当用户点击按钮时将发送该节点的统计信息到后台,以便于后台统计展示点击比 最大长度为20个英文字母、数字 如不填写默认为交互区间id 例如:interact001 |
示例
"statistics":{
"rpage":"video001.mp4",
"block":"interact001"
}
交互区间UI样式文件说明
交互区间组件样式文件以交互区间脚本文件为输入,以UI为输出。该文件从交互区间脚本文件中获取可动态配置的组件内容,如文字、图片、背景样式等,经过运行时的动态化UI生成,实现组件的展示及交互区间组件样式文件的复用。
目前爱奇艺平台开放的交互区间UI样式包含以下四种:
样式编号 | 样式名称 | 可参考实现的互动能力 |
---|---|---|
UI0001 | 交互区间UI样式一 | 分支剧情 |
UI0002 | 交互区间UI样式二 | 分支剧情 |
UI0003 | 交互区间UI样式三 | 画面信息探索 |
UI0004 | 交互区间UI样式四 | 画面信息探索 |
交互区间UI样式一
样式描述
样式说明
本样式中要求交互区间脚本文件除了满足上文中对于交互区间脚本的定义外,还需满足以下条件:
节点名称 | 数组元素数量要求 | 数组中各元素与样式的对应关系 |
---|---|---|
文本元素数组metas | 1 | 文本元素数组中第一个元素的text节点内容为标题内容 text节点内容最大长度为12个中英文字符、数字 |
图像元素数组imgs | 2 | 图像元素数组中第一个元素的url节点内容为样式中各按钮元素选中前的背景图路径 数组中第二个元素的url节点内容为样式中各按钮元素选中后的背景图路径 上述路径均为相对于脚本文件集根路径的路径 |
按钮元素数组btns | 1~5 | 按钮元素数组中元素的个数与样式中展示在界面上的按钮的数量相同,第一到第五个元素将从左到右依次排列 各按钮元素中的text节点内容为按钮展示在界面上的名称 text节点内容最大长度为4个中英文字符、数字 |
定制元素数组ctrls | 1 | 定制元素数组个数固定为1 类型controlType内容固定为COUNTDOWN,即倒计时元素。 |
注意事项
本样式自带展示收起动画效果,因此使用本样式时,交互区间定义中的exeShowAnimation
节点不能为1。
交互区间UI样式二
样式描述
样式说明
本样式与样式一的主要差别在于无标题内容。
本样式中要求交互区间脚本文件除了满足上文中对于交互区间脚本的定义外,还需满足以下条件:
节点名称 | 数组元素数量要求 | 数组中各元素与样式的对应关系 |
---|---|---|
文本元素数组metas | 0 | 文本元素数组数量固定为0 |
图像元素数组imgs | 2 | 图像元素数组中第一个元素的url节点内容为样式中各按钮元素选中前的背景图路径 数组中第二个元素的url节点内容为样式中各按钮元素选中后的背景图路径 数组中第三个元素的url节点内容为组件背景图 上述路径均为相对于脚本文件集根路径的路径 |
按钮元素数组btns | 1~5 | 按钮元素数组中元素的个数与样式中展示在界面上的按钮的数量相同,第一到第五个元素将从左到右依次排列 各按钮元素中的text节点内容为按钮展示在界面上的名称 text节点内容最大长度为4个中英文字符、数字 |
定制元素数组ctrls | 1 | 定制元素数组个数固定为1 类型节点controlType内容固定为COUNTDOWN,即倒计时元素。 |
注意事项
本样式自带展示收起动画效果,因此使用本样式时,交互区间定义中的exeShowAnimation
节点不能为1。
交互区间UI样式三
样式描述
样式说明
本样式中要求交互区间脚本文件除了满足上文中对于交互区间脚本的定义外,还需满足以下条件:
节点名称 | 数组元素数量要求 | 数组中各元素与样式的对应关系 |
---|---|---|
文本元素数组metas | 2 | 文本元素数组第一个元素的text节点内容为提示内容 文本元素数组第二个元素的text节点内容为标题内容 text节点内容最大长度为12个中英文字符、数字 |
图像元素数组imgs | 3 | 图像元素数组中第一个元素的url节点内容为组件背景图的图片路径 数组中第二个元素的url节点内容为组件左侧用图的图片路径 数组中第三个元素的url节点内容为组件提示信息背景图的图片路径 上述路径均为相对于脚本文件集根路径的路径 |
按钮元素数组btns | 3 | 按钮元素数组中第一个元素为关闭按钮,backImgNormal节点内容为按钮的背景图片路径 按钮元素数组中第二个元素为左侧按钮,text节点内容为按钮展示在界面上的名称,backImgNormal节点内容为按钮的背景图片路径 按钮元素数组中第三个元素为右侧按钮,text节点内容为按钮展示在界面上的名称,backImgNormal节点内容为按钮的背景图片路径 text节点内容最大长度为4个中英文字符、数字 |
定制元素数组ctrls | 1 | 定制元素数组个数固定为1 类型节点controlType内容固定为COUNTDOWN,即倒计时元素。 |
交互区间UI样式四
样式描述
样式说明
本样式中要求交互区间脚本文件除了满足上文中对于交互区间脚本的定义外,还需满足以下条件:
节点名称 | 数组元素数量要求 | 数组中各元素与样式的对应关系 |
---|---|---|
文本元素数组metas | 1 | 文本元素数组第一个元素的text节点内容为提示内容 text节点内容最大长度为12个中英文字符、数字 |
图像元素数组imgs | 3 | 图像元素数组第一个元素的url节点内容为组件背景图的图片路径 数组中第二个元素的url节点内容为组件左侧用图的图片路径 数组中第三个元素的url节点内容为提示信息背景图的图片路径 上述路径均为相对于脚本文件集根路径的路径 |
按钮元素数组btns | 1~20 | 按钮元素数组中第一个元素为关闭按钮 数组中其他按钮为展示在界面上的人物按钮,按钮text节点内容为展示在界面中的人物名称,按钮的backImgNormal节点内容为展示在界面中的个人物头像 除关闭按钮外的其他按钮将按定义顺序在界面中从左到右依次排列 各按钮元素中的text节点内容为按钮展示在界面上的名称 text节点内容最大长度为4个中英文字符、数字 |
定制元素数组ctrls | 1 | 定制元素数组个数固定为1 类型节点controlType内容固定为COUNTDOWN,即倒计时元素。 |
附录
本附录提供了两个根据互动视频开放协议实现的示例,供内容创作者、互动视频从业者等相关人员参考。
示例一
该示例包含了部分分支剧情互动能力。
脚本文件目录结构
文件名称 | 说明 |
---|---|
index.json | 索引脚本文件 |
interact001 | 交互区间interact001对应的交互区间脚本文件所在文件夹 |
interact002 | 交互区间interact002对应的交互区间脚本文件所在文件夹 |
res | 资源文件夹 |
文件名称 | 说明 |
---|---|
interact001-Para.json | 交互区间interact001对应的交互区间脚本文件 |
文件名称 | 说明 |
---|---|
interact002-Para.json | 交互区间interact002对应的交互区间脚本文件 |
文件名称 | 说明 |
---|---|
select.png | 按钮元素选中前背景图 |
selected.png | 按钮元素选中后背景图 |
bknotitle.png | 无标题样式背景图 |
bktitle.png | 有标题样式背景图 |
剧情结构示意图
脚本注释
索引脚本文件注释:
{
"base": {
"filename": "videoA.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "1"
},
"interactBlockList":[
{
"blockid": "interact001",
"inPlayBlockid": "play001",//交互区间出现在播放区间id为play001的视频片段中
"startTime": "120",//交互区间开始时间为120s
"duration": "10",//交互区间展示时长为10s
"des" : "是否去追滔滔",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play002",
"preLoadTime":"0"
},
{
"playerBlockid": "play003",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0001",//交互区间的组件使用了样式UI0001
"paraFile": "interact001/interact001-Para.json",//交互区间使用的交互区间脚本文件的路径
}
},
{
"blockid": "interact002",
"inPlayBlockid": "play002",//交互区间出现在播放区间id为play002的视频片段中
"startTime": "240",//交互区间开始时间为240s
"duration": "10",//交互区间展示时长为10s
"des": "是否喜欢礼物",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play004",
"preLoadTime":"0"
},
{
"playerBlockid": "play005",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0002",//交互区间的组件使用了样式UI0002
"paraFile": "interact002/interact002-Para.json",//交互区间使用的交互区间脚本文件的路径
}
}
],
"playBlockList":
[
{
"blockid": "play001",
"filename": "videoA.mp4",
"endAction": {}
},
{
"blockid": "play002",
"filename": "videoB.mp4",
"endAction": {}
},
{
"blockid": "play003",
"filename": "videoC.mp4",
"endAction": {}
},
{
"blockid": "play004",
"filename": "videoD.mp4",
"endAction" : {}
},
{
"blockid": "play005",
"filename": "videoE.mp4",
"endAction": {}
}
]
}
交互区间interact001互动元素设置对照:
交互区间interact001脚本文件注释:
{
"base": {
"interactid":"interact001",
"fileVersion":"1.0.0",
"protocolVersion":"1.0"
},
"metas":[
{
"id":"meta001",
"text":"是否去追滔滔"//元素1 标题 内容
}
],
"imgs":[
{
"id":"img001",
"url":"res/select.png"//元素4 按钮选中前背景图
},
{
"id":"img002",
"url":"res/selected.png"//元素5 按钮选中后背景图
},
{
"id":"img003",
"url":"res/bktitle.png"//元素6 背景图
}
],
"btns":[
{
"id":"btn001",
"text":"追滔滔",//元素2 第一个按钮 内容
"des":"追滔滔",
"isDefaultSelect":"1",//默认选中第一个按钮
"statistics":{
"rseat":"btn001",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//选择按钮后执行切换视频的操作
"actionPara":{
"insertToTime":"130",//在当前视频片段播放到130s时开始切换视频
"nextPlayBlockid":"play002",//下一个视频片段的播放区间id为play002
"nextPlayTime":"0"//下一个视频从0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
},{
"id":"btn002",
"text":"再想想",//元素3 第二个按钮 内容
"des":"再想想",
"statistics":{
"rseat":"btn002",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//选择按钮后执行切换视频的操作
"actionPara":{
"insertToTime":"130",//在当前视频片段播放到130s时开始切换视频
"nextPlayBlockid":"play003",//下一个视频片段的播放区间id为play003
"nextPlayTime":"0"//下一个视频从0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素类型为倒计时
"controlBackColor":"0xffffff",//倒计时元素的背景颜色
"totalTime":"10",//倒计时时长,与索引脚本文件中本交互区间的展示时长相同
"statistics":{
"rseat":"ctrl001",
"block":"interact001"
},
"actionList":[]
}
],
"statistics":{
"rpage":"videoA.mp4",
"block":"interact001"
}
}
交互区间interact002中的互动元素设置对照:
交互区间interact002脚本文件注释:
{
"base": {
"interactid":"interact002",
"fileVersion":"1.0.0",
"protocolVersion":"1.0"
},
"metas":[],
"imgs":[
{
"id":"img001",
"url":"res/select.png"//元素3 按钮选中前背景图
},
{
"id":"img002",
"url":"res/selected.png"//元素4 按钮选中前背景图
},
{
"id":"img003",
"url":"res/bknotitle.png"//元素5 背景图
}
],
"btns":[
{
"id":"btn001",
"text":"喜欢",//元素1 第一个按钮 内容
"des":"喜欢",
"isDefaultSelect":"1",//默认选中第一个按钮
"statistics":{
"rseat":"btn001",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//选择按钮后执行切换视频的操作
"actionPara":{
"insertToTime":"250",//在当前视频片段播放到250s时开始切换视频
"nextPlayBlockid":"play004",//下一个视频片段的播放区间id为play004
"nextPlayTime":"0"//下一个视频从0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
},{
"id":"btn002",
"text":"不喜欢",//元素2 第二个按钮 内容
"des":"不喜欢",
"statistics":{
"rseat":"btn002",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//选择按钮后执行切换视频的操作
"actionPara":{
"insertToTime":"250",//在当前视频片段播放到250s时开始切换视频
"nextPlayBlockid":"play005",//下一个视频片段的播放区间id为play005
"nextPlayTime":"0"//下一个视频从0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",
"controlBackColor":"0xffffff",
"totalTime":"10",
"statistics":{
"rseat":"ctrl001",
"block":"interact002"
},
"actionList":[]
}
],
"statistics":{
"rpage":"interact002",
"block":"videoA.mp4"
}
}
示例二
该示例包含了部分画面信息探索互动能力。
脚本文件目录结构
文件名称 | 说明 |
---|---|
index.json | 索引脚本文件 |
interact001 | 交互区间interact001对应的交互区间脚本文件及资源所在文件夹 |
interact002 | 交互区间interact002对应的交互区间脚本文件及资源所在文件夹 |
文件名称 | 说明 |
---|---|
interact001-Para.json | 交互区间interact001对应的交互区间脚本文件 |
close.png | 关闭按钮背景图 |
logo.png | LOGO背景图 |
go.png | 右侧按钮背景图 |
ignore.png | 左侧按钮背景图 |
backimage.png | 组件背景图 |
bgtitle.png | 提示信息背景图 |
文件名称 | 说明 |
---|---|
interact002-Para.json | 交互区间interact002对应的交互区间脚本文件 |
close.png | 关闭按钮背景图 |
logo.png | LOGO背景图 |
bgtitle.png | 提示信息背景图 |
backimage.png | 组件背景图 |
default.png | 按钮背景图 |
剧情结构示意图
脚本注释
索引脚本文件注释:
{
"base": {
"filename": "videoS.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "0"
},
"interactBlockList":
[
{
"blockid": "interact001",
"inPlayBlockid": "play001",//交互区间出现在播放区间id为play001的视频片段中
"startTime": "100",//交互区间开始时间为100s
"duration": "10",//交互区间展示时长为10s
"exeShowAnimation": "1",//执行展示和消失动画
"des": "精彩内容",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play002",
"preLoadTime":"0"
}
],
"UIInfo": {
"UIid": "UI0003",//交互区间的组件使用了样式UI0003
"paraFile": "interact001/interact001-Para.json",//交互区间使用的交互区间脚本文件的路径
}
},
{
"blockid": "interact002",
"inPlayBlockid": "play001",//交互区间出现在播放区间id为play001的视频片段中
"startTime": "200",//交互区间开始时间为200s
"duration": "10",//交互区间展示时长为10s
"exeShowAnimation": "1",
"des": "精彩表演",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid": "play003",
"preLoadTime": "0"
},
{
"playerBlockid": "play004",
"preLoadTime": "0"
},
{
"playerBlockid": "play005",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0004",//交互区间的组件使用了样式UI0004
"paraFile": "interact002/interact002-Para.json",//交互区间使用的交互区间脚本文件的路径
}
}
],
"playBlockList":
[
{
"blockid": "play001",
"filename": "videoS.mp4",
"endAction": {}
},
{
"blockid": "play002",
"filename": "videoT.mp4",
"endAction":{
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "110"
}
},
{
"blockid": "play003",
"filename": "videoU.mp4",
"endAction": {
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "210"
}
},
{
"blockid": "play004",
"filename": "videoV.mp4",
"endAction":{
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "210"
}
},
{
"blockid": "play005",
"filename": "videoW.mp4",
"endAction":{
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "210"
}
}
]
}
交互区间interact001互动元素设置对照:
交互区间interact001脚本文件注释:
{
"interactid":"interact001",
"version":"1.0.0",
"protocolVersion":"1.0",
"metas":[
{
"id":"meta001",
"text":"发现有你喜欢的精彩内容"//元素1 提示
},
{
"id":"meta002",
"text":"solo秀翻全场 精彩等你来看"//元素2 标题
}
],
"imgs":[
{
"id":"img001",
"url":"interact001/backimage.png"//元素7 组件背景图
},
{
"id":"img002",
"url":"interact001/logo.png"//元素6 LOGO
},
{
"id":"img003",
"url":"interact001/bgtitle.png"//元素8 提示背景图
}
],
"btns":[
{
"id":"btn001",
"text":"",
"des":"关闭",
"backImgNormal":"interact001/close.png",//元素3 关闭按钮
"statistics":{
"rseat":"btn001",
"block":"interact001"
},
"actionList":[
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
},
{
"id":"btn002",
"text":"忽略",//元素4 左侧按钮 内容
"des":"忽略",
"backImgNormal":"interact001/ignore.png",//元素5 左侧按钮 背景图
"statistics":{
"rseat":"btn002",
"block":"interact001"
},
"actionList":[
{
"actionName":"REMOVE",
"actionPara":{}
}
]
},{
"id":"btn003",
"text":"去看看",//元素5 右侧按钮 内容
"des":"去看看",
"backImgNormal":"interact001/go.png",//元素5 右侧按钮 背景图
"statistics":{
"rseat":"btn003",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按钮点击后执行视频片段切换操作
"actionPara":{
"insertToTime":"",//立即切换视频
"nextPlayBlockid":"play002",//下一视频片段的播放区间id为play002
"nextPlayTime":"0"//从下一视频的0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素类型为倒计时类型
"controlBackColor":"0xffdb31",//倒计时元素的背景颜色
"totalTime":"10",//倒计时时长,与索引脚本文件中本交互区间的展示时长相同
"statistics":{
"rseat":"ctrl001",
"block":"videoS.mp4"
},
"actionList":[
{
"actionName":"REMOVE",//如果用户没有进行选择,倒计时完成后移除交互区间
"actionPara":{}
}
]
}
],
"statistics":{
"rpage":"videoS.mp4",
"block":"interact001"
}
}
交互区间interact002互动元素设置对照:
交互区间interact002脚本文件注释:
{
"interactid":"interact002",
"version":"1.0.0",
"protocolVersion":"1.0",
"metas":[
{
"id":"meta001",
"text":"发现有你喜欢的精彩表演"//元素1 提示
}
],
"imgs":[
{
"id":"img001",
"url":"interact002/backimage.png"//元素7 背景图
},
{
"id":"img002",
"url":"interact002/logo.png"//元素6 LOGO
},
{
"id":"img003",
"url":"interact002/bgtitle.png"//元素8 提示背景图
}
],
"btns":[
{
"id":"btn001",
"text":"",
"des":"关闭",
"backImgNormal":"interact002/close.png",//元素2 关闭按钮 背景图
"statistics":{
"rseat":"btn001",
"block":"interact002"
},
"actionList":[
{
"actionName":"REMOVE",//按钮点击后移除交互区间
"actionPara":{}
}
]
},
{
"id":"btn002",
"text":"演员A",//元素3 演员A按钮 内容
"des":"演员A",
"backImgNormal":"interact002/default.png",//元素3 演员A按钮 背景图
"statistics":{
"rseat":"btn002",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按钮点击后执行视频片段切换操作
"actionPara":{
"insertToTime":"",//立即切换视频
"nextPlayBlockid":"play003",//下一视频片段的播放区间id为play003
"nextPlayTime":"0"//从下一视频的0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
},{
"id":"btn003",
"text":"演员B",//元素4 演员B按钮 内容
"des":"演员B",
"backImgNormal":"interact002/default.png",//元素3 演员B按钮 背景图
"statistics":{
"rseat":"btn003",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按钮点击后执行视频片段切换操作
"actionPara":{
"insertToTime":"",//立即切换视频
"nextPlayBlockid":"play004",//下一视频片段的播放区间id为play004
"nextPlayTime":"0"//从下一视频的0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
},{
"id":"btn004",
"text":"演员C",//元素5 演员C按钮 内容
"des":"演员C",
"backImgNormal":"interact002/default.png",//元素3 演员C按钮 背景图
"statistics":{
"rseat":"btn004",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按钮点击后执行视频片段切换操作
"actionPara":{
"insertToTime":"",//立即切换视频
"nextPlayBlockid":"play005",//下一视频片段的播放区间id为play005
"nextPlayTime":"0"//从下一视频的0s开始播放
}
},
{
"actionName":"REMOVE",//移除交互区间
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素类型为倒计时
"controlBackColor":"0xffdb31",//倒计时元素的背景颜色
"totalTime":"10",//倒计时时长,与索引脚本文件中本交互区间的展示时长相同
"statistics":{
"rseat":"ctrl001",
"block":"interact002"
},
"actionList":[
{
"actionName":"REMOVE",//如果用户没有进行选择,倒计时完成后移除交互区间
"actionPara":{}
}
]
}
],
"statistics":{
"rpage":"videoS.mp4",
"block":"interact002"
}
}