使用帮助

视频热区生成器 — 使用指南

在视频上创建可交互的热区节点,支持分支选择、测验、投票、表单等丰富的交互类型,并导出 ZWMAP 兼容的 JSON 实现与 ZWPlayer 的无缝集成。

快速入门

视频热区生成器(Hotspot Generator)是一款免费的在线工具,可以在视频画面上叠加交互式热区节点,实现分支剧情、知识问答、信息展示、投票调查等互动体验。导出的 ZWMAP JSON 可直接用于 ZWPlayer 播放器。

快速上手步骤

  1. 加载视频

    将本地视频文件(MP4、WebM)拖拽到窗口中,或者在地址栏中粘贴远程视频 URL 并按回车键。

  2. 添加节点

    在视频画面上拖拽绘制热区,或按 N 键快速创建一个默认节点。也可以从右侧组件库中拖入预设模板。 to create a default node. You can also drag preset templates from the component library. to create a default node. You can also drag preset templates from the component library.

  3. 配置属性和动作

    选中节点后,在属性面板中调整位置、时间范围、样式和交互动作。支持多条动作链式触发。

  4. 预览和导出

    P 键进入预览模式查看交互效果。确认无误后,导出 ZWMAP JSON 或直接复制 ZWPlayer 配置。 to enter preview mode and test interactions. When ready, export the ZWMAP JSON or copy the ZWPlayer config directly. to enter preview mode and test interactions. When ready, export the ZWMAP JSON or copy the ZWPlayer config directly.

提示:此工具完全在浏览器中运行。视频数据和交互配置不会上传到任何服务器——您的文件始终保持私密。

节点类型

热区生成器支持 13 种节点类型,分为 4 个类别:

基础节点

类型 名称 说明
hotspot 透明热区 透明可点击区域,用于触发动作。最常见的交互类型。
text 文字 在视频上显示富文本内容,支持自定义字体、颜色、对齐方式等。
image 图片 在视频上显示图片,支持自适应填充模式。
button 按钮 可点击按钮,支持主题色、变体、形状等样式配置,可触发动作链。

交互节点

类型 名称 说明
choice 选项分支 选项分支节点,提供多个选项供用户选择,每个选项可跳转到不同时间点。
quiz 测验 测验节点,支持单选/多选、评分模式、最大尝试次数、正确/错误反馈。
form 表单 表单收集节点,支持文本输入、下拉选择等多种字段类型,可配置提交 URL。
vote 投票 投票节点,支持单选/多选投票,可显示投票结果,支持数据上报。
card 信息卡片 信息卡片弹窗,支持标题、图片、内容、按钮等富文本布局。

高级节点

类型 名称 说明
webview 网页嵌入 内嵌网页视图(IFrame),可在视频上展示外部网页内容。
map 地图 地图节点,支持百度地图和高德地图,可标注位置和地址搜索。

系统节点

类型 名称 说明
countdown 倒计时 倒计时节点,支持三种模式:独立读秒、悬浮伴随、精准挑战。
speed_controller 变速控制 播放速度控制器,在指定时间范围内自动改变视频播放速度,不可见节点。

键盘快捷键

使用以下键盘快捷键提高工作效率:

按键 操作 说明
Space 播放 / 暂停 切换视频播放状态
, 逐帧后退 后退一帧
. 逐帧前进 前进一帧
后退 5 秒 向后跳转 5 秒
前进 5 秒 向前跳转 5 秒
N 新建节点 在当前时间点创建一个新热区节点
Delete 删除节点 删除选中的节点
Ctrl+Z 撤销 撤销上一步操作
Ctrl+Y 重做 重做已撤销的操作
Ctrl+S 导出 导出 ZWMAP JSON 或保存
P 预览 进入交互预览模式
Esc 退出 退出预览模式或取消选择

动作与触发器

每个节点都可以配置一个或多个动作,在用户交互时按顺序依次触发。

动作类型

类型 名称 说明
SEEK_TIME 跳转到时间 跳转到指定时间点。参数:时间(秒)。
PAUSE_MEDIA 暂停播放 暂停视频播放。无需额外参数。
PLAY_MEDIA 恢复播放 恢复视频播放。无需额外参数。
OPEN_LINK 打开链接 打开指定 URL 链接。参数:URL、打开方式(新窗口/当前窗口)。
CONTROL_NODE 控制组件 控制其他节点的显示/隐藏/激活/切换。参数:目标节点 ID、操作类型。
EMIT_MESSAGE 触发前端事件 通过 postMessage 向父页面发送自定义消息。参数:键值对。
SUBMIT_DATA 提交数据 向指定 API URL 发送 POST JSON 请求。参数:API URL、自定义数据。

