互動視頻開放協(xié)議
引言
編寫目的
本文檔提供了一套互動視頻開放協(xié)議,以實(shí)現(xiàn)內(nèi)容創(chuàng)作者的快速接入及互動視頻技術(shù)的推廣和應(yīng)用。
預(yù)期讀者和閱讀建議
本文檔開放給互動視頻內(nèi)容創(chuàng)作者、互動視頻從業(yè)者等相關(guān)人員參考。
文檔輸入
《互動視頻基礎(chǔ)指南》中提供了關(guān)于互動視頻的詳細(xì)介紹,該文檔可在愛奇藝APP中,“我的”-“關(guān)于我們”-“互動視頻標(biāo)準(zhǔn)”中查看。
術(shù)語
| (英文縮寫) | (英文全稱) | (中文全稱) |
|---|---|---|
| IV | Interact Video | 互動視頻 |
| IVP | Interact Video Platform | 互動視頻平臺 |
| IVG | Interact Video Guidelines | 互動視頻標(biāo)準(zhǔn) |
| IVE | Interact Video Engine | 互動視頻引擎 |
| IVS | Interact Video Service | 互動視頻服務(wù) |
互動視頻(IV)
互動視頻(IV)是一種全新的視頻類型。旨在通過增強(qiáng)體感反饋、劇情參與、內(nèi)容探索等方式為用戶帶來更加豐富的觀看體驗(yàn)。
互動視頻標(biāo)準(zhǔn)(IVG)
互動視頻標(biāo)準(zhǔn)(IVG)定義了一系列互動視頻生產(chǎn)流程和標(biāo)準(zhǔn)。旨在通過可實(shí)操的標(biāo)準(zhǔn),降低內(nèi)容創(chuàng)作者、軟件工具等各方參與互動視頻領(lǐng)域的門檻,促進(jìn)各方對互動視頻領(lǐng)域的探索。
互動視頻平臺(IVP)
互動視頻平臺(IVP)是為視頻添加互動能力的平臺。旨在通過將互動能力添加環(huán)節(jié)與視頻拍攝、剪輯的整個制作流程深度結(jié)合,幫助內(nèi)容創(chuàng)作者便捷高效地打造出高品質(zhì)的互動視頻。
互動視頻引擎(IVE)
互動視頻引擎(IVE)是指互動視頻在播放器中支持的各種互動功能,這些功能包括播放記錄同步、X因子處理、交互展示、交互命令處理、統(tǒng)計等。
互動視頻服務(wù)(IVS)
互動視頻服務(wù)(IVS)是圍繞互動視頻提供生產(chǎn)服務(wù)、播放服務(wù)、交互、用戶相關(guān)功能在內(nèi)的多套服務(wù),覆蓋從互動視頻上傳、處理、審核,到存儲、分發(fā)、播放,再到視頻管理、統(tǒng)計、分析的全流程。
| 名 稱 | 含義 |
|---|---|
| 播放區(qū)間 | 在互動視頻播放的過程中,觀眾可以根據(jù)偏好進(jìn)行選擇,而選擇的結(jié)果將影響劇情的發(fā)展,整個互動視頻將會依據(jù)用戶的選擇在不同的視頻片段之間切換,因此一個完整的互動視頻將會包含多個視頻片段,而其中的每一個片段所需相關(guān)的信息的集合稱為一個播放區(qū)間。關(guān)于播放區(qū)間的具體定義參見播放區(qū)間信息。 |
| 交互區(qū)間 | 一次互動從開始到結(jié)束的整個生命周期中所需相關(guān)信息的集合稱為一個交互區(qū)間。 例如,在某個互動視頻播放的過程中,當(dāng)其中的某個視頻片段播放至該視頻片段的第30秒時互動組件開始在界面中展示,當(dāng)該視頻片段播放至第40秒時互動組件從界面中消失,則視第30秒為互動的開始,第40秒為互動的結(jié)束。在這次互動中所需要的信息包括互動開始時間、互動展示時長、是否有展示動畫、互動出現(xiàn)時是否暫停播放等等,這些信息共同構(gòu)成了一個交互區(qū)間的定義。互動展示時長最短5秒,最長30秒。關(guān)于交互區(qū)間的具體定義參見交互區(qū)間信息。 |
產(chǎn)品概述
總體框架

