@oddin-gg/havik-player 2.15.4 → 2.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/API.md CHANGED
@@ -155,12 +155,13 @@ See [`WaitForLive`](#waitforlive) for tuning, and [`createPlayer`](#createplayer
155
155
  parameters. Use the **same api‑key** to resolve playback and to fetch licenses.
156
156
  The managed and iframe players handle this for you.
157
157
 
158
- > **FairPlay (Safari/iOS):** implemented on the hls.js engine. When the playback
159
- > descriptor carries FairPlay material and the platform is WebKit, the player
160
- > offers `com.apple.fps` alongside Widevine: hls.js fetches the application
158
+ > **FairPlay (Safari/iOS):** played by the browser's **native** player. When
159
+ > the playback descriptor carries FairPlay material and the browser is WebKit,
160
+ > `engine: 'auto'` selects the native engine, which fetches the application
161
161
  > certificate, handles the encrypted event, POSTs the SPC to the signed license
162
- > URL and applies the returned CKC. No configuration is needed beyond the same
163
- > api‑key used for playback.
162
+ > URL and applies the returned CKC. hls.js is not used for FairPlay: through
163
+ > MSE, WebKit reports the key usable and still renders nothing. No
164
+ > configuration is needed beyond the same api‑key used for playback.
164
165
  >
165
166
  > **iOS third‑party browsers (Chrome/Firefox/Edge on iOS):** iOS has no
166
167
  > Widevine CDM, so protected playback in these browsers depends entirely on
@@ -170,16 +171,16 @@ See [`WaitForLive`](#waitforlive) for tuning, and [`createPlayer`](#createplayer
170
171
 
171
172
  ### Browser support
172
173
 
173
- | Browser | Engine | DRM |
174
- | -------------------------------- | --------------------- | -------------------------------------------------- |
175
- | Chrome, Edge (desktop & Android) | hls.js | Widevine ✓ |
176
- | Firefox | hls.js | Widevine ✓ |
177
- | Safari (macOS, iOS 17.1+) | hls.js (via MMS) | FairPlay ✓ (`com.apple.fps`) |
178
- | Older Safari / iOS | native HLS (fallback) | FairPlay, OS passthrough only |
179
- | Chrome/Firefox/Edge **on iOS** | hls.js | probe with `detectDrmSupport` (no Widevine on iOS) |
174
+ | Browser | Engine | DRM |
175
+ | -------------------------------- | --------------------------- | -------------------------------------------------- |
176
+ | Chrome, Edge (desktop & Android) | hls.js | Widevine ✓ |
177
+ | Firefox | hls.js | Widevine ✓ |
178
+ | Safari (macOS) | hls.js; native for FairPlay | FairPlay ✓ (native engine) |
179
+ | Safari (iPhone, iPad) | native HLS | FairPlay ✓ (native engine) |
180
+ | Chrome/Firefox/Edge **on iOS** | native HLS | probe with `detectDrmSupport` (no Widevine on iOS) |
180
181
 
181
- Requires a browser with Media Source Extensions (or ManagedMediaSource) and
182
- Encrypted Media Extensions (all evergreen browsers).
182
+ Requires a browser with Media Source Extensions and Encrypted Media Extensions
183
+ (all evergreen browsers), or native HLS (iPhone, iPad, and older Safari).
183
184
 
184
185
  ---
185
186
 
@@ -237,7 +238,7 @@ player.on('error', (e) => console.error(e.code, e.httpStatus, e.message));
237
238
  | `errorMessage` | `string` | the error's message | Message on the fatal-error card (otherwise the error's own message). |
238
239
  | `waitForLive` | [`WaitForLive`](#waitforlive) | — | Arm on an upcoming match and auto‑attach at go‑live. |
239
240
  | `lowLatency` | `'auto' \| boolean` | `'auto'` | `'auto'` lets the player decide from the manifest. |
240
- | `engine` | `'auto' \| 'hls' \| 'native'` | `'auto'` | `'auto'` prefers hls.js wherever it is supported, including modern Safari/iOS via ManagedMediaSource, and falls back to native HLS otherwise. |
241
+ | `engine` | `'auto' \| 'hls' \| 'native'` | `'auto'` | `'auto'` uses the browser's native player on iPhone and iPad for every stream, and for FairPlay on any Apple browser; elsewhere it prefers hls.js (desktop Safari included) and falls back to native HLS. hls.js on iOS runs on ManagedMediaSource, which closed mid‑session and played slower than real time in testing. |
241
242
  | `userId` | `string` | — | Optional viewer id (sent as `X-User-Id` on license requests). |
242
243
  | `debug` | `boolean` | `false` | Turn on hls.js's internal console logging: fragment/part scheduling, ABR switches, EME key sessions and license traffic. For diagnosing a playback problem with Oddin support; leave it off in production (it logs on every fragment, and the EME lines include license request/response metadata). hls.js engine only. `hlsConfig.debug` still wins if you set both. |
243
244
  | `hlsConfig` | `Partial<HlsConfig>` | — | Escape hatch for advanced hls.js tuning. |
package/embed/index.html CHANGED
@@ -28,7 +28,7 @@
28
28
  beacons endpoint can be derived and QoE analytics is silently off.
29
29
  `analytics` is honoured from the injected config only, never the query.
30
30
  -->
31
- <script src="https://cdn.jsdelivr.net/npm/@oddin-gg/havik-player@2.15.4/dist/havik-player.global.js" integrity="sha384-KHquOQfjrHz3RnxzF+WQxpiXOiQb/ypcpe5Ny5oJmonEPggkQy+8BV5D5rrRfHkT" crossorigin="anonymous"></script>
31
+ <script src="https://cdn.jsdelivr.net/npm/@oddin-gg/havik-player@2.15.6/dist/havik-player.global.js" integrity="sha384-16ZwO+uKWeKiYEW9Ct6I8WAnkUXTxhYLNTHWTD2eRP3Z28U1exS61rVY1/MVvHEa" crossorigin="anonymous"></script>
32
32
  <script>
33
33
  HavikPlayer.bootEmbed();
34
34
  </script>
@@ -12,7 +12,7 @@
12
12
  shipped in each npm release is pinned to that release with Subresource
13
13
  Integrity, injected at publish time (scripts/inject-sri.mjs). In
14
14
  production, always use a pinned + SRI'd tag like the released copy. -->
15
- <script src="https://cdn.jsdelivr.net/npm/@oddin-gg/havik-player@2.15.4/dist/havik-player.global.js" integrity="sha384-KHquOQfjrHz3RnxzF+WQxpiXOiQb/ypcpe5Ny5oJmonEPggkQy+8BV5D5rrRfHkT" crossorigin="anonymous"></script>
15
+ <script src="https://cdn.jsdelivr.net/npm/@oddin-gg/havik-player@2.15.6/dist/havik-player.global.js" integrity="sha384-16ZwO+uKWeKiYEW9Ct6I8WAnkUXTxhYLNTHWTD2eRP3Z28U1exS61rVY1/MVvHEa" crossorigin="anonymous"></script>
16
16
  <script>
17
17
  (async () => {
18
18
  const player = await HavikPlayer.createPlayer({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oddin-gg/havik-player",
3
- "version": "2.15.4",
3
+ "version": "2.15.6",
4
4
  "description": "Havik HTML5 player SDK — LL-HLS + DRM playback for Oddin live streams (managed, bring-your-own-player, and iframe-embed modes).",
5
5
  "type": "module",
6
6
  "sideEffects": false,