Skip to content

AreChen/openplayer-plugins

Repository files navigation

OpenPlayer Official Plugins

English · 中文

Official plugin source, examples, build tooling, and release packages for OpenPlayer.

The player repository owns the plugin host API, runtime behavior, and security model. This repository owns official plugin implementation code and packaged .opplugin release assets.

The current plugin packages target OpenPlayer SDK 1.6.0. The bundled SDK types cover host API compatibility checks, capability discovery, runtime event subscriptions, setting snapshots, scoped storage with bounded prefix scans and quota metadata, validated network requests, native dialogs, host-mediated audio/video segment export, custom views with setting-backed side-panel opacity and a theme-aware .op-* UI Kit, AB loop controls, and permission-gated mpv playback, filter, OSD, and script-message APIs.

Action icons include tv for TV-like channel browsers such as IPTV plugins, while stream remains the generic network-stream entry icon.

Repository Layout

plugins/
  capture-tools/
    manifest.json
    README.md
  iptv-channel-switcher/
    manifest.json
    README.md
    runtime/
      plugin.js
    view/
      index.html
      iptv.js
  multi-stream-wall/
    manifest.json
    README.md
    runtime/
      plugin.js
    view/
      index.html
  network-stream/
    manifest.json
    README.md
    runtime/
      plugin.js
  segment-export/
    manifest.json
    README.md
    runtime/
      plugin.js
    view/
      index.html
  subtitle-typography/
    manifest.json
    README.md
packages/
  sdk/
    index.d.ts
    index.js
templates/
  runtime-plugin/
scripts/
  validate-manifest.mjs
  package-plugin.mjs
dist/

Each directory under plugins/ is one plugin package. A plugin must include a root manifest.json. Optional runtime source and assets should live inside the same plugin directory.

packages/sdk contains TypeScript authoring types for the injected openplayer runtime API. templates/runtime-plugin is a minimal starter for worker-based plugins.

Plugin manifests include SDK compatibility and maintenance metadata: apiVersion, minHostVersion, author, and updateUrl.

Authoring references:

  • Host plugin overview is the source of truth for manifest behavior, custom views, standardized .op-* UI classes, permissions, and validation rules.
  • SDK 1.6 developer guide is the source of truth for the runtime bridge, generic composable media workflows, and storage lifecycle rules including contributes.storage, install defaults, upgrade migrations, and uninstall cleanup.

Official Plugins

  • Capture Tools - screenshots and lightweight mpv stream recording with selectable screenshot and recording formats.
  • Subtitle Typography - subtitle font, scale, position, color, outline, and shadow controls.
  • Network Stream - RTSP, RTMP, HTTP(S), and HLS stream playback entry points backed by a plugin-owned runtime command, OpenPlayer's native stream dialog, and recent stream history.
  • IPTV Channel Switcher - TV-style channel browser for best-fan IPTV M3U8 playlists with channel logos, grouped duplicate entries, playlist refresh, and per-channel source switching, plus a plugin setting for side-panel opacity.
  • Multi-Stream Wall - split-screen monitor wall for RTSP, RTMP, HTTP(S), HLS, and WebRTC/WHEP streams with optional latency and bitrate overlays, rounded native tiles, browser WebRTC tiles, and dialog-safe native wall visibility.
  • Segment Export - side-panel controls for exporting selected audio segments as wav, mp3, m4a, or flac, and selected video segments as mp4 or mkv through OpenPlayer's host-managed export bridge.

Build

npm run build

The build validates every plugin manifest and writes .opplugin packages to dist/.

Runtime plugins that persist state use contributes.storage to declare a plugin-private schema version and small JSON defaults. OpenPlayer initializes missing defaults during install/upgrade, exposes openplayer.storage.info() for plugin-owned migrations, accepts openplayer.storage.markMigrated() after the plugin finishes migration, and removes that storage when the plugin is uninstalled. Cache-heavy plugins can use openplayer.storage.list({ prefix, limit }) plus totalBytes and maxValueBytes from storage.info() to prune private cache chunks without raw redb access.

Install

Download an .opplugin file from the releases page and install it from OpenPlayer's Plugins settings page, or drag the package into the player window.

License

MIT. See LICENSE.

About

Official OpenPlayer plugin collection and release packages

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors