@videojs/react 10.0.0-beta.30 → 10.0.0-beta.31

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.
Files changed (130) hide show
  1. package/dist/default/i18n/context.js.map +1 -1
  2. package/dist/default/i18n/create-i18n.js +3 -1
  3. package/dist/default/i18n/create-i18n.js.map +1 -1
  4. package/dist/default/i18n/get-provider-root-props.js +4 -2
  5. package/dist/default/i18n/get-provider-root-props.js.map +1 -1
  6. package/dist/default/player/container.js +16 -7
  7. package/dist/default/player/container.js.map +1 -1
  8. package/dist/default/presets/audio/minimal-skin.css +39 -7
  9. package/dist/default/presets/audio/skin.css +31 -7
  10. package/dist/default/presets/live-audio/minimal-skin.css +39 -7
  11. package/dist/default/presets/live-audio/skin.css +31 -7
  12. package/dist/default/presets/live-video/minimal-skin.css +39 -7
  13. package/dist/default/presets/live-video/minimal-skin.js +4 -1
  14. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  15. package/dist/default/presets/live-video/minimal-skin.tailwind.js +4 -1
  16. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  17. package/dist/default/presets/live-video/skin.css +31 -7
  18. package/dist/default/presets/live-video/skin.js +4 -1
  19. package/dist/default/presets/live-video/skin.js.map +1 -1
  20. package/dist/default/presets/live-video/skin.tailwind.js +4 -1
  21. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  22. package/dist/default/presets/video/minimal-skin.css +39 -7
  23. package/dist/default/presets/video/minimal-skin.js +27 -11
  24. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  25. package/dist/default/presets/video/minimal-skin.tailwind.js +28 -12
  26. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  27. package/dist/default/presets/video/skin.css +31 -7
  28. package/dist/default/presets/video/skin.js +27 -11
  29. package/dist/default/presets/video/skin.js.map +1 -1
  30. package/dist/default/presets/video/skin.tailwind.js +28 -12
  31. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  32. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  33. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  34. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  35. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  36. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -7
  37. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  38. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  39. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  40. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  41. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  42. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  43. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  44. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  45. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  46. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  47. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  48. package/dist/default/ui/hooks/use-slider.js +1 -2
  49. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  50. package/dist/dev/i18n/context.d.ts +3 -1
  51. package/dist/dev/i18n/context.d.ts.map +1 -1
  52. package/dist/dev/i18n/context.js.map +1 -1
  53. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  54. package/dist/dev/i18n/create-i18n.js +3 -1
  55. package/dist/dev/i18n/create-i18n.js.map +1 -1
  56. package/dist/dev/i18n/get-provider-root-props.js +4 -2
  57. package/dist/dev/i18n/get-provider-root-props.js.map +1 -1
  58. package/dist/dev/player/container.d.ts.map +1 -1
  59. package/dist/dev/player/container.js +16 -7
  60. package/dist/dev/player/container.js.map +1 -1
  61. package/dist/dev/presets/audio/minimal-skin.css +39 -7
  62. package/dist/dev/presets/audio/skin.css +31 -7
  63. package/dist/dev/presets/live-audio/minimal-skin.css +39 -7
  64. package/dist/dev/presets/live-audio/skin.css +31 -7
  65. package/dist/dev/presets/live-video/minimal-skin.css +39 -7
  66. package/dist/dev/presets/live-video/minimal-skin.js +4 -1
  67. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  68. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +4 -1
  69. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  70. package/dist/dev/presets/live-video/skin.css +31 -7
  71. package/dist/dev/presets/live-video/skin.js +4 -1
  72. package/dist/dev/presets/live-video/skin.js.map +1 -1
  73. package/dist/dev/presets/live-video/skin.tailwind.js +4 -1
  74. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  75. package/dist/dev/presets/video/minimal-skin.css +39 -7
  76. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  77. package/dist/dev/presets/video/minimal-skin.js +27 -11
  78. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  79. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  80. package/dist/dev/presets/video/minimal-skin.tailwind.js +28 -12
  81. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  82. package/dist/dev/presets/video/skin.css +31 -7
  83. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  84. package/dist/dev/presets/video/skin.js +27 -11
  85. package/dist/dev/presets/video/skin.js.map +1 -1
  86. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  87. package/dist/dev/presets/video/skin.tailwind.js +28 -12
  88. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  89. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  90. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  91. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  92. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  93. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -7
  94. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  95. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  96. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  97. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  98. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  99. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  100. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  101. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  102. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  103. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  104. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  105. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  106. package/dist/dev/ui/hooks/use-slider.js +1 -2
  107. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  108. package/docs/README.md +1 -1
  109. package/docs/concepts/media-sources.md +26 -2
  110. package/docs/concepts/skins.md +48 -16
  111. package/docs/how-to/customize-skins.md +7933 -50
  112. package/docs/how-to/i18n-switch-locale.md +27 -0
  113. package/docs/how-to/installation.md +4 -4
  114. package/docs/how-to/migrate-from-plyr.md +1 -1
  115. package/docs/llms.txt +7 -0
  116. package/docs/reference/cloudflare-video.md +223 -0
  117. package/docs/reference/dash-video.md +55 -0
  118. package/docs/reference/feature-metadata.md +3 -1
  119. package/docs/reference/hls-audio.md +27 -1
  120. package/docs/reference/hls-video.md +39 -1
  121. package/docs/reference/hlsjs-video.md +627 -0
  122. package/docs/reference/native-hls-video.md +41 -0
  123. package/docs/reference/shaka-video.md +359 -0
  124. package/docs/reference/spotify-audio.md +188 -0
  125. package/docs/reference/tiktok-video.md +280 -0
  126. package/docs/reference/title.md +1 -1
  127. package/docs/reference/twitch-video.md +211 -0
  128. package/docs/reference/vimeo-video.md +736 -0
  129. package/docs/reference/youtube-video.md +339 -0
  130. package/package.json +8 -8