互動視頻協(xié)議的輸出方式為腳本文件集,該文件集由若干文件構(gòu)成(詳見腳本文件集結(jié)構(gòu)),由內(nèi)容創(chuàng)作者提供。如上圖所示,在整個系統(tǒng)中,腳本文件集起到承載相關(guān)互動信息的作用,在IVS和IVE之間傳遞。
腳本文件集結(jié)構(gòu)
腳本文件集由以下三個部分構(gòu)成,壓縮后的大小需小于1.5M:
| 文件類型 | 示例名稱 | 功能 |
|---|---|---|
| 索引腳本文件 | index.json | 提供所有的播放區(qū)間和交互區(qū)間的索引信息,腳本文件集內(nèi)唯一 |
| 交互區(qū)間腳本文件 | interact001-Para.json | 配合交互區(qū)間UI樣式文件 實(shí)現(xiàn)交互組件內(nèi)容的動態(tài)配置 一個交互區(qū)間對應(yīng)一個腳本文件,可為多個 |
| 資源文件 | close.png | 交互區(qū)間腳本使用的圖像資源 支持的格式主要包括:png、jpg |
命名規(guī)范
| 文件類型 | 命名規(guī)范 | 約束限制 |
|---|---|---|
| 索引腳本文件 | 名稱固定為index.json | 全小寫,半角英文 |
| 交互區(qū)間腳本文件 | interact+編號-Para.json | “interact”和“-Para”是固定字符,編號為三位數(shù)字,范圍從001~099,順序編號 |
| 資源文件 | 符合常見操作系統(tǒng)中對文件的命名規(guī)范 | 全小寫,半角英文和數(shù)字組成,最大長度20個英文字符和數(shù)字 |
索引腳本文件說明及定義
索引腳本文件基礎(chǔ)結(jié)構(gòu)
索引腳本文件提供了所有的播放區(qū)間和交互區(qū)間的索引信息。
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| base | Dictionary | Y | 包含了文檔所需要的協(xié)議版本號、交互模式等基本信息 |
| globle | Dictionary | N | 包含了全部X因子的名稱及初始值關(guān)于X因子的介紹可參見《互動視頻基礎(chǔ)指南》中的X因子 |
| interactBlockList | Array | Y | 定義了互動視頻所需的全部交互區(qū)間數(shù)組中元素個數(shù)最大值為30 |
| playBlockList | Array | Y | 定義了互動視頻所需的全部播放區(qū)間數(shù)組中元素個數(shù)最大值為100 |
示例
{
"base": {},
"globle": {},
"interactBlockList": [],
"playBlockList": []
}
基礎(chǔ)信息(base)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| filename | String | Y | 當(dāng)用戶首次播放互動視頻時,播放的第一個片段的視頻文件名稱 對于同一互動視頻,第一個片段是唯一的需包含擴(kuò)展名,擴(kuò)展名固定為“.mp4” 最大長度為20個英文字母或數(shù)字 |
| fileVersion | String | Y | 索引腳本文件的文件版本號,當(dāng)索引腳本文件被修改后,需要更新此節(jié)點(diǎn)以做區(qū)分 三個小于10的正整數(shù)以點(diǎn)分割,例如1.0.1 |
| protocolVersion | String | Y | 協(xié)議版本號,當(dāng)前協(xié)議版本號固定為1.0 |
| interactMode | String | Y | 互動能力類型 0: 畫面信息探索互動能力 1: 分支劇情互動能力 關(guān)于互動能力請參見《互動視頻標(biāo)準(zhǔn)》中的互動能力支持 |
示例
"base": {
"filename": "video001.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "1"
}
全局信息(globle)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| varList | Array | N | X因子列表 包含了全部X因子的名稱及初始值 數(shù)組中元素個數(shù)最大值為20 關(guān)于X因子的介紹可參見《互動視頻基礎(chǔ)指南》中的X因子 |
"globle": {
"varList":[]
}
varList
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| name | String | Y | X因子名稱,在本文其他部分中使用的X因子都需在此處定義 這些部分包括: 3.3 交互區(qū)間信息interactBlockList 3.4 播放區(qū)間信息 playBlockList 4.4 按鈕元素信息 btns 4.5 定制元素信息 ctrls 最大長度為20個英文字母 |
| initValue | String | N | X因子初始值,不填寫默認(rèn)為0 本節(jié)點(diǎn)取值范圍為0~100 |
示例
"varList":[
{
"name": "varA",
"initValue": "50"
},
{
"name": "varB",
"initValue": "50"
}
]
交互區(qū)間信息(interactBlockList)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| blockid | String | Y | 交互區(qū)間id 本節(jié)點(diǎn)內(nèi)容格式:interact+編號 interact為固定字符編號為三位數(shù)字,范圍從001~099,順序編號 命名示例:interact001 最大長度為20個英文字母、數(shù)字 |
| inPlayBlockid | String | Y | 該交互區(qū)間所在的播放區(qū)間id 該節(jié)點(diǎn)需在索引腳本文件playBlockList節(jié)點(diǎn)(鏈接到3.4)中存在定義,與playBlockList中的blockid節(jié)點(diǎn)相對應(yīng) 最大長度為20個英文字母、數(shù)字 |
| startTime | String | N | 交互區(qū)間開始時間 單位為秒 本節(jié)點(diǎn)可取值為5.0~36000.0的浮點(diǎn)數(shù) 實(shí)際取值需要滿足以下公式: startTime<=交互區(qū)間所對應(yīng)的視頻片段的總時長-交互區(qū)間展示時長-2 |
| duration | String | N | 交互區(qū)間的展示時長,即互動結(jié)束時間減去互動開始時間所得值 本節(jié)點(diǎn)取值范圍為5.0~30.0的浮點(diǎn)數(shù) 單位為秒 |
| exeShowAnimation | N | 是否執(zhí)行組件展示動畫 取值為“0”或者不填寫表示不展示動畫 取值為“1” 表示展示動畫 組件展示動畫時長為1秒,出現(xiàn)時組件從界面底部由下至上升起、消失時由上至下收起 樣式UI0001、樣式UI0002不能設(shè)置該字段 | |
| des | N | 對交互區(qū)間的描述,將會用在故事線中作為交互區(qū)間的名稱展示 最大長度為9個中英文字符和數(shù)字的組合 | |
| showConditionList | Array | N | 交互區(qū)間展示條件列表 當(dāng)本節(jié)點(diǎn)元素數(shù)量大于0時,交互區(qū)間是否可以展示根據(jù)本節(jié)點(diǎn)中的條件判斷,滿足條件列表中任一條件即可展示交互區(qū)間 數(shù)組中無元素或沒有此節(jié)點(diǎn)默認(rèn)為展示交互區(qū)間 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為20 |
| state | Dictionary | N | 交互區(qū)間開始后,當(dāng)前視頻的播放狀態(tài)信息,可為暫?;蛘卟シ艃煞N狀態(tài)之一 |
| preLoadList | Array | N | 交互區(qū)間中的組件被用戶操作后可能會觸發(fā)視頻片段的跳轉(zhuǎn)。交互區(qū)間包含的所有組件中有可能會觸發(fā)視頻片段跳轉(zhuǎn)的,均要將跳轉(zhuǎn)到的視頻信息在此處定義,包含視頻片段對應(yīng)的播放區(qū)間id和起播時間 本節(jié)點(diǎn)用于進(jìn)行預(yù)加載 數(shù)組中元素個數(shù)最大值為10 |
| UIInfo | Dictionary | Y | 交互區(qū)間對應(yīng)的UI樣式文件、交互區(qū)間腳本文件信息 |
示例
{
"blockid": "interact001",
"inPlayBlockid": "play001",
"startTime": "54.0",
"duration": "20.0",
"exeShowAnimation": "1",
"des": "某某選擇描述",
"showConditionList":[],
"state": {},
"preLoadList":[],
"UIInfo": {}
}
showConditionList
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| expressType | String | N | 此節(jié)點(diǎn)表示條件判斷表達(dá)式類型 交互區(qū)間是否可以展示可通過對showConditionList中的條件進(jìn)行逐一判斷確定。條件列表中的條件可采用以下三種形式之一進(jìn)行定義,即本節(jié)點(diǎn)的取值為: condition:條件判斷 max:取最大值 min:取最小值 |
| express | String | N | 條件判斷表達(dá)式 當(dāng)expressType 為condition時,表達(dá)式支持多個表達(dá)式以&&連接,&&表示需要同時滿足多個表達(dá)式才能展示交互區(qū)間。每個單獨(dú)的條件判斷表達(dá)式左側(cè)為單個X因子、右側(cè)為單個值,支持符號包括:>,<,!=,==,>=,<=,表達(dá)式的最大長度為30個英文字母、字符、數(shù)字。示例表達(dá)式:var1>2&&var2<10當(dāng)expressType 為max時,表達(dá)式需要包含兩個及以上X因子,X因子之間以逗號分隔,需要判斷這些X因子中哪個最大,表達(dá)式的最大長度為30個英文字母、字符、數(shù)字。示例表達(dá)式:var1,var2,var3 當(dāng)expressType 為min時,表達(dá)式需要包含兩個及以上X因子,X因子之間以逗號分隔,需要判斷這些X因子中哪個最小,表達(dá)式的最大長度為30個英文字母、字符、數(shù)字。示例表達(dá)式:var1,var2,var3 |
| expressPara | String | N | 本節(jié)點(diǎn)為表達(dá)式的參數(shù) 當(dāng)expressType為conditon時此項(xiàng)不填寫當(dāng)expressType為max時此項(xiàng)必填,內(nèi)容為某個X因子,表示express列出的X因子中,最大的一個是否為本節(jié)點(diǎn)填寫的X因子,若是則滿足展示條件,否則不滿足展示條件,參數(shù)示例:var1 當(dāng)expressType為min時此項(xiàng)必填,內(nèi)容為某個X因子,表示express列出的X因子中,最小的一個是否為本節(jié)點(diǎn)填寫的X因子,若是則滿足展示條件,否則不滿足展示條件,參數(shù)示例:var2 |
示例
"showConditionList":[
{ // 表示X因子var1大于3并且X因子var2小于10時
// 則滿足展示條件 可展示交互區(qū)間
"express":"var1>3&&var2<10",
"expressType":"condition"
},
{ // 表示X因子var1、var2中如果var2最大
// 則滿足展示條件 可展示交互區(qū)間
"express":"var1,var2,var3",
"expressType":"max",
"expressPara":"var2"
},
{ // 表示X因子var1、var2中如果var2最小
// 則滿足展示條件 可展示交互區(qū)間
"express":"var1,var2,var3",
"expressType":"min",
"expressPara":"var2"
}
]
state
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| playState | String | N | 表示交互區(qū)間展示時視頻的播放狀態(tài),取值可以為以下兩種 play:正常播放(僅支持小寫) pause:暫停播放(僅支持小寫) 不填寫默認(rèn)為play |
示例
"state": {
"playState": "pause"
}
preLoadList
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| playerBlockid | String | N | 本節(jié)點(diǎn)表示需要進(jìn)行預(yù)加載的播放區(qū)間id 該節(jié)點(diǎn)需在索引腳本文件playBlockList節(jié)點(diǎn)(鏈接到3.4)中存在定義,與playBlockList中的blockid節(jié)點(diǎn)相對應(yīng)。 交互區(qū)間中的組件被用戶操作后可能會觸發(fā)視頻片段的跳轉(zhuǎn)。交互區(qū)間包含的所有組件中有可能會觸發(fā)視頻片段跳轉(zhuǎn)的,均要將跳轉(zhuǎn)到的視頻片段對應(yīng)的播放區(qū)間id在此處定義 最大長度為20個英文字母、數(shù)字 |
| preLoadTime | String | N | 需要預(yù)加載的視頻片段的起播時間 交互區(qū)間包含的組件元素中有可能會觸發(fā)視頻片段跳轉(zhuǎn)的,均要將跳轉(zhuǎn)到的視頻片段起播時間在此處定義 取值范圍0~36000.0浮點(diǎn)數(shù),不填寫默認(rèn)為0 單位為秒 |
示例
"preLoadList":[
{
"playerBlockid": "play002",
"preLoadTime": "20.0 "
}
]
UIInfo
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| UIid | String | Y | 本節(jié)點(diǎn)為交互區(qū)間UI樣式id 目前平臺開放三種UI樣式,對應(yīng)樣式編號為 UI0001 UI0002 UI0003 UI0004 |
| paraFile | String | N | 交互區(qū)間腳本文件路徑+文件名 路徑為相對與腳本文件集根路徑的相對路徑 最大長度為30個英文字母、數(shù)字 |
示例
"UIInfo": {
"UIid": "UI0001",
"paraFile" : "interact001-Para.json"
}
播放區(qū)間信息(playBlockList)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| blockid | String | Y | 播放區(qū)間id 本節(jié)點(diǎn)內(nèi)容格式為play+編號 編號為三位數(shù)字,范圍從001~099,順序編號 最大長度為20個英文字母、數(shù)字 |
| filename | String | Y | 播放區(qū)間對應(yīng)視頻文件的名稱 該名稱在整個播放區(qū)間列表中需唯一 需包含擴(kuò)展名,擴(kuò)展名固定為“.mp4” 最大長度為20個英文字母或數(shù)字 |
| endAction | Dictionary | N | 當(dāng)一個視頻片段播放結(jié)束時可能存在需要處理的操作,如播放下一視頻片段等,本節(jié)點(diǎn)中需要列出相關(guān)操作的定義 不定義則意味著播放區(qū)間對應(yīng)的視頻片段播放結(jié)束后整個互動視頻播放結(jié)束 |
示例
{
"blockid": "play001",
"filename": "video002.mp4",
"endAction": {}
}
endAction
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| actionName | String | Y | 本節(jié)點(diǎn)表示播放區(qū)間對應(yīng)的視頻片段播放結(jié)束的時候,需要處理的事件名稱,具體取值如下: SWITCHVIDEO :若當(dāng)前播放的視頻片段播放結(jié)束后,需要切換到下一視頻片段播放,那么應(yīng)在當(dāng)前視頻片段對應(yīng)的播放區(qū)間定義中配置endAction的actionName為SWITCHVIDEO CONDITIONSWITCH:若當(dāng)前播放的視頻片段播放結(jié)束后,需要根據(jù)X因子的值選擇將要播放的下一視頻片段,那么應(yīng)在當(dāng)前視頻片段對應(yīng)的播放區(qū)間定義中配置endAction的actionName為CONDITIONSWITCH |
| nextPlayBlockid | String | N | 當(dāng)前視頻片段播放結(jié)束時,可切換至下一視頻片段播放,本節(jié)點(diǎn)為下一視頻片段所對應(yīng)的播放區(qū)間id本節(jié)點(diǎn)需在索引腳本文件playBlockList節(jié)點(diǎn)中存在定義,與playBlockList中的blockid節(jié)點(diǎn)相對應(yīng) 最大長度為20個英文字母、數(shù)字 當(dāng)actionName 為SWITCHVIDEO時此項(xiàng)必填 當(dāng)actionName 為CONDITIONSWITCH時此項(xiàng)不填 當(dāng)索引腳本文件中,base字段interactMode節(jié)點(diǎn)為0時即畫面信息探索類型,此時nextPlayBlockid必填,固定為第一段視頻的播放區(qū)間id |
| nextPlayTime | String | N | 當(dāng)前視頻片段播放結(jié)束時,可切換至下一視頻片段播放,本節(jié)點(diǎn)為下一視頻片段的起播時間 取值范圍為0~36000.0的浮點(diǎn)數(shù),不填寫默認(rèn)為0單位為秒 當(dāng)actionName 為SWITCHVIDEO時此項(xiàng)必填 當(dāng)actionName 為CONDITIONSWITCH時此項(xiàng)不填 |
| switchConditionList | Array | N | 若當(dāng)前播放的視頻片段播放結(jié)束后,需要根據(jù)X因子的值有條件的選擇將要播放的下一視頻片段,則可配置actionName為CONDITIONSWITCH,并在本節(jié)點(diǎn)中配置需要判斷的條件列表 數(shù)組元素個數(shù)最大值為10 CONDITIONSWITCH使用的切換條件列表 當(dāng)actionName 為CONDITIONSWITCH時此項(xiàng)必填 當(dāng)actionName 為SWITCHVIDEO時此項(xiàng)不填 |
示例
"endAction" : {
"actionName": "SWITCHVIDEO",
"nextPlayBlockid": "play001",
"nextPlayTime": "76.0"
}
switchConditionList
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| expressType | String | N | 此節(jié)點(diǎn)表示條件判斷表達(dá)式類型 若當(dāng)前視頻片段播放結(jié)束后需要根據(jù)X因子的值判斷將要播放的下一視頻片段,可通過對showConditionList中的條件進(jìn)行逐一判斷確定。判斷條件可采用以下三種形式之一進(jìn)行定義,即本節(jié)點(diǎn)的取值為: condition:條件判斷 max:取最大值 min:取最小值 |
| express | String | N | 本節(jié)點(diǎn)為條件判斷表達(dá)式 當(dāng)expressType為condition時:支持多個表達(dá)式以&&連接,&&表示需要同時滿足多個表達(dá)式才能展示交互區(qū)間。每個單獨(dú)的條件判斷表達(dá)式左側(cè)為單個X因子、右側(cè)為單個值,支持符號包括:>,<,!=,==,>=,<=,最大長度為30個英文字母、字符、數(shù)字。示例表達(dá)式:varA>=3&&varB<2 當(dāng)expressType為max時:表達(dá)式需要包含兩個及以上X因子,X因子之間以逗號分隔,表示判斷這些X因子中哪個最大,最大長度為30個英文字母、字符、數(shù)字。示例表達(dá)式:varA,varB,varC 當(dāng)expressType為min時:表達(dá)式需要包含兩個及以上X因子,X因子之間以逗號分隔,表示判斷這些X因子中哪個最小,最大值長度30個英文字母、字符、數(shù)字。示例表達(dá)式:varA,varB,varC |
| expressPara | String | N | 本節(jié)點(diǎn)為表達(dá)式的參數(shù) 當(dāng)expressType為conditon時此項(xiàng)不填寫 當(dāng)expressType為max時此項(xiàng)必填,內(nèi)容為某個X因子,表示express列出的X因子中,最大的一個是否為本節(jié)點(diǎn)填寫的X因子,若是則滿足切換條件,否則不滿足切換條件 當(dāng)expressType為min時此項(xiàng)必填,內(nèi)容為某個X因子,表示express列出的X因子中,最小的一個是否為本節(jié)點(diǎn)填寫的X因子,若是則滿足切換條件,否則不滿足切換條件 |
| nextPlayBlockid | String | N | 當(dāng)上述條件能夠滿足時,可通過本節(jié)點(diǎn)中的內(nèi)容判斷將要播放的下一視頻片段,本節(jié)點(diǎn)為下一片段所對應(yīng)的播放區(qū)間id 本節(jié)點(diǎn)需在索引腳本文件playBlockList節(jié)點(diǎn)(鏈接到3.4)中存在定義,與playBlockList中的blockid節(jié)點(diǎn)相對應(yīng) 最大長度為20個英文字母、數(shù)字 |
| nextPlayTime | String | N | 當(dāng)上述條件能夠滿足時,可通過本節(jié)點(diǎn)中的內(nèi)容判斷將要播放的下一視頻片段的起播時間 取值范圍為0~36000.0的浮點(diǎn)數(shù),不填寫默認(rèn)為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"
}
]
交互區(qū)間腳本文件說明及定義
交互區(qū)間腳本文件基礎(chǔ)結(jié)構(gòu)
交互區(qū)間腳本文件為交互區(qū)間UI樣式文件提供了組件展示所必要的信息,作為交互區(qū)間UI樣式文件的輸入,實(shí)現(xiàn)組件內(nèi)容的動態(tài)化處理、展示。
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| base | Dictionary | Y | 包含了文檔所需要的協(xié)議版本號、文件版本號等基本信息 |
| metas | Array | N | 包含了組件中可供內(nèi)容制作者配置的全部文本元素 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為10 |
| imgs | Array | N | 包含了組件中可供內(nèi)容制作者配置的全部圖像元素 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為10 |
| btns | Array | N | 包含了組件中可供內(nèi)容制作者配置的全部按鈕元素 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為10 |
| ctrls | Array | N | 包含了組件中可供內(nèi)容制作者配置的全部其他定制元素 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為10 |
| statistics | Dictionary | Y | 統(tǒng)計信息,發(fā)送頁面展示統(tǒng)計時使用 |
示例
{
"base": {},
"metas":[],
"imgs":[],
"btns":[],
"ctrls":[],
"statistics":{}
}
基礎(chǔ)信息(base)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| interactid | String | Y | 交互區(qū)間id 本節(jié)點(diǎn)內(nèi)容格式:interact+編號 interact為固定字符編號為三位數(shù)字,范圍從001~099,順序編號 命名示例:interact001 最大長度為20個英文字母、數(shù)字 |
| fileVersion | String | Y | 交互區(qū)間腳本文件的文件版本號,當(dāng)交互區(qū)間腳本文件被修改后,需要更新此節(jié)點(diǎn)以做區(qū)分 三個小于10的正整數(shù)以點(diǎn)分割,例如1.0.0 |
| protocolVersion | String | Y | 協(xié)議版本號,當(dāng)前協(xié)議版本號固定為1.0 |
示例
"base": {
"interactid ": "interact017",
"fileVersion": "1.0.0",
"protocolVersion": "1.0"
}
文本元素信息(metas)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| id | String | Y | 文本元素id 本節(jié)點(diǎn)內(nèi)容格式為meta+編號 meta為固定字符 編號為三位數(shù)字,范圍從001~099,順序編號 |
| text | String | N | 文本元素展示在界面中的文本內(nèi)容 最大長度為50個中英文字符、數(shù)字 |
示例
"metas":[
{
"id":"meta001",
"text":"接下來"
},
{
"id":"meta002",
"text":"你有沒有什么話對我說?"
}
]
圖像元素信息(imgs)
屬性示例
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| id | String | Y | 圖像元素id 本節(jié)點(diǎn)內(nèi)容格式為img+編號 img為固定字符 編號為三位數(shù)字,范圍從001~099,順序編號 |
| url | String | N | 圖像元素在界面中展示的圖片對應(yīng)的圖片路徑 路徑為資源在整個腳本文件集中的相對路徑 最大長度為30個中英文字符、數(shù)字 例如:res/select.png |
示例
"imgs":[
{
"id":"img001",
"url":"res/select.png"
},
{
"id":"img002",
"url":"res/selected.png"
}
]
按鈕元素信息(btns)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| id | String | Y | 按鈕元素id 本節(jié)點(diǎn)內(nèi)容格式為btn+編號 btn為固定字符 編號為三位數(shù)字,范圍從001~099,順序編號 |
| text | String | N | 按鈕元素在界面中展示的文本內(nèi)容 最大長度為10個中英文字符、數(shù)字 |
| des | String | N | 按鈕元素的描述,僅用于統(tǒng)計,不用做實(shí)際展示 最大長度為20個中英文字符、數(shù)字 |
| isDefaultSelect | String | N | 倒計時結(jié)束之后是否以本按鈕元素為默認(rèn)選項(xiàng) “1”默認(rèn)選項(xiàng),其他值或空值為非默認(rèn)選項(xiàng) 所有按鈕元素中最多只能有一個為1,倒計時結(jié)束后會默認(rèn)選擇該選項(xiàng) 如果一個按鈕配置了showConditionList則不能設(shè)置isDefaultSelect為1 |
| backImgNormal | String | N | 按鈕元素在界面中展示的背景圖片的路徑 路徑為資源在整個腳本文件集中的相對路徑 最大長度為30個中英文字符、數(shù)字 例如:res/back1.png |
| showConditionList | Array | N | 當(dāng)組件展示時,元素可能會受到X因子的影響,根據(jù)X因子的值來確定是否能夠展示,此時可以使用本節(jié)點(diǎn)來判斷元素是否滿足展示條件 當(dāng)本節(jié)點(diǎn)不為空時展示條件中有任意一條滿足則展示元素,否則不展示 當(dāng)本節(jié)點(diǎn)為空或不存在時默認(rèn)為展示對應(yīng)的元素 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為20 |
| statistics | Dictionary | Y | 發(fā)送點(diǎn)擊統(tǒng)計時使用的信息 按鈕點(diǎn)擊后根據(jù)本節(jié)點(diǎn)內(nèi)容發(fā)送點(diǎn)擊統(tǒng)計,用于統(tǒng)計展示點(diǎn)擊比 |
| actionList | Array | N | 本節(jié)點(diǎn)為按鈕被點(diǎn)擊后所做觸發(fā)事件的列表 當(dāng)一個按鈕被點(diǎn)擊時,用戶操作可能會觸發(fā)視頻片段的切換、視頻的暫停、X因子的計算等操作,這些操作均可在本節(jié)點(diǎn)中以列表形式定義 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為20 |
示例
"btns":[
{
"id":"btn001",
"text":"不后悔",
"des":"不后悔",
"isDefaultSelect":"1",
"backImgNormal":"res/back1.png",
"showConditionList":[],
"statistics":{},
"actionList":[]
}
]
statistics
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| rseat | String | N | 統(tǒng)計節(jié)點(diǎn),定義了按鈕在組件中的位置,當(dāng)用戶點(diǎn)擊按鈕時將該節(jié)點(diǎn)的作為統(tǒng)計信息發(fā)送到后臺,以便于后臺統(tǒng)計展示點(diǎn)擊比 最大長度為20個中英文字符 如不填寫默認(rèn)為當(dāng)前區(qū)間對應(yīng)的元素id 例如:btn001 |
| block | String | N | 統(tǒng)計節(jié)點(diǎn),定義了按鈕的描述信息,當(dāng)用戶點(diǎn)擊按鈕時將發(fā)送該節(jié)點(diǎn)的統(tǒng)計信息到后臺,以便于后臺統(tǒng)計展示點(diǎn)擊比 最大長度為20個中英文字符如不填寫默認(rèn)為當(dāng)前交互區(qū)間的interactid 例如:interact001 |
示例
"statistics":{
"rseat":"btn001",
"block":"interact001"
}
actionList
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| actionName | String | N | 本節(jié)點(diǎn)為按鈕被點(diǎn)擊后所觸發(fā)的事件的名稱 當(dāng)一個按鈕被點(diǎn)擊時,用戶操作可能會觸發(fā)視頻片段的切換、視頻的暫停、X因子的計算等操作,這些操作在本節(jié)點(diǎn)中定義,并配合事件參數(shù)字典actionPara共同完成功能。 本節(jié)點(diǎn)中定義的事件可以為以下幾種: ALGORITHM:X因子運(yùn)算,有參數(shù),參數(shù)在actionPara中定義 SWITCHVIDEO:視頻切換,有參數(shù),參數(shù)在actionPara中定義 CONDITIONSWITCH:條件視頻切換,有參數(shù),參數(shù)在actionPara中定義 PLAY:播放,無參數(shù) PAUSE:暫停,無參數(shù) REMOVE:移除交互區(qū)間,無參數(shù) |
| actionPara | Dictionary | N | 以上有參數(shù)的事件對應(yīng)的參數(shù)信息字典 當(dāng)actionName 為ALGORITHM時,參數(shù)定義詳見ALGORITHM 當(dāng)actionName 為SWITCHVIDEO時,參數(shù)定義詳見SWITCHVIDEO 當(dāng)actionName 為CONDITIONSWITCH時,參數(shù)定義詳見CONDITIONSWITCH |
示例
"actionList":[
{
"actionName":"ALGORITHM",
"actionPara":{}
}
]
ALGORITHM
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| algorithmList | Array | N | 一組X因子的運(yùn)算操作集,不支持單一因子的重復(fù)計算 當(dāng)用戶點(diǎn)擊按鈕元素時,可根據(jù)本節(jié)點(diǎn)中定義的運(yùn)算表達(dá)式改變X因子的值 表達(dá)式形式如var1=var1+1,等號左邊為要改變的X因子,等號右側(cè)為公式 公式可以支持多個X因子之間的加減計算 當(dāng)計算所得到的X因子小于0時,將取0為結(jié)果 數(shù)組元素個數(shù)最大值為10 |
示例
{
"actionName":"ALGORITHM",
"actionPara":{
"algorithmList":[
"globalA=varA-1",
"globalB=varB+1"
]
}
}
SWITCHVIDEO
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| insertToTime | String | N | 當(dāng)用戶點(diǎn)擊按鈕元素時,可通過在actionList中配置SWITCHVIDEO事件,實(shí)現(xiàn)跳轉(zhuǎn)到下一個視頻片段,可立即切換,也可預(yù)設(shè)當(dāng)前視頻切換到下一視頻的時間。 當(dāng)insertToTime為0或者空則立即播放下一視頻 當(dāng)insertToTime大于0時將以insertToTime為預(yù)設(shè)時間,在該時間點(diǎn)切換至下一視頻 例如,insertToTime為100時,當(dāng)前視頻將會在播放到100秒時執(zhí)行切換下一視頻的操作 本節(jié)點(diǎn)可取值為0~36000.0的浮點(diǎn)數(shù) 單位為秒 本節(jié)點(diǎn)的最小值需要大于交互區(qū)間的開始時間 本節(jié)點(diǎn)的最大值值需要小于等于當(dāng)前視頻片段的總時長 |
| nextPlayBlockid | String | N | 下一視頻片段對應(yīng)的播放區(qū)間id 該節(jié)點(diǎn)需在索引腳本文件playBlockList節(jié)點(diǎn)(鏈接到3.4)中存在定義,與playBlockList中的blockid節(jié)點(diǎn)相對應(yīng) 最大長度為20個英文字母、數(shù)字 |
| nextPlayTime | String | N | 下一視頻片段的起播時間 本節(jié)點(diǎn)可取值為0~36000.0的浮點(diǎn)數(shù) 單位為秒 不填寫默認(rèn)為0 本節(jié)點(diǎn)的值需要小于下一視頻片段的總時長 |
示例
{
"actionName":"SWITCHVIDEO",
"actionPara":{
"insertToTime":"0",
"nextPlayBlockid":"play002",
"nextPlayTime":"0"
}
}
CONDITIONSWITCH
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| switchConditionList(鏈接到3.4.1.1) | Array | N | CONDITIONSWITCH使用的切換條件列表 若當(dāng)用戶觸發(fā)按鈕元素時,需要根據(jù)X因子的值有條件的選擇將要播放的下一視頻片段,則可配置actionName為CONDITIONSWITCH,并在本節(jié)點(diǎn)中配置需要判斷的條件列表及滿足條件后跳轉(zhuǎn)的下一視頻片段的信息 列表從頭開始遍歷數(shù)組,找到第一個滿足條件的元素,則取其節(jié)點(diǎn)信息進(jìn)行視頻切換 express、expressType、expressPara三個元素用于判斷切換條件是否滿足,具體含義可參見本文playBlockList中switchConditionList對三個屬性的描述 insertToTime、nextPlayBlockid、nextPlayTime三個元素用于滿足條件后的視頻切換,具體含義SWITCHVIDEO中對三個屬性的描述 數(shù)組元素個數(shù)最大值為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)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| id | String | Y | 元素id 本節(jié)點(diǎn)內(nèi)容格式為ctrl+編號 ctrl為固定字符 編號為三位數(shù)字,范圍從001~099,順序編號 |
| controlType | String | N | 定制元素類型 目前僅支持倒計時元素 倒計時元素該節(jié)點(diǎn)的值固定為COUNTDOWN |
| controlBackColor | String | N | 元素背景的RGB十六進(jìn)制顏色值 固定以0x開頭后接RGB十六進(jìn)制顏色值 顏色數(shù)據(jù)取值從000000~ffffff 例如Oxffffff |
| totalTime | String | N | 交互區(qū)間的展示時長 本節(jié)點(diǎn)取值范圍為5.0~30.0的浮點(diǎn)數(shù)本 節(jié)點(diǎn)需要與交互區(qū)間腳本文件在索引腳本文件中定義的展示時長相同,具體參見interactBlockList中的duration 單位為秒 |
| statistics | Dictionary | Y | 默認(rèn)選擇統(tǒng)計節(jié)點(diǎn) 倒計時結(jié)束之后如果沒有按鈕元素配置了isDefaultSelect則執(zhí)行COUNTDOWN倒計時元素中的事件 |
| actionList | Array | N | 倒計時完成后默認(rèn)執(zhí)行事件 倒計時結(jié)束之后如果沒有按鈕元素配置了isDefaultSelect則執(zhí)行COUNTDOWN倒計時元素actionList中定義的事件 本節(jié)點(diǎn)數(shù)組中元素個數(shù)最大值為20 |
示例
"ctrls": [
{
"id":"ctrl001",
"controlType":"COUNTDOWN",
"controlBackColor":"0xffffff",
"totalTime":"7",
"statistics":{
"rseat":"0",
"block":"call block"
},
"actionList":[
{
"actionName":"PLAY",
"actionPara":{}
},
{
"actionName":"REMOVE",
"actionPara":{}
}
]
}
]
統(tǒng)計信息(statistics)
屬性說明
| 參數(shù)名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| rpage | String | N | 統(tǒng)計節(jié)點(diǎn),定義了交互區(qū)間的頁面信息,當(dāng)用戶點(diǎn)擊按鈕時將發(fā)送該節(jié)點(diǎn)的統(tǒng)計信息到后臺,以便于統(tǒng)計展示點(diǎn)擊比 最大長度為20個英文字母、數(shù)字 如不填寫默認(rèn)為索引腳本文件中base節(jié)點(diǎn)下filename節(jié)點(diǎn)的內(nèi)容 |
| block | String | N | 統(tǒng)計節(jié)點(diǎn),定義了交互區(qū)塊的信息,當(dāng)用戶點(diǎn)擊按鈕時將發(fā)送該節(jié)點(diǎn)的統(tǒng)計信息到后臺,以便于后臺統(tǒng)計展示點(diǎn)擊比 最大長度為20個英文字母、數(shù)字 如不填寫默認(rèn)為交互區(qū)間id 例如:interact001 |
示例
"statistics":{
"rpage":"video001.mp4",
"block":"interact001"
}
交互區(qū)間UI樣式文件說明
交互區(qū)間組件樣式文件以交互區(qū)間腳本文件為輸入,以UI為輸出。該文件從交互區(qū)間腳本文件中獲取可動態(tài)配置的組件內(nèi)容,如文字、圖片、背景樣式等,經(jīng)過運(yùn)行時的動態(tài)化UI生成,實(shí)現(xiàn)組件的展示及交互區(qū)間組件樣式文件的復(fù)用。
目前愛奇藝平臺開放的交互區(qū)間UI樣式包含以下四種:
| 樣式編號 | 樣式名稱 | 可參考實(shí)現(xiàn)的互動能力 |
|---|---|---|
| UI0001 | 交互區(qū)間UI樣式一 | 分支劇情 |
| UI0002 | 交互區(qū)間UI樣式二 | 分支劇情 |
| UI0003 | 交互區(qū)間UI樣式三 | 畫面信息探索 |
| UI0004 | 交互區(qū)間UI樣式四 | 畫面信息探索 |
交互區(qū)間UI樣式一
樣式描述

