跳到主要内容

剧本结构

信息

如视三维空间剧本播放器是对剧本数据的播放与演绎,VreoUnit 则是剧本数据结构的最小单元,用以描述音视频、剧本帧序列等信息。

结构组成

VreoUnit 的基本组成结构如下:

/**
 * 剧本结构
 */
export interface VreoUnit {
  categoryId: string;
  categoryText: string;
  frontRequestId: string;
  index: string | number;
  keyframes: VreoKeyframe[]; // 剧本帧合集
  video: VreoVideo; // 虚拟视频角色
}
警告

视频素材必须是 绿幕背景

提示

详细的剧本结构定义: 点击查看

剧本关键帧

Vreo 剧本行为是按照剧本关键帧来执行的,即根据音视频播放的时间序列命中剧本帧后,按照剧本帧的类型执行相机运镜、全景标签、模型特效等动作。

剧本帧需严格遵从剧本帧结构声明,才能被播放器正确识别。

信息

目前支持多种类型剧本关键帧,后续会不断完善及添加新的剧本关键帧类型以涵盖更多行为。

Vreo 内置了每一个剧本关键帧的 UI 及动作行为,通过 vreoplayer.on() 可监听到相应的剧本关键帧的命中时机,并按需添加业务逻辑。

export interface VreoKeyframe {
  uuid?: string; // 剧本帧 `uuid`。
  type: VreoKeyframeEnum; // 剧本帧类别枚举
  start: number; // 触发时间戳。
  end: number; // 结束时间戳
  parsed?: boolean; // 解析状态
  data: Record<string, any>; // 当前帧类别数据依赖
}
提示

详细的剧本帧结构定义: 点击查看

示例数据

{
  "categoryId": "257ac7a8-b00a-4a1b-88b8-76f93362c0dc",
  "categoryText": "讲房源户型",
  "video": {
    "duration": 106278, // 视频长度
    "start": 0, // 开始时间戳
    "end": 106278, // 结束时间戳
    "url": "//url-host/***/xxx.mp4" // 视频地址
  },
  "keyframes": [
    {
      "uuid": "ac70621b-4e00-442e-311c-befb5bd3f87f",
      "type": "PanoTextLabel",
      "start": 27060,
      "end": 42351,
      "parsed": false,
      "data": {
        "text": "戏剧人生",
        "vertex": {
          "x": -0.8879207391906447,
          "y": 0.3829881941156301,
          "z": -1.8068334368800785
        },
        "fontSize": 16
      }
    }
    // ...
  ]
}