使用帮助

视频播放列表编辑器 — 使用指南

创建和管理视频播放列表,支持分组、多语言字幕、章节导航、标注交互,导出 ZWMAP 兼容 JSON 实现与 ZWPlayer 的无缝集成。

快速入门

播放列表编辑器是一款免费的在线工具,用于创建和管理视频播放列表。您可以将多个视频组织为分组,配置每个视频的元数据(海报、字幕、章节、标注、缩略图),然后导出 ZWMAP JSON 文件供 ZWPlayer 使用。

快速上手步骤

  1. 创建分组

    点击工具栏中的"+ 新建分组"按钮(或按 G 键)创建第一个分组。分组用于按主题或系列组织视频条目。

  2. 添加视频条目

    选择一个分组后,点击"添加条目"按钮(或按 N 键),或使用批量导入功能。支持三种方式:粘贴 URL、拖拽本地文件、导入 JSON/XML。

  3. 配置元数据

    为每个视频条目设置海报图片、多语言字幕轨、章节导航、标注交互、缩略图和 EPG 节目信息。URL 字段为必填项,类型自动检测。

  4. 导出 ZWMAP JSON

    配置完成后,点击"导出"按钮(或按 Ctrl+S)下载播放列表 JSON 文件。该文件可直接用于 ZWPlayer 播放器配置。

提示:此工具完全在浏览器中运行。播放列表数据会自动保存在本地浏览器中,刷新页面不会丢失。您也可以随时通过导出功能备份到文件。

键盘快捷键

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

按键 操作 说明
Ctrl+S 导出播放列表 导出当前播放列表为 JSON 文件
Ctrl+Z 撤销 撤销上一步操作
Ctrl+Y 重做 重做已撤销的操作
N 新建条目 在当前选中分组下添加一个新的视频条目
G 新建分组 创建一个新的播放列表分组
Delete 删除 删除选中的条目或分组
Esc 退出 / 取消 退出预览模式或关闭当前对话框

拖拽排序按住条目或分组可上下拖拽调整顺序。也可以在分组之间拖拽条目。

分组与条目管理

分组管理

分组用于按主题、系列或分类组织视频条目。每个分组包含以下属性:

名称 说明
名称 分组的显示名称,如"第一单元"、"系列课程"等。
ID 分组的唯一标识符,留空则自动生成。
展开状态 控制分组在播放器中是否默认展开显示。

条目详情字段

每个视频条目支持以下配置字段:

字段 类型 必填 说明
name string 视频的显示名称。
id string 条目的唯一标识符,留空则自动生成。
url string 视频文件的访问地址(必填)。支持 MP4、HLS、DASH、FLV 等格式。
type string 视频流类型:auto(自动检测)、mp4、hls、dash、flv。通常保持 auto 即可。
isLive boolean 标记该条目是否为直播流。
poster string 视频封面图片的 URL。
subtitle array 字幕轨列表,支持多个语言轨道。每个轨道包含 url、label、lang 字段。
chapter string 章节导航 JSON 文件的 URL。
annotation string 标注交互 JSON 文件的 URL。
thumbnail string 缩略图 JSON 文件的 URL(ZWMAP 缩略图协议格式)。
watermark string 水印 JSON 文件的 URL(ZWMAP 水印协议格式)。
epg string EPG 节目名称,用于直播流的当前节目信息。

导入方式

播放列表编辑器支持多种导入方式,方便您快速填充播放列表内容:

URL 导入

粘贴视频 URL 列表,每行一个。支持 "URL 名称" 格式来指定视频名称。以 # 开头的行为注释会被忽略。适合快速导入已有的线上视频资源。

# Comment lines start with #
https://cdn.example.com/video1.mp4 Episode 1
https://cdn.example.com/video2.mp4 Episode 2
https://cdn.example.com/video3.mp4

文件导入

将本地文件拖拽到编辑器窗口中。支持视频文件及同名辅助文件。系统会自动分类并根据文件基本名关联。

文件类型识别规则

系统采用三阶段检测策略:1) ZWMAP 协议头(zwp_type),2) 文件名后缀关键词,3) 内容结构分析。 ZWMAP protocol header (zwp_type), 2) filename suffix keywords, 3) content structure analysis. ZWMAP protocol header (zwp_type), 2) filename suffix keywords, 3) content structure analysis. ZWMAP protocol header (zwp_type), 2) filename suffix keywords, 3) content structure analysis.