触发器类型

  • 点击 — 用户点击节点时触发
  • 长按 — 用户长按节点超过阈值时触发
  • 滑动 — 用户在节点上滑动时触发
  • 拖拽 — 用户拖拽节点时触发
  • 被动 — 由其他动作或事件自动触发
  • 手势 — 识别特定手势(如双指缩放)时触发

动画系统

每个节点都支持三种动画阶段:入场、强调、退场。支持多种预设动画效果和自定义时长。

入场动画

名称 标识 说明
淡入 fadein 从透明渐变为可见
左滑入 slideinleft 从左侧滑入
右滑入 slideinright 从右侧滑入
上滑入 slideinup 从下方滑入
下滑入 slideindown 从上方滑入
放大 zoomin 从小到大放大出现
弹入 bouncein 弹跳式出现

强调动画

名称 标识 说明
脉冲 pulse 周期性缩放脉冲
发光 glow 发光闪烁效果
抖动 shake 左右抖动
弹跳 bounce 上下弹跳
摇摆 swing 左右摇摆

退场动画

名称 标识 说明
淡出 fadeout 从可见渐变为透明
左滑出 slideoutleft 向左滑出消失
右滑出 slideoutright 向右滑出消失
上滑出 slideoutup 向上方滑出消失
下滑出 slideoutdown 向下方滑出消失
缩小 zoomout 从大缩小消失

动画时长

动画持续时间,单位为毫秒(ms)。默认值 300ms。范围:100–3000ms。

ZWMAP 热区协议规范

ZWMAP(Z&W 媒体标注协议)热区类型定义了描述视频交互热区的标准 JSON 格式。该协议实现了热区编辑工具与视频播放器之间的互操作性。

协议头部

每个 ZWMAP 热区文档以协议标识符开头:

{
  "zwp_protocol": "ZWMAP/1.0",
  "zwp_type": "annotation",
  "zwp_version": "1.0"
}

节点对象字段

字段 类型 必填 说明
id string 节点唯一标识符(UUID)。
type string 节点类型,如 hotspot、text、button、quiz 等。
name string 节点显示名称。
time_range.start number 节点出现时间,单位为秒。
time_range.end number 节点消失时间,单位为秒。
position.x number X 坐标,百分比(0–100)。
position.y number Y 坐标,百分比(0–100)。
position.w number 宽度,百分比(0–100)。
position.h number 高度,百分比(0–100)。
style object 样式对象,包含边框、透明度、背景色等视觉属性。
content object 内容对象,根据节点类型不同而异。
events array 事件数组,包含触发器和动作链配置。
animation object 动画对象,包含入场、强调、退场动画配置。

完整示例

此示例展示了一个包含文本标注和按钮的简单 ZWMAP 文档:

{
  "zwp_protocol": "ZWMAP/1.0",
  "zwp_type": "annotation",
  "zwp_version": "1.0",
  "nodes": [
    {
      "id": "a1b2c3d4",
      "type": "text",
      "name": "Title Card",
      "time_range": { "start": 0, "end": 5 },
      "position": { "x": 10, "y": 10, "w": 80, "h": 15 },
      "style": { "opacity": 1 },
      "content": {
        "text": "Welcome to the interactive video!",
        "color": "#ffffff",
        "fontSize": 24
      },
      "animation": {
        "enter": { "type": "fadein", "duration": 300 },
        "exit": { "type": "fadeout", "duration": 300 }
      }
    },
    {
      "id": "e5f6g7h8",
      "type": "button",
      "name": "Skip Intro",
      "time_range": { "start": 2, "end": 8 },
      "position": { "x": 70, "y": 80, "w": 25, "h": 10 },
      "events": [
        {
          "trigger": "click",
          "actions": [
            { "type": "SEEK_TIME", "time": 10 },
            { "type": "PAUSE_MEDIA" }
          ]
        }
      ]
    }
  ]
}

ZWPlayer 集成