@@ -90,6 +90,633 @@ Description
90
90
 
91
91
  Current stream type (`'on-demand'` / `'live'` / `'unknown'`).
92
92
 
93
+ ### Engine options
94
+
95
+ #### `source.engine.hlsJs`
96
+
97
+ Pass hls.js’s own configuration here. It’s handed to hls.js untouched, so every option in its [config reference](https://github.com/video-dev/hls.js/blob/master/docs/API.md#fine-tuning) works, spelled the way hls.js spells it. [Media Sources](../concepts/media-sources.md) covers how engine options fit into a structured source.
98
+
99
+ The names and types below come from hls.js’s own type definitions, so they tell you what exists and what shape it takes. hls.js documents what each one does; the descriptions are theirs to write, and most are blank here because its types carry none.
100
+
101
+ tsx
102
+
103
+ ```
104
+ <HlsJsVideo
105
+ source={{
106
+ src: 'https://example.com/playlist.m3u8',
107
+ engine: { hlsJs: { maxBufferLength: 30, lowLatencyMode: true } },
108
+ }}
109
+ />
110
+ ```
111
+
112
+ Option
113
+
114
+ Type
115
+
116
+ Details
117
+
118
+ `abrBandWidthFactor`
119
+
120
+ `number`
121
+
122
+ `abrBandWidthUpFactor`
123
+
124
+ `number`
125
+
126
+ `abrController`
127
+
128
+ `typeof AbrController`
129
+
130
+ `abrEwmaDefaultEstimate`
131
+
132
+ `number`
133
+
134
+
135
+
136
+ Description
137
+
138
+ Default bandwidth estimate in bits/s prior to collecting fragment bandwidth samples
139
+
140
+ `abrEwmaDefaultEstimateMax`
141
+
142
+ `number`
143
+
144
+ `abrEwmaFastLive`
145
+
146
+ `number`
147
+
148
+ `abrEwmaFastVoD`
149
+
150
+ `number`
151
+
152
+ `abrEwmaSlowLive`
153
+
154
+ `number`
155
+
156
+ `abrEwmaSlowVoD`
157
+
158
+ `number`
159
+
160
+ `abrMaxWithRealBitrate`
161
+
162
+ `boolean`
163
+
164
+ `appendErrorMaxRetry`
165
+
166
+ `number`
167
+
168
+ `assetPlayerId`
169
+
170
+ `string`
171
+
172
+ `audioPreference`
173
+
174
+ `AudioSelectionOption`
175
+
176
+ `audioStreamController`
177
+
178
+ `typeof AudioStreamController`
179
+
180
+ `audioTrackController`
181
+
182
+ `typeof AudioTrackController`
183
+
184
+ `autoStartLoad`
185
+
186
+ `boolean`
187
+
188
+ `backBufferLength`
189
+
190
+ `number`
191
+
192
+ `bufferController`
193
+
194
+ `typeof BufferController`
195
+
196
+ `capLevelController`
197
+
198
+ `typeof CapLevelController`
199
+
200
+ `capLevelOnFPSDrop`
201
+
202
+ `boolean`
203
+
204
+ `capLevelToPlayerSize`
205
+
206
+ `boolean`
207
+
208
+ `captionsTextTrack1Label`
209
+
210
+ `string`
211
+
212
+ `captionsTextTrack1LanguageCode`
213
+
214
+ `string`
215
+
216
+ `captionsTextTrack2Label`
217
+
218
+ `string`
219
+
220
+ `captionsTextTrack2LanguageCode`
221
+
222
+ `string`
223
+
224
+ `captionsTextTrack3Label`
225
+
226
+ `string`
227
+
228
+ `captionsTextTrack3LanguageCode`
229
+
230
+ `string`
231
+
232
+ `captionsTextTrack4Label`
233
+
234
+ `string`
235
+
236
+ `captionsTextTrack4LanguageCode`
237
+
238
+ `string`
239
+
240
+ `certLoadPolicy`
241
+
242
+ `LoadPolicy`
243
+
244
+ `cmcd`
245
+
246
+ `CMCDControllerConfig`
247
+
248
+ `cmcdController`
249
+
250
+ `typeof CMCDController`
251
+
252
+ `contentSteeringController`
253
+
254
+ `typeof ContentSteeringController`
255
+
256
+ `cueHandler`
257
+
258
+ `CuesInterface`
259
+
260
+ `debug`
261
+
262
+ `boolean | ILogger`
263
+
264
+ `defaultAudioCodec`
265
+
266
+ `string`
267
+
268
+ `detectStallWithCurrentTimeMs`
269
+
270
+ `number`
271
+
272
+ `drmSystemOptions`
273
+
274
+ `DRMSystemOptions | undefined`
275
+
276
+ `drmSystems`
277
+
278
+ `Partial<Record<KeySystems, DRMSystemC...`
279
+
280
+
281
+
282
+ Type
283
+
284
+ `Partial<Record<KeySystems, DRMSystemConfiguration>> | undefined`
285
+
286
+ `emeController`
287
+
288
+ `typeof EMEController`
289
+
290
+ `emeEnabled`
291
+
292
+ `boolean`
293
+
294
+ `enableCEA708Captions`
295
+
296
+ `boolean`
297
+
298
+ `enableDateRangeMetadataCues`
299
+
300
+ `boolean`
301
+
302
+ `enableEmsgKLVMetadata`
303
+
304
+ `boolean`
305
+
306
+ `enableEmsgMetadataCues`
307
+
308
+ `boolean`
309
+
310
+ `enableID3MetadataCues`
311
+
312
+ `boolean`
313
+
314
+ `enableIMSC1`
315
+
316
+ `boolean`
317
+
318
+ `enableInterstitialPlayback`
319
+
320
+ `boolean`
321
+
322
+ `enableSoftwareAES`
323
+
324
+ `boolean`
325
+
326
+ `enableWebVTT`
327
+
328
+ `boolean`
329
+
330
+ `enableWorker`
331
+
332
+ `boolean`
333
+
334
+ `errorController`
335
+
336
+ `typeof ErrorController`
337
+
338
+ `fetchSetup`
339
+
340
+ `function`
341
+
342
+
343
+
344
+ Type
345
+
346
+ `(context: LoaderContext, initParams: any) => Request | Promise<Request>`
347
+
348
+ `fLoader`
349
+
350
+ `FragmentLoaderConstructor`
351
+
352
+ `forceKeyFrameOnDiscontinuity`
353
+
354
+ `boolean`
355
+
356
+ `fpsController`
357
+
358
+ `typeof FPSController`
359
+
360
+ `fpsDroppedMonitoringPeriod`
361
+
362
+ `number`
363
+
364
+ `fpsDroppedMonitoringThreshold`
365
+
366
+ `number`
367
+
368
+ `fragLoadingMaxRetry`
369
+
370
+ `number`
371
+
372
+ `fragLoadingMaxRetryTimeout`
373
+
374
+ `number`
375
+
376
+ `fragLoadingRetryDelay`
377
+
378
+ `number`
379
+
380
+ `fragLoadingTimeOut`
381
+
382
+ `number`
383
+
384
+ `fragLoadPolicy`
385
+
386
+ `LoadPolicy`
387
+
388
+ `frontBufferFlushThreshold`
389
+
390
+ `number`
391
+
392
+ `highBufferWatchdogPeriod`
393
+
394
+ `number`
395
+
396
+ `ignoreDevicePixelRatio`
397
+
398
+ `boolean`
399
+
400
+ `ignorePlaylistParsingErrors`
401
+
402
+ `boolean`
403
+
404
+ `initialLiveManifestSize`
405
+
406
+ `number`
407
+
408
+ `interstitialAppendInPlace`
409
+
410
+ `boolean`
411
+
412
+ `interstitialAssetListLoadPolicy`
413
+
414
+ `LoadPolicy`
415
+
416
+ `interstitialLiveLookAhead`
417
+
418
+ `number`
419
+
420
+ `interstitialsController`
421
+
422
+ `typeof InterstitialsController`
423
+
424
+ `keyLoadPolicy`
425
+
426
+ `LoadPolicy`
427
+
428
+ `levelLoadingMaxRetry`
429
+
430
+ `number`
431
+
432
+ `levelLoadingMaxRetryTimeout`
433
+
434
+ `number`
435
+
436
+ `levelLoadingRetryDelay`
437
+
438
+ `number`
439
+
440
+ `levelLoadingTimeOut`
441
+
442
+ `number`
443
+
444
+ `licenseResponseCallback`
445
+
446
+ `function`
447
+
448
+
449
+
450
+ Type
451
+
452
+ `(this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext) => ArrayBuffer`
453
+
454
+ `licenseXhrSetup`
455
+
456
+ `function`
457
+
458
+
459
+
460
+ Type
461
+
462
+ `(this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext, licenseChallenge: Uint8Array<ArrayBufferLike>) => void | ... 1 more ... | Promise<...>`
463
+
464
+ `liveBackBufferLength`
465
+
466
+ `number | null`
467
+
468
+ `liveDurationInfinity`
469
+
470
+ `boolean`
471
+
472
+ `liveMaxLatencyDuration`
473
+
474
+ `number`
475
+
476
+ `liveMaxLatencyDurationCount`
477
+
478
+ `number`
479
+
480
+ `liveSyncDuration`
481
+
482
+ `number`
483
+
484
+ `liveSyncDurationCount`
485
+
486
+ `number`
487
+
488
+ `liveSyncMode`
489
+
490
+ `"buffered" | "edge"`
491
+
492
+ `liveSyncOnStallIncrease`
493
+
494
+ `number`
495
+
496
+ `loader`
497
+
498
+ `function`
499
+
500
+
501
+
502
+ Type
503
+
504
+ `new (confg: HlsConfig) => Loader<LoaderContext>`
505
+
506
+ `lowLatencyMode`
507
+
508
+ `boolean`
509
+
510
+ `manifestLoadingMaxRetry`
511
+
512
+ `number`
513
+
514
+ `manifestLoadingMaxRetryTimeout`
515
+
516
+ `number`
517
+
518
+ `manifestLoadingRetryDelay`
519
+
520
+ `number`
521
+
522
+ `manifestLoadingTimeOut`
523
+
524
+ `number`
525
+
526
+ `manifestLoadPolicy`
527
+
528
+ `LoadPolicy`
529
+
530
+ `maxAudioFramesDrift`
531
+
532
+ `number`
533
+
534
+ `maxBufferHole`
535
+
536
+ `number`
537
+
538
+ `maxBufferLength`
539
+
540
+ `number`
541
+
542
+ `maxBufferSize`
543
+
544
+ `number`
545
+
546
+ `maxDevicePixelRatio`
547
+
548
+ `number`
549
+
550
+ `maxFragLookUpTolerance`
551
+
552
+ `number`
553
+
554
+ `maxLiveSyncPlaybackRate`
555
+
556
+ `number`
557
+
558
+ `maxLoadingDelay`
559
+
560
+ `number`
561
+
562
+ `maxMaxBufferLength`
563
+
564
+ `number`
565
+
566
+ `maxStarvationDelay`
567
+
568
+ `number`
569
+
570
+ `minAutoBitrate`
571
+
572
+ `number`
573
+
574
+ `nudgeMaxRetry`
575
+
576
+ `number`
577
+
578
+ `nudgeOffset`
579
+
580
+ `number`
581
+
582
+ `nudgeOnVideoHole`
583
+
584
+ `boolean`
585
+
586
+ `playlistLoadPolicy`
587
+
588
+ `LoadPolicy`
589
+
590
+ `pLoader`
591
+
592
+ `PlaylistLoaderConstructor`
593
+
594
+ `preferManagedMediaSource`
595
+
596
+ `boolean`
597
+
598
+ `preserveManualLevelOnError`
599
+
600
+ `boolean`
601
+
602
+ `primarySessionId`
603
+
604
+ `string`
605
+
606
+ `progressive`
607
+
608
+ `boolean`
609
+
610
+ `renderTextTracksNatively`
611
+
612
+ `boolean`
613
+
614
+ `requestMediaKeySystemAccessFunc`
615
+
616
+ `MediaKeyFunc | null`
617
+
618
+ `requireKeySystemAccessOnStart`
619
+
620
+ `boolean`
621
+
622
+ `startFragPrefetch`
623
+
624
+ `boolean`
625
+
626
+ `startLevel`
627
+
628
+ `number`
629
+
630
+ `startOnSegmentBoundary`
631
+
632
+ `boolean`
633
+
634
+ `startPosition`
635
+
636
+ `number`
637
+
638
+ `steeringManifestLoadPolicy`
639
+
640
+ `LoadPolicy`
641
+
642
+ `stretchShortVideoTrack`
643
+
644
+ `boolean`
645
+
646
+ `subtitlePreference`
647
+
648
+ `SubtitleSelectionOption`
649
+
650
+ `subtitleStreamController`
651
+
652
+ `typeof SubtitleStreamController`
653
+
654
+ `subtitleTrackController`
655
+
656
+ `typeof SubtitleTrackController`
657
+
658
+ `testBandwidth`
659
+
660
+ `boolean`
661
+
662
+ `timelineController`
663
+
664
+ `typeof TimelineController`
665
+
666
+ `timelineOffset`
667
+
668
+ `number`
669
+
670
+ `useMediaCapabilities`
671
+
672
+ `boolean`
673
+
674
+ `videoPreference`
675
+
676
+ `VideoSelectionOption`
677
+
678
+ `widevineLicenseUrl`
679
+
680
+ `string`
681
+
682
+ `workerPath`
683
+
684
+ `string | null`
685
+
686
+ `xhrSetup`
687
+
688
+ `function`
689
+
690
+
691
+
692
+ Type
693
+
694
+ `(xhr: XMLHttpRequest, url: string) => void | Promise<void>`
695
+
696
+ #### `source.engine.nativeHls`
697
+
698
+ When playback falls back to the browser’s own HLS, hls.js isn’t involved and its options don’t apply. This configures that path instead.
699
+
700
+ Option
701
+
702
+ Type
703
+
704
+ Details
705
+
706
+ `drmSystems`
707
+
708
+ `Partial<Record<KeySystem, DrmSystemCo...`
709
+
710
+
711
+
712
+ Description
713
+
714
+ License servers for protected content, keyed by EME key system id. An escape hatch for licensing native playback differently from every other path: naming it replaces `source.drm` here, and nowhere else.
715
+
716
+ Type
717
+
718
+ `Partial<Record<KeySystem, DrmSystemConfig>> | undefined`
719
+
93
720
  ### Ref
94
721
 
95
722
  Forwards its ref to the rendered `<video>`. The ref is an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) and exposes its complete native property and method API.