类型 文件后缀 ZWMAP zwp_type 文件名后缀 结构推断
视频 .mp4 .webm .ogg .m4v 浏览器 MIME 类型检测
字幕 .srt .vtt .bcc subtitle _subtitle -subtitle 包含 body 数组
章节 .json .vtt chapter _chapter -chapter _chapters -chapters 包含 chapters 数组,或数组项含 start_time
标注 .json annotation _annotation -annotation _annotations -annotations 包含 hotspotsevents 数组
缩略图 .json thumbnail _thumbnail -thumbnail _thumb -thumb -thumbnails 包含 thumbnail.url 或旧版 {url, width, height, total}
水印 .json watermark _watermark -watermark _wm -wm 包含 watermarks 数组
海报 .jpg .jpeg .png .webp _poster -poster _cover -cover 按文件基本名匹配的图片文件

示例:如果同时拖入 video.mp4、video.vtt、video.json,系统会自动将它们合并为一个视频条目。

JSON 导入

导入 ZWMAP 播放列表 JSON 文件。工具会解析分组和条目,合并到当前编辑列表中。适合从已有配置文件恢复或迁移数据。

XML 导入

导入兼容格式的 XML 播放列表文件。工具会自动转换 XML 结构为 ZWMAP 格式。

批量操作与模板

选中多个条目后,可以使用批量操作同时修改它们的属性。路径模板支持变量替换:

模板变量

变量 说明
{baseUrl} 网络前缀(在工具栏头部配置)
{filename} 视频文件的基本名(不含扩展名)
{ext} 视频文件的扩展名
{index} 条目在分组中的序号(从 1 开始)
{groupName} 所属分组名称

批量操作类型

操作 说明
统一设置类型 将选中条目的视频类型统一设为 auto、mp4、hls、dash 或 flv。
统一设置直播 批量设置选中条目是否为直播流。
应用路径模板 使用模板变量批量设置字幕、章节、标注或缩略图的路径。
移动到分组 将选中条目移动到指定分组。
批量删除 删除所有选中的条目。

ZWMAP 播放列表协议规范

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

协议头部

每个 ZWMAP 播放列表文档以协议标识符开头:

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

数据结构

播放列表由分组(groups)数组组成,每个分组包含条目(items)数组:

条目字段

字段 类型 必填 说明
name string 视频显示名称。
id string 条目唯一标识符。留空则自动生成。
url string 视频文件 URL。支持 MP4、HLS(m3u8)、DASH(mpd)、FLV 等格式。
type string 流类型:auto、mp4、hls、dash、flv。auto 会根据 URL 后缀自动检测。
isLive boolean 布尔值,标记是否为直播流。
poster string 视频封面图片 URL。
subtitle array 字幕轨数组。每项包含 url(字幕文件 URL)、label(显示名称)、lang(语言代码)。
chapter string 章节 JSON 文件 URL。
annotation string 标注交互 JSON 文件 URL。
thumbnail string 缩略图 JSON 文件 URL(ZWMAP 缩略图协议格式)。
watermark string 水印 JSON 文件 URL(ZWMAP 水印协议格式)。
epg string EPG 当前节目名称。

完整示例

{
  "zwp_protocol": "ZWMAP/1.0",
  "zwp_type": "playlist",
  "zwp_version": "1.0",
  "groups": [
    {
      "name": "Course Series",
      "id": "group-1",
      "items": [
        {
          "name": "Episode 1",
          "id": "item-1",
          "url": "https://cdn.example.com/video1.mp4",
          "type": "auto",
          "poster": "https://cdn.example.com/poster1.jpg",
          "subtitle": [
            { "url": "https://cdn.example.com/sub1-en.vtt", "label": "English", "lang": "en" },
            { "url": "https://cdn.example.com/sub1-zh.vtt", "label": "中文", "lang": "zh" }
          ],
          "chapter": "https://cdn.example.com/chapter1.json",
          "annotation": "https://cdn.example.com/annotation1.json",
          "thumbnail": "https://cdn.example.com/thumb1.json",
          "watermark": "https://cdn.example.com/watermark1.json"
        },
        {
          "name": "Episode 2",
          "id": "item-2",
          "url": "https://cdn.example.com/video2.mp4"
        }
      ]
    },
    {
      "name": "Live Channels",
      "id": "group-2",
      "items": [
        {
          "name": "News Live",
          "url": "https://live.example.com/news.m3u8",
          "type": "hls",
          "isLive": true,
          "epg": "News Broadcast"
        }
      ]
    }
  ]
}