ZWPlayer 是一个功能丰富的 JavaScript 视频播放器,开箱即用支持视频标注交互。以下是如何将生成的标注配置与 ZWPlayer 集成。

播放器配置

在 ZWPlayer 初始化配置中添加 annotations 属性:

var player = new ZWPlayer({
  playerElm: 'mse',
  url: 'https://cdn.example.com/video.mp4',
  annotations: {
    "zwp_protocol": "ZWMAP/1.0",
    "zwp_type": "annotation",
    "nodes": [
      {
        "id": "a1b2c3d4",
        "type": "button",
        "name": "Click Me",
        "time_range": { "start": 5, "end": 15 },
        "position": { "x": 40, "y": 40, "w": 20, "h": 10 },
        "events": [
          {
            "trigger": "click",
            "actions": [
              { "type": "PAUSE_MEDIA" }
            ]
          }
        ]
      }
    ]
  }
});

从工具复制配置

在工具的 JSON 面板中,点击复制按钮即可获取可直接使用的 ZWPlayer 配置片段。

实时预览

按 P 键或点击预览按钮,打开一个完整的 ZWPlayer 实例并加载当前标注配置。在预览中可以点击标注测试交互效果。按 Esc 键退出。

使用 ZWMAP JSON

将导出的 ZWMAP JSON 存放在服务器上,应用可以获取该 JSON 并将解析后的 nodes 数组直接传递给 ZWPlayer 配置中的 annotations 属性。

使用 JSON URL

除了传入对象,还可以直接将 ZWMAP JSON 文件的 URL 作为字符串传入,ZWPlayer 会自动获取并解析:

var player = new ZWPlayer({
  playerElm: 'mse',
  url: 'https://cdn.example.com/video.mp4',
  annotations: 'https://cdn.example.com/annotations/movie_annotation.json'
});

部署方式:将导出的 ZWMAP JSON 文件下载并上传到 Web 服务器。确保 JSON 文件可公开访问。ZWPlayer 会在视频播放时自动加载和渲染标注。

拖拽加载

您还可以通过将文件直接拖拽到 ZWPlayer 播放器上来加载标注:

  • 单独拖拽标注 JSON:将 *_annotation.json 文件拖入播放器,为当前播放的视频加载标注。
  • 同时拖拽视频和标注:将视频文件与对应的标注 JSON 一起拖入,播放器会自动按文件名匹配(例如 movie.mp4 匹配 movie_annotation.json)。
  • 播放列表拖拽:拖入多个视频及对应的标注文件,自动创建带交互标注的播放列表。

注意:拖拽的 JSON 文件需为 ZWMAP 协议格式(zwp_type 为 "annotation"),播放器会自动解析 nodes 数组。

常见问题

什么是视频标注(交互式视频)?
视频标注是在视频画面上叠加的可交互区域。用户可以通过点击、长按等方式与标注互动,触发跳转、弹出信息、提交数据等操作。这种技术广泛用于互动教学、分支剧情、产品展示等场景,让视频从被动观看变为主动参与。
如何创建交互式视频元素?
加载视频后,在画面上拖拽绘制标注(或按 N 键快速创建),然后在属性面板中选择节点类型并配置交互动作。支持从组件库拖入预设模板,如测验、投票、表单等。
支持哪些节点类型?
支持 13 种节点类型:基础类(热区、文本、图片、按钮)、交互类(选项分支、测验、表单、投票、信息卡片)、高级类(网页嵌入、地图)、系统类(倒计时、变速控制)。每种类型都有专属的配置面板。
什么是动作链?
动作链允许一个触发器(如点击)按顺序依次执行多个动作。例如,点击按钮后先暂停视频,再弹出一个信息卡片,然后跳转到指定时间点。每个动作可以是跳转时间、控制节点、发送消息等 7 种类型之一。
支持哪些动画效果?
每个节点支持三个阶段的动画:入场(淡入、滑入、放大、弹入等 7 种)、强调(脉冲、发光、抖动、弹跳、摇摆等 5 种)、退场(淡出、滑出、缩小等 6 种)。所有动画支持自定义时长(100–3000ms)。
如何导入导出标注配置?
点击 JSON 面板中的"导出"按钮下载 ZWMAP JSON 文件。导入时点击"导入"按钮选择 JSON 文件。也可以直接复制 JSON 文本粘贴到代码中。配置自动保存到浏览器本地存储,下次打开工具时会提示恢复草稿。