樣式說明
本樣式中要求交互區(qū)間腳本文件除了滿足上文中對于交互區(qū)間腳本的定義外,還需滿足以下條件:
| 節(jié)點(diǎn)名稱 | 數(shù)組元素數(shù)量要求 | 數(shù)組中各元素與樣式的對應(yīng)關(guān)系 |
|---|---|---|
| 文本元素數(shù)組metas | 1 | 文本元素數(shù)組中第一個元素的text節(jié)點(diǎn)內(nèi)容為標(biāo)題內(nèi)容 text節(jié)點(diǎn)內(nèi)容最大長度為12個中英文字符、數(shù)字 |
| 圖像元素數(shù)組imgs | 2 | 圖像元素數(shù)組中第一個元素的url節(jié)點(diǎn)內(nèi)容為樣式中各按鈕元素選中前的背景圖路徑 數(shù)組中第二個元素的url節(jié)點(diǎn)內(nèi)容為樣式中各按鈕元素選中后的背景圖路徑 上述路徑均為相對于腳本文件集根路徑的路徑 |
| 按鈕元素數(shù)組btns | 1~5 | 按鈕元素數(shù)組中元素的個數(shù)與樣式中展示在界面上的按鈕的數(shù)量相同,第一到第五個元素將從左到右依次排列 各按鈕元素中的text節(jié)點(diǎn)內(nèi)容為按鈕展示在界面上的名稱 text節(jié)點(diǎn)內(nèi)容最大長度為4個中英文字符、數(shù)字 |
| 定制元素數(shù)組ctrls | 1 | 定制元素數(shù)組個數(shù)固定為1 類型controlType內(nèi)容固定為COUNTDOWN,即倒計時元素。 |
注意事項(xiàng)
本樣式自帶展示收起動畫效果,因此使用本樣式時,交互區(qū)間定義中的exeShowAnimation節(jié)點(diǎn)不能為1。
交互區(qū)間UI樣式二
樣式描述