此示例展示了一个包含两个分组的播放列表,每个分组包含两个视频条目,涵盖了常见的元数据配置。

注意:ZWMAP 播放列表协议的 zwp_protocol 和 zwp_type 字段为必填。条目中的 url 字段为必填,其余字段为可选。 The zwp_protocol and zwp_type fields are required in the ZWMAP playlist protocol. The url field in each item is required; all other item fields are optional.

ZWPlayer 集成

ZWPlayer 是一个功能丰富的 JavaScript 视频播放器,原生支持播放列表功能。以下是如何将生成的播放列表与 ZWPlayer 集成。

播放器配置

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

var player = new ZWPlayer({
  playerElm: 'mse',
  url: 'https://cdn.example.com/video1.mp4',
  playlist: {
    groups: [
      {
        name: 'Course Series',
        items: [
          { name: 'Episode 1', url: 'https://cdn.example.com/video1.mp4' },
          { name: 'Episode 2', url: 'https://cdn.example.com/video2.mp4' }
        ]
      }
    ]
  }
});

配置网络前缀

在播放列表编辑器的工具栏中设置网络前缀(Base URL),导出时会自动拼接到本地文件名之前。如果视频已经使用完整 URL,则无需设置。

使用 JSON URL

将导出的 ZWMAP JSON 文件上传到 Web 服务器后,可以直接将 URL 传入 playlist 属性:

var player = new ZWPlayer({
  playerElm: 'mse',
  url: 'https://cdn.example.com/video1.mp4',
  playlist: 'https://cdn.example.com/playlist/playlist-zwmap.json'
});

部署方式:将导出的 JSON 文件上传到 Web 服务器。JSON 中引用的所有资源(视频、字幕、章节、标注、缩略图、海报)必须确保 URL 可访问。建议使用网络前缀统一管理资源路径。 Upload the exported JSON file to your web server. All resources referenced in the JSON (videos, subtitles, chapters, annotations, thumbnails, posters) must have accessible URLs. Using a Base URL is recommended for consistent resource path management.

常见问题

什么是播放列表编辑器?
播放列表编辑器是一款在线工具,用于创建和管理视频播放列表。它允许您将多个视频组织为分组,为每个视频配置元数据(海报、字幕、章节、标注、缩略图),然后导出为 ZWMAP JSON 格式,供 ZWPlayer 或其他兼容播放器使用。
如何管理分组?
按 G 键或点击"新建分组"按钮创建分组。点击分组名称可以编辑属性。按住分组可拖拽调整顺序。右键点击分组可以删除。删除分组会同时删除其下所有条目。
支持哪些导入格式?
支持四种导入方式:URL 批量导入(粘贴多行 URL)、本地文件导入(拖拽视频及同名辅助文件)、JSON 导入(ZWMAP 播放列表格式)、XML 导入(兼容格式)。本地文件导入时,系统会根据文件基本名自动关联视频与辅助文件。
模板变量如何使用?
在批量操作中使用路径模板,可用变量包括:{baseUrl}(网络前缀)、{filename}(文件基本名)、{ext}(扩展名)、{index}(序号)、{groupName}(分组名)。例如设置字幕模板为 "{baseUrl}{filename}.vtt" 可以批量生成字幕路径。
播放列表数据如何校验?
编辑器会自动检查每个条目的必填字段(URL)和格式有效性。状态栏会显示校验结果:绿色表示通过,红色表示错误,黄色表示警告。双击状态栏可以查看详细的校验报告。
导出有哪些选项?
支持两种导出方式:复制到剪贴板(适合粘贴到代码中)和下载 JSON 文件。导出前可以在弹窗中确认网络前缀等设置。导出的 JSON 文件遵循 ZWMAP 播放列表协议,可直接用于 ZWPlayer 配置。