Help & Guide

Video Playlist Editor — User Guide

Create and manage video playlists with grouping, multi-language subtitles, chapter navigation, interactive annotations, and export ZWMAP-compatible JSON for seamless ZWPlayer integration.

Getting Started

The Playlist Editor is a free online tool for creating and managing video playlists. Organize videos into groups, configure metadata (poster, subtitles, chapters, annotations, thumbnails) for each video, then export a ZWMAP JSON file for use with ZWPlayer.

Quick Start Steps

  1. Create groups

    Click the "+ New Group" button in the toolbar (or press G) to create your first group. Groups organize videos by topic or series.

  2. Add video items

    Select a group, then click "Add Item" (or press N), or use the batch import feature. Three methods are available: paste URLs, drag & drop local files, or import JSON/XML.

  3. Configure metadata

    Set poster images, multi-language subtitle tracks, chapter navigation, interactive annotations, thumbnails, and EPG program info for each video item. URL is required; type is auto-detected.

  4. Export ZWMAP JSON

    Once configured, click "Export" (or press Ctrl+S) to download the playlist JSON file. This file can be used directly in ZWPlayer configuration.

Tip: This tool runs entirely in your browser. Playlist data is automatically saved locally — refreshing the page won't lose your work. You can also export to a file at any time for backup.

Keyboard Shortcuts

Speed up your workflow with these keyboard shortcuts:

Key Action Description
Ctrl+S Export Playlist Export the current playlist as a JSON file
Ctrl+Z Undo Undo the last operation
Ctrl+Y Redo Redo the previously undone operation
N New Item Add a new video item to the selected group
G New Group Create a new playlist group
Delete Delete Delete the selected item or group
Esc Exit / Cancel Exit preview mode or close the current dialog

Drag & Drop SortingDrag items or groups to reorder them. You can also drag items between groups.

Group & Item Management

Group Management

Groups organize video items by topic, series, or category. Each group has the following properties:

Name Description
Name Display name for the group, e.g. "Unit 1", "Course Series".
ID Unique identifier for the group. Auto-generated if left empty.
Expanded Controls whether the group is expanded by default in the player.

Item Detail Fields

Each video item supports the following configuration fields:

Field Type Required Description
name string Display name for the video.
id string Unique identifier for the item. Auto-generated if left empty.
url string Yes URL of the video file (required). Supports MP4, HLS, DASH, FLV formats.
type string Stream type: auto (auto-detect), mp4, hls, dash, flv. Usually keep as auto.
isLive boolean Mark whether the item is a live stream.
poster string URL of the video cover image.
subtitle array Array of subtitle tracks. Each track contains url, label, and lang fields.
chapter string URL of the chapter navigation JSON file.
annotation string URL of the interactive annotation JSON file.
thumbnail string URL of the thumbnail JSON file (ZWMAP thumbnail protocol format).
watermark string URL of the watermark JSON file (ZWMAP watermark protocol format).
epg string EPG program name for live stream current program info.

Import Methods

The Playlist Editor supports multiple import methods to quickly populate your playlist:

URL Import

Paste a list of video URLs, one per line. Supports "URL name" format to specify video names. Lines starting with # are treated as comments. Ideal for quickly importing existing online video resources.

# 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

File Import

Drag and drop local files into the editor window. Supports video files and matching auxiliary files. The system automatically classifies and associates files by base name.

File Type Recognition Rules

The system uses a three-phase detection strategy: 1) 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.

Type Extensions ZWMAP zwp_type Filename Suffixes Structure Fallback
Video .mp4 .webm .ogg .m4v Browser MIME type detection
Subtitle .srt .vtt .bcc subtitle _subtitle -subtitle Has body array
Chapter .json .vtt chapter _chapter -chapter _chapters -chapters Has chapters array, or array with start_time
Annotation .json annotation _annotation -annotation _annotations -annotations Has hotspots or events array
Thumbnail .json thumbnail _thumbnail -thumbnail _thumb -thumb -thumbnails Has thumbnail.url or legacy {url, width, height, total}
Watermark .json watermark _watermark -watermark _wm -wm Has watermarks array
Poster .jpg .jpeg .png .webp _poster -poster _cover -cover Image file matched by base name

Example: If you drop video.mp4, video.vtt, and video.json together, the system will merge them into a single video item.

JSON Import