樣式說明
本樣式與樣式一的主要差別在于無標(biāo)題內(nèi)容。
本樣式中要求交互區(qū)間腳本文件除了滿足上文中對于交互區(qū)間腳本的定義外,還需滿足以下條件:
| 節(jié)點(diǎn)名稱 | 數(shù)組元素數(shù)量要求 | 數(shù)組中各元素與樣式的對應(yīng)關(guān)系 |
|---|---|---|
| 文本元素數(shù)組metas | 0 | 文本元素數(shù)組數(shù)量固定為0 |
| 圖像元素數(shù)組imgs | 2 | 圖像元素數(shù)組中第一個元素的url節(jié)點(diǎn)內(nèi)容為樣式中各按鈕元素選中前的背景圖路徑 數(shù)組中第二個元素的url節(jié)點(diǎn)內(nèi)容為樣式中各按鈕元素選中后的背景圖路徑 數(shù)組中第三個元素的url節(jié)點(diǎn)內(nèi)容為組件背景圖 上述路徑均為相對于腳本文件集根路徑的路徑 |
| 按鈕元素數(shù)組btns | 1~5 | 按鈕元素數(shù)組中元素的個數(shù)與樣式中展示在界面上的按鈕的數(shù)量相同,第一到第五個元素將從左到右依次排列 各按鈕元素中的text節(jié)點(diǎn)內(nèi)容為按鈕展示在界面上的名稱 text節(jié)點(diǎn)內(nèi)容最大長度為4個中英文字符、數(shù)字 |
| 定制元素數(shù)組ctrls | 1 | 定制元素數(shù)組個數(shù)固定為1 類型節(jié)點(diǎn)controlType內(nèi)容固定為COUNTDOWN,即倒計時元素。 |
注意事項(xiàng)
本樣式自帶展示收起動畫效果,因此使用本樣式時,交互區(qū)間定義中的exeShowAnimation節(jié)點(diǎn)不能為1。
交互區(qū)間UI樣式三
樣式描述

