视频播放列表编辑器 — 使用指南
创建和管理视频播放列表,支持分组、多语言字幕、章节导航、标注交互,导出 ZWMAP 兼容 JSON 实现与 ZWPlayer 的无缝集成。
快速入门
播放列表编辑器是一款免费的在线工具,用于创建和管理视频播放列表。您可以将多个视频组织为分组,配置每个视频的元数据(海报、字幕、章节、标注、缩略图),然后导出 ZWMAP JSON 文件供 ZWPlayer 使用。
快速上手步骤
-
创建分组
点击工具栏中的"+ 新建分组"按钮(或按 G 键)创建第一个分组。分组用于按主题或系列组织视频条目。
-
添加视频条目
选择一个分组后,点击"添加条目"按钮(或按 N 键),或使用批量导入功能。支持三种方式:粘贴 URL、拖拽本地文件、导入 JSON/XML。
-
配置元数据
为每个视频条目设置海报图片、多语言字幕轨、章节导航、标注交互、缩略图和 EPG 节目信息。URL 字段为必填项,类型自动检测。
-
导出 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 等格式。 |
isLive |
boolean | 标记该条目是否为直播流。 | |
mediaKind |
string | 媒体类型:video(标准视频)或 audio(音乐模式,带大唱片与频谱)。 | |
artist |
string | 音频/音乐条目的歌手或演唱者名称。 | |
lyrics |
string | array | LRC 歌词文件 URL,支持配置多个歌词文件(数组格式)。 | |
poster |
string | 视频封面图片的 URL。 | |
subtitle |
array | 字幕轨列表,支持多个语言轨道。每个轨道包含 url、label、lang 字段。 | |
audioTracks |
array | 外挂配音音轨 URL 数组,与视频同步播放。 | |
music.theme |
string | 单曲音乐皮肤主题:auto(智能封面提取主色)、vintage(怀旧复古皮肤)或 classic(高保真经典皮肤)。 | |
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 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 | 包含 hotspots 或 events 数组 |
| 缩略图 | .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} |
所属分组名称 |
批量操作类型
| 操作 | 说明 |
|---|---|
| 统一设置直播 | 批量设置选中条目是否为直播流。 |
| 应用路径模板 | 使用模板变量批量设置字幕、章节、标注或缩略图的路径。 |
| 移动到分组 | 将选中条目移动到指定分组。 |
| 批量删除 | 删除所有选中的条目。 |
ZWMAP 播放列表规范
ZWMAP(ZWPlayer 媒体应用协议)播放列表类型定义了描述视频播放列表的标准 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 | 流类型(自动):根据 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",
"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 字段为必填,其余字段为可选。
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 可访问。建议使用网络前缀统一管理资源路径。