@@ -94,6 +94,47 @@ Description
94
94
 
95
95
  Current stream type (`'on-demand'` / `'live'` / `'unknown'`).
96
96
 
97
+ ### Engine options
98
+
99
+ #### `source.engine.nativeHls`
100
+
101
+ This element hands playback to the browser, so there’s no JavaScript engine to configure. This carries the one thing native playback still needs from you. [Media Sources](../concepts/media-sources.md) covers how engine options fit into a structured source.
102
+
103
+ tsx
104
+
105
+ ```
106
+ <NativeHlsVideo
107
+ source={{
108
+ src: 'https://example.com/playlist.m3u8',
109
+ engine: {
110
+ nativeHls: {
111
+ drmSystems: { 'com.apple.fps': { licenseUrl: 'https://example.com/license' } },
112
+ },
113
+ },
114
+ }}
115
+ />
116
+ ```
117
+
118
+ Option
119
+
120
+ Type
121
+
122
+ Details
123
+
124
+ `drmSystems`
125
+
126
+ `Partial<Record<KeySystem, DrmSystemCo...`
127
+
128
+
129
+
130
+ Description
131
+
132
+ License servers for protected content, keyed by EME key system id. An escape hatch for licensing native playback differently from every other path: naming it replaces `source.drm` here, and nowhere else.
133
+
134
+ Type
135
+
136
+ `Partial<Record<KeySystem, DrmSystemConfig>> | undefined`
137
+
97
138
  ### Ref
98
139
 
99
140
  Forwards its ref to the rendered `<video>`. The ref is an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement) and exposes its complete native property and method API.