樣式說明
本樣式中要求交互區(qū)間腳本文件除了滿足上文中對于交互區(qū)間腳本的定義外,還需滿足以下條件:
| 節(jié)點(diǎn)名稱 | 數(shù)組元素數(shù)量要求 | 數(shù)組中各元素與樣式的對應(yīng)關(guān)系 |
|---|---|---|
| 文本元素數(shù)組metas | 2 | 文本元素數(shù)組第一個元素的text節(jié)點(diǎn)內(nèi)容為提示內(nèi)容 文本元素數(shù)組第二個元素的text節(jié)點(diǎn)內(nèi)容為標(biāo)題內(nèi)容 text節(jié)點(diǎn)內(nèi)容最大長度為12個中英文字符、數(shù)字 |
| 圖像元素數(shù)組imgs | 3 | 圖像元素數(shù)組中第一個元素的url節(jié)點(diǎn)內(nèi)容為組件背景圖的圖片路徑 數(shù)組中第二個元素的url節(jié)點(diǎn)內(nèi)容為組件左側(cè)用圖的圖片路徑 數(shù)組中第三個元素的url節(jié)點(diǎn)內(nèi)容為組件提示信息背景圖的圖片路徑 上述路徑均為相對于腳本文件集根路徑的路徑 |
| 按鈕元素數(shù)組btns | 3 | 按鈕元素數(shù)組中第一個元素為關(guān)閉按鈕,backImgNormal節(jié)點(diǎn)內(nèi)容為按鈕的背景圖片路徑 按鈕元素數(shù)組中第二個元素為左側(cè)按鈕,text節(jié)點(diǎn)內(nèi)容為按鈕展示在界面上的名稱,backImgNormal節(jié)點(diǎn)內(nèi)容為按鈕的背景圖片路徑 按鈕元素數(shù)組中第三個元素為右側(cè)按鈕,text節(jié)點(diǎn)內(nèi)容為按鈕展示在界面上的名稱,backImgNormal節(jié)點(diǎn)內(nèi)容為按鈕的背景圖片路徑 text節(jié)點(diǎn)內(nèi)容最大長度為4個中英文字符、數(shù)字 |
| 定制元素數(shù)組ctrls | 1 | 定制元素數(shù)組個數(shù)固定為1 類型節(jié)點(diǎn)controlType內(nèi)容固定為COUNTDOWN,即倒計時元素。 |
交互區(qū)間UI樣式四
樣式描述