Import a ZWMAP playlist JSON file. The tool parses groups and items, merging them into the current playlist. Useful for restoring or migrating data from existing configurations.

XML Import

Import a compatible XML playlist file. The tool automatically converts the XML structure to ZWMAP format.

Bulk Operations & Templates

Select multiple items and use bulk operations to modify their properties simultaneously. Path templates support variable substitution:

Template Variables

Variable Description
{baseUrl} Base URL (configured in the toolbar header)
{filename} Video file base name (without extension)
{ext} Video file extension
{index} Item index within the group (starting from 1)
{groupName} Parent group name

Bulk Operation Types

Operation Description
Set Type Set the video type for selected items to auto, mp4, hls, dash, or flv.
Set Live Batch set whether selected items are live streams.
Apply Path Template Use template variables to batch-set paths for subtitles, chapters, annotations, or thumbnails.
Move to Group Move selected items to a specified group.
Delete Selected Delete all selected items.

ZWMAP Playlist Protocol Specification

The ZWMAP (Z&W Media Annotation Protocol) playlist type defines a standard JSON format for describing video playlists. This protocol enables interoperability between playlist editing tools and video players.

Protocol Header

Every ZWMAP playlist document begins with a protocol identifier:

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

Data Structure

A playlist consists of a groups array, where each group contains an items array:

Item Fields

Field Type Required Description
name string Display name for the video.
id string Unique item identifier. Auto-generated if omitted.
url string Yes Video file URL. Supports MP4, HLS (.m3u8), DASH (.mpd), FLV formats.
type string Stream type: auto, mp4, hls, dash, flv. Auto detects based on URL suffix.
isLive boolean Boolean flag indicating a live stream.
poster string Video cover image URL.
subtitle array Array of subtitle tracks. Each entry contains url (subtitle file URL), label (display name), lang (language code).
chapter string Chapter JSON file URL.
annotation string Interactive annotation JSON file URL.
thumbnail string Thumbnail JSON file URL (ZWMAP thumbnail protocol format).
watermark string Watermark JSON file URL (ZWMAP watermark protocol format).
epg string EPG current program name.

Complete Example

{
  "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"
        }
      ]
    }
  ]
}

This example shows a playlist with two groups, each containing two video items with common metadata configurations.

Note: 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. 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 Integration

ZWPlayer is a full-featured JavaScript video player with native playlist support. Here's how to integrate the generated playlist with ZWPlayer.

Player Configuration

Add the playlist property to your ZWPlayer initialization config:

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' }
        ]
      }
    ]
  }
});

Configuring Base URL

Set the Base URL in the editor toolbar header. When exporting, it is automatically prepended to local filenames. If your videos already use full URLs, no Base URL is needed.

Using a JSON URL

Upload the exported ZWMAP JSON file to your web server, then pass the URL directly to the playlist property:

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

Deployment: 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. 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.

Frequently Asked Questions

What is the Playlist Editor?
The Playlist Editor is an online tool for creating and managing video playlists. It lets you organize videos into groups, configure metadata for each video (poster, subtitles, chapters, annotations, thumbnails), and export as ZWMAP JSON format for use with ZWPlayer or other compatible players.
How do I manage groups?
Press G or click "New Group" to create a group. Click a group name to edit its properties. Drag groups to reorder them. Right-click a group to delete it. Deleting a group also deletes all its items.
What import formats are supported?
Four import methods are supported: URL batch import (paste multiple URLs), local file import (drag videos and matching auxiliary files), JSON import (ZWMAP playlist format), and XML import (compatible format). Local file import automatically associates video and auxiliary files by matching base names.
How do template variables work?
Use path templates in bulk operations with variables: {baseUrl} (base URL), {filename} (file base name), {ext} (extension), {index} (item number), {groupName} (group name). For example, setting a subtitle template to "{baseUrl}{filename}.vtt" generates subtitle paths for all selected items.
How is playlist data validated?
The editor automatically checks required fields (URL) and format validity for each item. The status bar shows validation results: green for pass, red for errors, yellow for warnings. Double-click the status bar to view the detailed validation report.
What export options are available?
Two export options: copy to clipboard (for pasting into code) and download as JSON file. Before exporting, a dialog lets you confirm the Base URL and other settings. The exported JSON file follows the ZWMAP playlist protocol and can be used directly in ZWPlayer configuration.