@clappr/hlsjs-playback

中文文档
3.1.4发布于 2026/10/26BSD-3-ClauseESM + CJS零依赖构建来源已验证近 30 天下载 3015

HLS Playback based on hls.js

原始使用文档
文档目录5 节
  1. Usage
  2. Which artifact to load
  3. Configuration
  4. Development
  5. Release

HlsjsPlayback

A Clappr playback to play HTTP Live Streaming (HLS) based on the hls.js.

CI npm version License minified size jsDelivr monthly downloads

Breaking change in 3.0.0 — hls.js is no longer bundled. Every artifact now expects you to provide it. See the migration note below.

Usage

You can use it from JSDelivr:

<script src="https://cdn.jsdelivr.net/npm/@clappr/core@latest/dist/clappr-core.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@1/dist/hls.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@clappr/hlsjs-playback@3/dist/hlsjs-playback.min.js"></script>

or as an npm package:

yarn add @clappr/hlsjs-playback hls.js@^1

Which artifact to load

ScenarioArtifact
<script> / CDN, after @clappr/core and hls.jsdist/hlsjs-playback.min.js
Bundler, CommonJS / UMD entrydist/hlsjs-playback.js (package main)
Bundler, ESM entrydist/hlsjs-playback.esm.js (package module)

Migration note (3.0+): Every artifact now expects hls.js from the page or bundler. If you loaded hlsjs-playback.min.js with a single script tag, add hls.js before it. If you aliased the deep path to avoid the bundled copy, remove that entry from your bundler's resolve.alias (webpack) or equivalent (Vite resolve.alias, Rollup alias) — the default entry is external now:

- '@clappr/hlsjs-playback': '@clappr/hlsjs-playback/dist/hlsjs-playback.external.js',

Then just add HlsjsPlayback into the list of plugins of your player instance:

var player = new Clappr.Player({
  source: 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8',
  plugins: [HlsjsPlayback]
})

Configuration

The options for this playback are shown below:

var player = new Clappr.Player({
  source: 'https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8',
  plugins: [HlsjsPlayback],
  hlsUseNextLevel: false,
  hlsMinimumDvrSize: 60,
  hlsRecoverAttempts: 16,
  hlsPlayback: {
    preload: true,
    customListeners: []
  },
  playback: {
    extrapolatedWindowNumSegments: 2,
    triggerFatalErrorOnResourceDenied: false,
    hlsjsConfig: {
      // hls.js specific options
    }
  }
})

hlsUseNextLevel

Default value: false

The default behavior for the HLS playback is to use hls.currentLevel to switch current level. To change this behaviour and force HLS playback to use hls.nextLevel, add hlsUseNextLevel: true to embed parameters.

hlsMinimumDvrSize

Default value: 60 (seconds)

Option to define the minimum DVR size to active seek on Clappr live mode.

extrapolatedWindowNumSegments

Default value: 2

Configure the size of the start time extrapolation window measured as a multiple of segments.

Should be 2 or higher, or 0 to disable. It should only need to be increased above 2 if more than one segment is removed from the start of the playlist at a time.

E.g.: If the playlist is cached for 10 seconds and new chunks are added/removed every 5.

hlsRecoverAttempts

Default value: 16

The hls.js have recover approaches for some fatal errors. This option sets the max recovery attempts number for those errors.

triggerFatalErrorOnResourceDenied

Default value: false

If this option is set to true, the playback will triggers fatal error event if decrypt key http response code is greater than or equal to 400. This option is used to attempt to reproduce iOS devices behaviour which internally use html5 video playback.

hlsPlayback

Soon (in a new breaking change version), all options related to this playback that are declared in the scope of the options object will have to be declared necessarily within this new scope!

Groups all options related directly to HlsjsPlayback configs.

var player = new Clappr.Player(
  {
    ...
    hlsPlayback: {
      preload: true,
      customListeners: [],
    },
  });

hlsPlayback.preload

Default value: true

Configures whether the source should be loaded as soon as the HLS.JS internal reference is setup or only after the first play.

hlsPlayback.customListeners

An array of listeners object with specific parameters to add on HLS.JS instance.

var player = new Clappr.Player(
  {
    ...
    hlsPlayback: {
      ...
      customListeners: [
        // "hlsFragLoaded" is the value of HlsjsPlayback.HLSJS.Events.FRAG_LOADED constant.
        { eventName: 'hlsFragLoaded', callback: (event, data) => { console.log('>>>>>> data: ', data) }, once: true }
      ],
    },
  });

The listener object parameters are:

  • eventName: A valid event name of hls.js events API;
  • callback: The callback that should be called when the event listened happen.
  • once: Flag to configure if the listener needs to be valid just for one time.

hlsjsConfig

As HlsjsPlayback is based on hls.js, it's possible to use the available hls.js configs too. You can check them out here.

To use these settings, use the hlsjsConfig object.

Example:

var player = new Clappr.Player(
  {
    ...
    playback: {
      hlsjsConfig: {
        debug: true, // https://github.com/video-dev/hls.js/blob/master/docs/API.md#debug
        enableworker: false, // https://github.com/video-dev/hls.js/blob/master/docs/API.md#enableworker
        ...
      },
    },
  });

Development

Enter the project directory and install the dependencies:

yarn install

Make your changes and run the tests (Vitest):

yarn test

Build your own version (Vite library mode):

yarn build

Check the result on dist/ folder.

Starting a local server:

yarn start

This command will start a Vite dev server on port 8080. You can check a sample page with Clappr-core using the HlsjsPlayback on http://localhost:8080/

Release

To release a new version, first create a new tag by running:

npm version [patch | minor | major]

Choose between patch, minor, or major according to the changes for the new version.

After that, publish the new version to NPM by running:

npm publish

Check the new version on npmjs @clappr/hlsjs-playback.

版本与发布记录

@clappr/hlsjs-playback 共发布 53 个版本,首次发布于 2019/06/25;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.1.4latest2026/10/2614 天前
3.1.32026/10/2120 天前
3.1.22026/10/061 个月前
3.1.12026/09/102 个月前
3.1.02026/08/282 个月前
3.0.32026/08/162 个月前

关于 @clappr/hlsjs-playback 的常见问题

@clappr/hlsjs-playback 是什么?

HLS Playback based on hls.js

如何安装 @clappr/hlsjs-playback?

在项目目录运行 npm install @clappr/hlsjs-playback,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:hls.js(^1)、@clappr/core(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@clappr/hlsjs-playback 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/clappr__hlsjs-playback 是否存在。

@clappr/hlsjs-playback 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@clappr/hlsjs-playback 可以商用吗?

@clappr/hlsjs-playback 使用 BSD-3-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括,不构成法律意见,请以许可原文为准。

@clappr/hlsjs-playback 的下载量有多少?

根据 npm 官方下载统计,@clappr/hlsjs-playback 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,015 次,日均约 101 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@clappr/hlsjs-playback 还在维护吗?

最新版本 3.1.4 发布于 2026/10/26(14 天前);至今共发布 53 个版本,其中过去 12 个月发布了 18 个;首次发布于 2019/06/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。