樣式說明
本樣式中要求交互區(qū)間腳本文件除了滿足上文中對于交互區(qū)間腳本的定義外,還需滿足以下條件:
| 節(jié)點(diǎn)名稱 | 數(shù)組元素數(shù)量要求 | 數(shù)組中各元素與樣式的對應(yīng)關(guān)系 |
|---|---|---|
| 文本元素數(shù)組metas | 1 | 文本元素數(shù)組第一個元素的text節(jié)點(diǎn)內(nèi)容為提示內(nèi)容 text節(jié)點(diǎn)內(nèi)容最大長度為12個中英文字符、數(shù)字 |
| 圖像元素數(shù)組imgs | 3 | 圖像元素數(shù)組第一個元素的url節(jié)點(diǎn)內(nèi)容為組件背景圖的圖片路徑 數(shù)組中第二個元素的url節(jié)點(diǎn)內(nèi)容為組件左側(cè)用圖的圖片路徑 數(shù)組中第三個元素的url節(jié)點(diǎn)內(nèi)容為提示信息背景圖的圖片路徑 上述路徑均為相對于腳本文件集根路徑的路徑 |
| 按鈕元素數(shù)組btns | 1~20 | 按鈕元素數(shù)組中第一個元素為關(guān)閉按鈕 數(shù)組中其他按鈕為展示在界面上的人物按鈕,按鈕text節(jié)點(diǎn)內(nèi)容為展示在界面中的人物名稱,按鈕的backImgNormal節(jié)點(diǎn)內(nèi)容為展示在界面中的個人物頭像 除關(guān)閉按鈕外的其他按鈕將按定義順序在界面中從左到右依次排列 各按鈕元素中的text節(jié)點(diǎn)內(nèi)容為按鈕展示在界面上的名稱 text節(jié)點(diǎn)內(nèi)容最大長度為4個中英文字符、數(shù)字 |
| 定制元素數(shù)組ctrls | 1 | 定制元素數(shù)組個數(shù)固定為1 類型節(jié)點(diǎn)controlType內(nèi)容固定為COUNTDOWN,即倒計時元素。 |
附錄
本附錄提供了兩個根據(jù)互動視頻開放協(xié)議實(shí)現(xiàn)的示例,供內(nèi)容創(chuàng)作者、互動視頻從業(yè)者等相關(guān)人員參考。
示例一
該示例包含了部分分支劇情互動能力。
腳本文件目錄結(jié)構(gòu)

| 文件名稱 | 說明 |
|---|---|
| index.json | 索引腳本文件 |
| interact001 | 交互區(qū)間interact001對應(yīng)的交互區(qū)間腳本文件所在文件夾 |
| interact002 | 交互區(qū)間interact002對應(yīng)的交互區(qū)間腳本文件所在文件夾 |
| res | 資源文件夾 |

| 文件名稱 | 說明 |
|---|---|
| interact001-Para.json | 交互區(qū)間interact001對應(yīng)的交互區(qū)間腳本文件 |

| 文件名稱 | 說明 |
|---|---|
| interact002-Para.json | 交互區(qū)間interact002對應(yīng)的交互區(qū)間腳本文件 |

| 文件名稱 | 說明 |
|---|---|
| select.png | 按鈕元素選中前背景圖 |
| selected.png | 按鈕元素選中后背景圖 |
| bknotitle.png | 無標(biāo)題樣式背景圖 |
| bktitle.png | 有標(biāo)題樣式背景圖 |
劇情結(jié)構(gòu)示意圖

腳本注釋
索引腳本文件注釋:
{
"base": {
"filename": "videoA.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "1"
},
"interactBlockList":[
{
"blockid": "interact001",
"inPlayBlockid": "play001",//交互區(qū)間出現(xiàn)在播放區(qū)間id為play001的視頻片段中
"startTime": "120",//交互區(qū)間開始時間為120s
"duration": "10",//交互區(qū)間展示時長為10s
"des" : "是否去追滔滔",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play002",
"preLoadTime":"0"
},
{
"playerBlockid": "play003",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0001",//交互區(qū)間的組件使用了樣式UI0001
"paraFile": "interact001/interact001-Para.json",//交互區(qū)間使用的交互區(qū)間腳本文件的路徑
}
},
{
"blockid": "interact002",
"inPlayBlockid": "play002",//交互區(qū)間出現(xiàn)在播放區(qū)間id為play002的視頻片段中
"startTime": "240",//交互區(qū)間開始時間為240s
"duration": "10",//交互區(qū)間展示時長為10s
"des": "是否喜歡禮物",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play004",
"preLoadTime":"0"
},
{
"playerBlockid": "play005",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0002",//交互區(qū)間的組件使用了樣式UI0002
"paraFile": "interact002/interact002-Para.json",//交互區(qū)間使用的交互區(qū)間腳本文件的路徑
}
}
],
"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": {}
}
]
}
交互區(qū)間interact001互動元素設(shè)置對照:

交互區(qū)間interact001腳本文件注釋:
{
"base": {
"interactid":"interact001",
"fileVersion":"1.0.0",
"protocolVersion":"1.0"
},
"metas":[
{
"id":"meta001",
"text":"是否去追滔滔"//元素1 標(biāo)題 內(nèi)容
}
],
"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 第一個按鈕 內(nèi)容
"des":"追滔滔",
"isDefaultSelect":"1",//默認(rèn)選中第一個按鈕
"statistics":{
"rseat":"btn001",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//選擇按鈕后執(zhí)行切換視頻的操作
"actionPara":{
"insertToTime":"130",//在當(dāng)前視頻片段播放到130s時開始切換視頻
"nextPlayBlockid":"play002",//下一個視頻片段的播放區(qū)間id為play002
"nextPlayTime":"0"//下一個視頻從0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
},{
"id":"btn002",
"text":"再想想",//元素3 第二個按鈕 內(nèi)容
"des":"再想想",
"statistics":{
"rseat":"btn002",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//選擇按鈕后執(zhí)行切換視頻的操作
"actionPara":{
"insertToTime":"130",//在當(dāng)前視頻片段播放到130s時開始切換視頻
"nextPlayBlockid":"play003",//下一個視頻片段的播放區(qū)間id為play003
"nextPlayTime":"0"//下一個視頻從0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素類型為倒計時
"controlBackColor":"0xffffff",//倒計時元素的背景顏色
"totalTime":"10",//倒計時時長,與索引腳本文件中本交互區(qū)間的展示時長相同
"statistics":{
"rseat":"ctrl001",
"block":"interact001"
},
"actionList":[]
}
],
"statistics":{
"rpage":"videoA.mp4",
"block":"interact001"
}
}
交互區(qū)間interact002中的互動元素設(shè)置對照:

交互區(qū)間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 第一個按鈕 內(nèi)容
"des":"喜歡",
"isDefaultSelect":"1",//默認(rèn)選中第一個按鈕
"statistics":{
"rseat":"btn001",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//選擇按鈕后執(zhí)行切換視頻的操作
"actionPara":{
"insertToTime":"250",//在當(dāng)前視頻片段播放到250s時開始切換視頻
"nextPlayBlockid":"play004",//下一個視頻片段的播放區(qū)間id為play004
"nextPlayTime":"0"//下一個視頻從0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
},{
"id":"btn002",
"text":"不喜歡",//元素2 第二個按鈕 內(nèi)容
"des":"不喜歡",
"statistics":{
"rseat":"btn002",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//選擇按鈕后執(zhí)行切換視頻的操作
"actionPara":{
"insertToTime":"250",//在當(dāng)前視頻片段播放到250s時開始切換視頻
"nextPlayBlockid":"play005",//下一個視頻片段的播放區(qū)間id為play005
"nextPlayTime":"0"//下一個視頻從0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",
"controlBackColor":"0xffffff",
"totalTime":"10",
"statistics":{
"rseat":"ctrl001",
"block":"interact002"
},
"actionList":[]
}
],
"statistics":{
"rpage":"interact002",
"block":"videoA.mp4"
}
}
示例二
該示例包含了部分畫面信息探索互動能力。
腳本文件目錄結(jié)構(gòu)

| 文件名稱 | 說明 |
|---|---|
| index.json | 索引腳本文件 |
| interact001 | 交互區(qū)間interact001對應(yīng)的交互區(qū)間腳本文件及資源所在文件夾 |
| interact002 | 交互區(qū)間interact002對應(yīng)的交互區(qū)間腳本文件及資源所在文件夾 |

| 文件名稱 | 說明 |
|---|---|
| interact001-Para.json | 交互區(qū)間interact001對應(yīng)的交互區(qū)間腳本文件 |
| close.png | 關(guān)閉按鈕背景圖 |
| logo.png | LOGO背景圖 |
| go.png | 右側(cè)按鈕背景圖 |
| ignore.png | 左側(cè)按鈕背景圖 |
| backimage.png | 組件背景圖 |
| bgtitle.png | 提示信息背景圖 |

| 文件名稱 | 說明 |
|---|---|
| interact002-Para.json | 交互區(qū)間interact002對應(yīng)的交互區(qū)間腳本文件 |
| close.png | 關(guān)閉按鈕背景圖 |
| logo.png | LOGO背景圖 |
| bgtitle.png | 提示信息背景圖 |
| backimage.png | 組件背景圖 |
| default.png | 按鈕背景圖 |
劇情結(jié)構(gòu)示意圖

腳本注釋
索引腳本文件注釋:
{
"base": {
"filename": "videoS.mp4",
"fileVersion": "1.0.0",
"protocolVersion": "1.0",
"interactMode": "0"
},
"interactBlockList":
[
{
"blockid": "interact001",
"inPlayBlockid": "play001",//交互區(qū)間出現(xiàn)在播放區(qū)間id為play001的視頻片段中
"startTime": "100",//交互區(qū)間開始時間為100s
"duration": "10",//交互區(qū)間展示時長為10s
"exeShowAnimation": "1",//執(zhí)行展示和消失動畫
"des": "精彩內(nèi)容",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid":"play002",
"preLoadTime":"0"
}
],
"UIInfo": {
"UIid": "UI0003",//交互區(qū)間的組件使用了樣式UI0003
"paraFile": "interact001/interact001-Para.json",//交互區(qū)間使用的交互區(qū)間腳本文件的路徑
}
},
{
"blockid": "interact002",
"inPlayBlockid": "play001",//交互區(qū)間出現(xiàn)在播放區(qū)間id為play001的視頻片段中
"startTime": "200",//交互區(qū)間開始時間為200s
"duration": "10",//交互區(qū)間展示時長為10s
"exeShowAnimation": "1",
"des": "精彩表演",
"state": {
"playState": "play"
},
"preLoadList":[
{
"playerBlockid": "play003",
"preLoadTime": "0"
},
{
"playerBlockid": "play004",
"preLoadTime": "0"
},
{
"playerBlockid": "play005",
"preLoadTime": "0"
}
],
"UIInfo": {
"UIid": "UI0004",//交互區(qū)間的組件使用了樣式UI0004
"paraFile": "interact002/interact002-Para.json",//交互區(qū)間使用的交互區(qū)間腳本文件的路徑
}
}
],
"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"
}
}
]
}
交互區(qū)間interact001互動元素設(shè)置對照:

交互區(qū)間interact001腳本文件注釋:
{
"interactid":"interact001",
"version":"1.0.0",
"protocolVersion":"1.0",
"metas":[
{
"id":"meta001",
"text":"發(fā)現(xiàn)有你喜歡的精彩內(nèi)容"//元素1 提示
},
{
"id":"meta002",
"text":"solo秀翻全場 精彩等你來看"//元素2 標(biāo)題
}
],
"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":"關(guān)閉",
"backImgNormal":"interact001/close.png",//元素3 關(guān)閉按鈕
"statistics":{
"rseat":"btn001",
"block":"interact001"
},
"actionList":[
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
},
{
"id":"btn002",
"text":"忽略",//元素4 左側(cè)按鈕 內(nèi)容
"des":"忽略",
"backImgNormal":"interact001/ignore.png",//元素5 左側(cè)按鈕 背景圖
"statistics":{
"rseat":"btn002",
"block":"interact001"
},
"actionList":[
{
"actionName":"REMOVE",
"actionPara":{}
}
]
},{
"id":"btn003",
"text":"去看看",//元素5 右側(cè)按鈕 內(nèi)容
"des":"去看看",
"backImgNormal":"interact001/go.png",//元素5 右側(cè)按鈕 背景圖
"statistics":{
"rseat":"btn003",
"block":"interact001"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按鈕點(diǎn)擊后執(zhí)行視頻片段切換操作
"actionPara":{
"insertToTime":"",//立即切換視頻
"nextPlayBlockid":"play002",//下一視頻片段的播放區(qū)間id為play002
"nextPlayTime":"0"//從下一視頻的0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素類型為倒計時類型
"controlBackColor":"0xffdb31",//倒計時元素的背景顏色
"totalTime":"10",//倒計時時長,與索引腳本文件中本交互區(qū)間的展示時長相同
"statistics":{
"rseat":"ctrl001",
"block":"videoS.mp4"
},
"actionList":[
{
"actionName":"REMOVE",//如果用戶沒有進(jìn)行選擇,倒計時完成后移除交互區(qū)間
"actionPara":{}
}
]
}
],
"statistics":{
"rpage":"videoS.mp4",
"block":"interact001"
}
}
交互區(qū)間interact002互動元素設(shè)置對照:

交互區(qū)間interact002腳本文件注釋:
{
"interactid":"interact002",
"version":"1.0.0",
"protocolVersion":"1.0",
"metas":[
{
"id":"meta001",
"text":"發(fā)現(xiàn)有你喜歡的精彩表演"//元素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":"關(guān)閉",
"backImgNormal":"interact002/close.png",//元素2 關(guān)閉按鈕 背景圖
"statistics":{
"rseat":"btn001",
"block":"interact002"
},
"actionList":[
{
"actionName":"REMOVE",//按鈕點(diǎn)擊后移除交互區(qū)間
"actionPara":{}
}
]
},
{
"id":"btn002",
"text":"演員A",//元素3 演員A按鈕 內(nèi)容
"des":"演員A",
"backImgNormal":"interact002/default.png",//元素3 演員A按鈕 背景圖
"statistics":{
"rseat":"btn002",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按鈕點(diǎn)擊后執(zhí)行視頻片段切換操作
"actionPara":{
"insertToTime":"",//立即切換視頻
"nextPlayBlockid":"play003",//下一視頻片段的播放區(qū)間id為play003
"nextPlayTime":"0"//從下一視頻的0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
},{
"id":"btn003",
"text":"演員B",//元素4 演員B按鈕 內(nèi)容
"des":"演員B",
"backImgNormal":"interact002/default.png",//元素3 演員B按鈕 背景圖
"statistics":{
"rseat":"btn003",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按鈕點(diǎn)擊后執(zhí)行視頻片段切換操作
"actionPara":{
"insertToTime":"",//立即切換視頻
"nextPlayBlockid":"play004",//下一視頻片段的播放區(qū)間id為play004
"nextPlayTime":"0"//從下一視頻的0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
},{
"id":"btn004",
"text":"演員C",//元素5 演員C按鈕 內(nèi)容
"des":"演員C",
"backImgNormal":"interact002/default.png",//元素3 演員C按鈕 背景圖
"statistics":{
"rseat":"btn004",
"block":"interact002"
},
"actionList":[
{
"actionName":"SWITCHVIDEO",//按鈕點(diǎn)擊后執(zhí)行視頻片段切換操作
"actionPara":{
"insertToTime":"",//立即切換視頻
"nextPlayBlockid":"play005",//下一視頻片段的播放區(qū)間id為play005
"nextPlayTime":"0"//從下一視頻的0s開始播放
}
},
{
"actionName":"REMOVE",//移除交互區(qū)間
"actionPara":{}
}
]
}
],
"ctrls":[
{
"id":"ctrl001",
"controlType":"COUNTDOWN",//定制元素類型為倒計時
"controlBackColor":"0xffdb31",//倒計時元素的背景顏色
"totalTime":"10",//倒計時時長,與索引腳本文件中本交互區(qū)間的展示時長相同
"statistics":{
"rseat":"ctrl001",
"block":"interact002"
},
"actionList":[
{
"actionName":"REMOVE",//如果用戶沒有進(jìn)行選擇,倒計時完成后移除交互區(qū)間
"actionPara":{}
}
]
}
],
"statistics":{
"rpage":"videoS.mp4",
"block":"interact002"
}
}