bitmovin-player-react-native 1.2.0 → 1.4.0
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/CHANGELOG.md +34 -0
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/bitmovin/player/reactnative/PlayerModule.kt +47 -0
- package/android/src/main/java/com/bitmovin/player/reactnative/converter/JsonConverter.kt +32 -3
- package/build/adaptationConfig.d.ts +1 -1
- package/build/adaptationConfig.js.map +1 -1
- package/build/advertising.d.ts +54 -1
- package/build/advertising.d.ts.map +1 -1
- package/build/advertising.js.map +1 -1
- package/build/audioSession.d.ts +3 -3
- package/build/audioSession.js +2 -2
- package/build/audioSession.js.map +1 -1
- package/build/bitmovinCastManager.d.ts +3 -3
- package/build/bitmovinCastManager.js +2 -2
- package/build/bitmovinCastManager.js.map +1 -1
- package/build/bufferConfig.d.ts +2 -2
- package/build/bufferConfig.js.map +1 -1
- package/build/components/PlayerView/events.d.ts +16 -16
- package/build/components/PlayerView/events.js.map +1 -1
- package/build/components/PlayerView/nativeEvents.d.ts +16 -16
- package/build/components/PlayerView/nativeEvents.js.map +1 -1
- package/build/components/PlayerView/pictureInPictureConfig.d.ts +1 -1
- package/build/components/PlayerView/pictureInPictureConfig.js.map +1 -1
- package/build/components/PlayerView/playerViewConfig.d.ts +2 -2
- package/build/components/PlayerView/playerViewConfig.js.map +1 -1
- package/build/decoder/decoderConfig.d.ts +2 -2
- package/build/decoder/decoderConfig.js.map +1 -1
- package/build/drm/index.d.ts +2 -2
- package/build/drm/index.js.map +1 -1
- package/build/drm/widevineConfig.d.ts +5 -5
- package/build/drm/widevineConfig.js.map +1 -1
- package/build/events.d.ts +10 -10
- package/build/events.js.map +1 -1
- package/build/media.d.ts +4 -0
- package/build/media.d.ts.map +1 -1
- package/build/media.js.map +1 -1
- package/build/modules/PlayerModule.d.ts +12 -1
- package/build/modules/PlayerModule.d.ts.map +1 -1
- package/build/modules/PlayerModule.js.map +1 -1
- package/build/offline/offlineContentConfig.d.ts +1 -1
- package/build/offline/offlineContentConfig.js.map +1 -1
- package/build/offline/offlineContentManager.d.ts +2 -2
- package/build/offline/offlineContentManager.js +2 -2
- package/build/offline/offlineContentManager.js.map +1 -1
- package/build/offline/offlineContentManagerListener.d.ts +13 -13
- package/build/offline/offlineContentManagerListener.js +1 -1
- package/build/offline/offlineContentManagerListener.js.map +1 -1
- package/build/offline/offlineContentOptions.d.ts +2 -2
- package/build/offline/offlineContentOptions.js.map +1 -1
- package/build/offline/offlineDownloadRequest.d.ts +1 -1
- package/build/offline/offlineDownloadRequest.js.map +1 -1
- package/build/offline/offlineSourceOptions.d.ts +2 -2
- package/build/offline/offlineSourceOptions.js.map +1 -1
- package/build/offline/offlineState.d.ts +1 -1
- package/build/offline/offlineState.js +1 -1
- package/build/offline/offlineState.js.map +1 -1
- package/build/playbackConfig.d.ts +1 -1
- package/build/playbackConfig.js.map +1 -1
- package/build/player.d.ts +13 -11
- package/build/player.d.ts.map +1 -1
- package/build/player.js +42 -11
- package/build/player.js.map +1 -1
- package/build/source.d.ts +2 -2
- package/build/source.js +1 -1
- package/build/source.js.map +1 -1
- package/build/styleConfig.d.ts +5 -5
- package/build/styleConfig.js +1 -1
- package/build/styleConfig.js.map +1 -1
- package/build/subtitleFormat.d.ts +5 -5
- package/build/subtitleFormat.js +5 -5
- package/build/subtitleFormat.js.map +1 -1
- package/build/subtitleTrack.d.ts +1 -1
- package/build/subtitleTrack.js.map +1 -1
- package/build/tweaksConfig.d.ts +15 -15
- package/build/tweaksConfig.js.map +1 -1
- package/ios/FullscreenHandlerModule.swift +26 -3
- package/ios/LockedBox.swift +6 -0
- package/ios/PlayerModule.swift +40 -0
- package/ios/RCTConvert+BitmovinPlayer.swift +41 -0
- package/ios/RNBitmovinPlayer.podspec +1 -1
- package/package.json +1 -1
- package/plugin/build/withBitmovinConfig.js +8 -2
- package/plugin/src/withAppGradleDependencies.ts +24 -21
- package/plugin/src/withBitmovinAndroidConfig.ts +4 -1
- package/plugin/src/withBitmovinConfig.ts +12 -3
- package/plugin/src/withBitmovinIosConfig.ts +4 -1
- package/src/adaptationConfig.ts +1 -1
- package/src/advertising.ts +56 -1
- package/src/audioSession.ts +3 -3
- package/src/bitmovinCastManager.ts +3 -3
- package/src/bufferConfig.ts +2 -2
- package/src/components/PlayerView/events.ts +16 -16
- package/src/components/PlayerView/nativeEvents.ts +16 -16
- package/src/components/PlayerView/pictureInPictureConfig.ts +1 -1
- package/src/components/PlayerView/playerViewConfig.ts +2 -2
- package/src/decoder/decoderConfig.ts +2 -2
- package/src/drm/index.ts +2 -2
- package/src/drm/widevineConfig.ts +5 -5
- package/src/events.ts +10 -10
- package/src/media.ts +4 -0
- package/src/modules/PlayerModule.ts +18 -2
- package/src/offline/offlineContentConfig.ts +1 -1
- package/src/offline/offlineContentManager.ts +2 -2
- package/src/offline/offlineContentManagerListener.ts +13 -13
- package/src/offline/offlineContentOptions.ts +2 -2
- package/src/offline/offlineDownloadRequest.ts +1 -1
- package/src/offline/offlineSourceOptions.ts +2 -2
- package/src/offline/offlineState.ts +1 -1
- package/src/playbackConfig.ts +1 -1
- package/src/player.ts +47 -12
- package/src/source.ts +2 -2
- package/src/styleConfig.ts +5 -5
- package/src/subtitleFormat.ts +5 -5
- package/src/subtitleTrack.ts +1 -1
- package/src/tweaksConfig.ts +15 -15
|
@@ -3,7 +3,7 @@ import { OfflineState } from './offlineState';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Enum to hold the `eventType` on the `BitmovinNativeOfflineEventData`
|
|
6
|
-
* @
|
|
6
|
+
* @platform Android, iOS
|
|
7
7
|
*/
|
|
8
8
|
export enum OfflineEventType {
|
|
9
9
|
onCompleted = 'onCompleted',
|
|
@@ -19,7 +19,7 @@ export enum OfflineEventType {
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* The base interface for all offline events.
|
|
22
|
-
* @
|
|
22
|
+
* @platform Android, iOS
|
|
23
23
|
*/
|
|
24
24
|
export interface OfflineEvent<T extends OfflineEventType> {
|
|
25
25
|
/**
|
|
@@ -42,7 +42,7 @@ export interface OfflineEvent<T extends OfflineEventType> {
|
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Emitted when the download process has completed.
|
|
45
|
-
* @
|
|
45
|
+
* @platform Android, iOS
|
|
46
46
|
*/
|
|
47
47
|
export interface OnCompletedEvent
|
|
48
48
|
extends OfflineEvent<OfflineEventType.onCompleted> {
|
|
@@ -54,7 +54,7 @@ export interface OnCompletedEvent
|
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* Emitted when an error has occurred.
|
|
57
|
-
* @
|
|
57
|
+
* @platform Android, iOS
|
|
58
58
|
*/
|
|
59
59
|
export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
|
|
60
60
|
/**
|
|
@@ -69,7 +69,7 @@ export interface OnErrorEvent extends OfflineEvent<OfflineEventType.onError> {
|
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
71
|
* Emitted when there is a progress change for the process call.
|
|
72
|
-
* @
|
|
72
|
+
* @platform Android, iOS
|
|
73
73
|
*/
|
|
74
74
|
export interface OnProgressEvent
|
|
75
75
|
extends OfflineEvent<OfflineEventType.onProgress> {
|
|
@@ -81,7 +81,7 @@ export interface OnProgressEvent
|
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
83
|
* Emitted when the `OfflineContentOptions` is available after a `OfflineContentManager.getOptions` call.
|
|
84
|
-
* @
|
|
84
|
+
* @platform Android, iOS
|
|
85
85
|
*/
|
|
86
86
|
export interface OnOptionsAvailableEvent
|
|
87
87
|
extends OfflineEvent<OfflineEventType.onOptionsAvailable> {
|
|
@@ -93,39 +93,39 @@ export interface OnOptionsAvailableEvent
|
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
95
|
* Emitted when the DRM license was updated.
|
|
96
|
-
* @
|
|
96
|
+
* @platform Android, iOS
|
|
97
97
|
*/
|
|
98
98
|
export type OnDrmLicenseUpdatedEvent =
|
|
99
99
|
OfflineEvent<OfflineEventType.onDrmLicenseUpdated>;
|
|
100
100
|
|
|
101
101
|
/**
|
|
102
102
|
* Emitted when the DRM license has expired.
|
|
103
|
-
* @
|
|
103
|
+
* @platform iOS
|
|
104
104
|
*/
|
|
105
105
|
export type OnDrmLicenseExpiredEvent =
|
|
106
106
|
OfflineEvent<OfflineEventType.onDrmLicenseExpired>;
|
|
107
107
|
|
|
108
108
|
/**
|
|
109
109
|
* Emitted when all active actions have been suspended.
|
|
110
|
-
* @
|
|
110
|
+
* @platform Android, iOS
|
|
111
111
|
*/
|
|
112
112
|
export type OnSuspendedEvent = OfflineEvent<OfflineEventType.onSuspended>;
|
|
113
113
|
|
|
114
114
|
/**
|
|
115
115
|
* Emitted when all actions have been resumed.
|
|
116
|
-
* @
|
|
116
|
+
* @platform Android, iOS
|
|
117
117
|
*/
|
|
118
118
|
export type OnResumedEvent = OfflineEvent<OfflineEventType.onResumed>;
|
|
119
119
|
|
|
120
120
|
/**
|
|
121
121
|
* Emitted when the download of the media content was canceled by the user and all partially downloaded content has been deleted from disk.
|
|
122
|
-
* @
|
|
122
|
+
* @platform Android, iOS
|
|
123
123
|
*/
|
|
124
124
|
export type OnCanceledEvent = OfflineEvent<OfflineEventType.onCanceled>;
|
|
125
125
|
|
|
126
126
|
/**
|
|
127
127
|
* The type aggregation for all possible native offline events received from the `DeviceEventEmitter`
|
|
128
|
-
* @
|
|
128
|
+
* @platform Android, iOS
|
|
129
129
|
*/
|
|
130
130
|
export type BitmovinNativeOfflineEventData =
|
|
131
131
|
| OnCompletedEvent
|
|
@@ -140,7 +140,7 @@ export type BitmovinNativeOfflineEventData =
|
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
142
|
* The listener that can be passed to the `OfflineContentManager` to receive callbacks for different events.
|
|
143
|
-
* @
|
|
143
|
+
* @platform Android, iOS
|
|
144
144
|
*/
|
|
145
145
|
export interface OfflineContentManagerListener {
|
|
146
146
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Superclass of entries which can be selected to download for offline playback
|
|
3
|
-
* @
|
|
3
|
+
* @platform Android, iOS
|
|
4
4
|
*/
|
|
5
5
|
export interface OfflineContentOptionEntry {
|
|
6
6
|
/**
|
|
@@ -15,7 +15,7 @@ export interface OfflineContentOptionEntry {
|
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Represents the downloadable options provided via the `onOptionsAvailable` callback on `OfflineContentManagerListener`
|
|
18
|
-
* @
|
|
18
|
+
* @platform Android, iOS
|
|
19
19
|
*/
|
|
20
20
|
export interface OfflineContentOptions {
|
|
21
21
|
/**
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Object used configure how the native offline managers create and get offline source configurations
|
|
3
|
-
* @
|
|
3
|
+
* @platform Android, iOS
|
|
4
4
|
*/
|
|
5
5
|
export interface OfflineSourceOptions {
|
|
6
6
|
/**
|
|
7
7
|
* Whether or not the player should restrict playback only to audio, video and subtitle tracks which are stored offline on the device. This has to be set to true if the device has no network access.
|
|
8
|
-
* @
|
|
8
|
+
* @platform iOS
|
|
9
9
|
*/
|
|
10
10
|
restrictedToAssetCache?: boolean;
|
|
11
11
|
}
|
package/src/playbackConfig.ts
CHANGED
package/src/player.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EventSubscription } from 'expo-modules-core';
|
|
1
2
|
import { Platform } from 'react-native';
|
|
2
3
|
import PlayerModule from './modules/PlayerModule';
|
|
3
4
|
import NativeInstance from './nativeInstance';
|
|
@@ -8,7 +9,7 @@ import { OfflineContentManager, OfflineSourceOptions } from './offline';
|
|
|
8
9
|
import { Thumbnail } from './thumbnail';
|
|
9
10
|
import { AnalyticsApi } from './analytics/player';
|
|
10
11
|
import { PlayerConfig } from './playerConfig';
|
|
11
|
-
import { AdItem } from './advertising';
|
|
12
|
+
import { AdItem, ImaSettings } from './advertising';
|
|
12
13
|
import { BufferApi } from './bufferApi';
|
|
13
14
|
import { VideoQuality } from './media';
|
|
14
15
|
import { Network } from './network';
|
|
@@ -50,11 +51,13 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
50
51
|
private network?: Network;
|
|
51
52
|
|
|
52
53
|
private decoderConfig?: DecoderConfigBridge;
|
|
54
|
+
private onImaBeforeInitializationSubscription?: EventSubscription;
|
|
53
55
|
/**
|
|
54
56
|
* Allocates the native `Player` instance and its resources natively.
|
|
55
57
|
*/
|
|
56
58
|
initialize = async (): Promise<void> => {
|
|
57
59
|
if (!this.isInitialized) {
|
|
60
|
+
this.ensureImaBeforeInitializationListener();
|
|
58
61
|
if (this.config?.networkConfig) {
|
|
59
62
|
this.network = new Network(this.config.networkConfig);
|
|
60
63
|
await this.network.initialize();
|
|
@@ -93,6 +96,8 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
93
96
|
this.source?.destroy();
|
|
94
97
|
this.network?.destroy();
|
|
95
98
|
this.decoderConfig?.destroy();
|
|
99
|
+
this.onImaBeforeInitializationSubscription?.remove();
|
|
100
|
+
this.onImaBeforeInitializationSubscription = undefined;
|
|
96
101
|
this.isDestroyed = true;
|
|
97
102
|
}
|
|
98
103
|
};
|
|
@@ -198,6 +203,36 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
198
203
|
PlayerModule.setVolume(this.nativeId, volume);
|
|
199
204
|
};
|
|
200
205
|
|
|
206
|
+
private ensureImaBeforeInitializationListener = () => {
|
|
207
|
+
const callback = this.config?.advertisingConfig?.ima?.beforeInitialization;
|
|
208
|
+
if (!callback) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (this.onImaBeforeInitializationSubscription) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
this.onImaBeforeInitializationSubscription = PlayerModule.addListener(
|
|
215
|
+
'onImaBeforeInitialization',
|
|
216
|
+
({ nativeId, id, settings }) => {
|
|
217
|
+
if (nativeId !== this.nativeId) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const cloned: ImaSettings = { ...settings };
|
|
221
|
+
let prepared = cloned;
|
|
222
|
+
try {
|
|
223
|
+
const result = callback(cloned);
|
|
224
|
+
prepared =
|
|
225
|
+
result && typeof result === 'object'
|
|
226
|
+
? { ...cloned, ...result }
|
|
227
|
+
: cloned;
|
|
228
|
+
} catch {
|
|
229
|
+
prepared = cloned;
|
|
230
|
+
}
|
|
231
|
+
PlayerModule.setPreparedImaSettings(id, prepared);
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
};
|
|
235
|
+
|
|
201
236
|
/**
|
|
202
237
|
* @returns The player's current volume level.
|
|
203
238
|
*/
|
|
@@ -257,7 +292,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
257
292
|
};
|
|
258
293
|
|
|
259
294
|
/**
|
|
260
|
-
* @
|
|
295
|
+
* @platform iOS
|
|
261
296
|
* @returns `true` when media is played externally using AirPlay.
|
|
262
297
|
*/
|
|
263
298
|
isAirPlayActive = async (): Promise<boolean> => {
|
|
@@ -271,7 +306,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
271
306
|
};
|
|
272
307
|
|
|
273
308
|
/**
|
|
274
|
-
* @
|
|
309
|
+
* @platform iOS
|
|
275
310
|
* @returns `true` when AirPlay is available.
|
|
276
311
|
*/
|
|
277
312
|
isAirPlayAvailable = async (): Promise<boolean> => {
|
|
@@ -336,7 +371,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
336
371
|
*
|
|
337
372
|
* @param adItem - Ad to be scheduled for playback.
|
|
338
373
|
*
|
|
339
|
-
* @
|
|
374
|
+
* @platform iOS, Android
|
|
340
375
|
*/
|
|
341
376
|
scheduleAd = (adItem: AdItem) => {
|
|
342
377
|
PlayerModule.scheduleAd(this.nativeId, adItem);
|
|
@@ -346,7 +381,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
346
381
|
* Skips the current ad.
|
|
347
382
|
* Has no effect if the current ad is not skippable or if no ad is being played back.
|
|
348
383
|
*
|
|
349
|
-
* @
|
|
384
|
+
* @platform iOS, Android
|
|
350
385
|
*/
|
|
351
386
|
skipAd = () => {
|
|
352
387
|
PlayerModule.skipAd(this.nativeId);
|
|
@@ -354,7 +389,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
354
389
|
|
|
355
390
|
/**
|
|
356
391
|
* @returns `true` while an ad is being played back or when main content playback has been paused for ad playback.
|
|
357
|
-
* @
|
|
392
|
+
* @platform iOS, Android
|
|
358
393
|
*/
|
|
359
394
|
isAd = async (): Promise<boolean> => {
|
|
360
395
|
return (await PlayerModule.isAd(this.nativeId)) ?? false;
|
|
@@ -404,7 +439,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
404
439
|
* Whether casting to a cast-compatible remote device is available. {@link CastAvailableEvent} signals when
|
|
405
440
|
* casting becomes available.
|
|
406
441
|
*
|
|
407
|
-
* @
|
|
442
|
+
* @platform iOS, Android
|
|
408
443
|
*/
|
|
409
444
|
isCastAvailable = async (): Promise<boolean> => {
|
|
410
445
|
return (await PlayerModule.isCastAvailable(this.nativeId)) ?? false;
|
|
@@ -413,7 +448,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
413
448
|
/**
|
|
414
449
|
* Whether video is currently being casted to a remote device and not played locally.
|
|
415
450
|
*
|
|
416
|
-
* @
|
|
451
|
+
* @platform iOS, Android
|
|
417
452
|
*/
|
|
418
453
|
isCasting = async (): Promise<boolean> => {
|
|
419
454
|
return (await PlayerModule.isCasting(this.nativeId)) ?? false;
|
|
@@ -423,7 +458,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
423
458
|
* Initiates casting the current video to a cast-compatible remote device. The user has to choose to which device it
|
|
424
459
|
* should be sent.
|
|
425
460
|
*
|
|
426
|
-
* @
|
|
461
|
+
* @platform iOS, Android
|
|
427
462
|
*/
|
|
428
463
|
castVideo = () => {
|
|
429
464
|
PlayerModule.castVideo(this.nativeId);
|
|
@@ -432,7 +467,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
432
467
|
/**
|
|
433
468
|
* Stops casting the current video. Has no effect if {@link Player.isCasting} is `false`.
|
|
434
469
|
*
|
|
435
|
-
* @
|
|
470
|
+
* @platform iOS, Android
|
|
436
471
|
*/
|
|
437
472
|
castStop = () => {
|
|
438
473
|
PlayerModule.castStop(this.nativeId);
|
|
@@ -456,7 +491,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
456
491
|
|
|
457
492
|
/**
|
|
458
493
|
* Sets the video quality.
|
|
459
|
-
* @
|
|
494
|
+
* @platform Android
|
|
460
495
|
*
|
|
461
496
|
* @param qualityId value obtained from {@link VideoQuality}'s `id` property, which can be obtained via `Player.getAvailableVideoQualities()` to select a specific quality. To use automatic quality selection, 'auto' can be passed here.
|
|
462
497
|
*/
|
|
@@ -502,7 +537,7 @@ export class Player extends NativeInstance<PlayerConfig> {
|
|
|
502
537
|
* Checks the possibility to play the media at specified playback speed.
|
|
503
538
|
* @param playbackSpeed - The playback speed to check.
|
|
504
539
|
* @returns `true` if it's possible to play the media at the specified playback speed, otherwise `false`. On Android it always returns `undefined`.
|
|
505
|
-
* @
|
|
540
|
+
* @platform iOS, tvOS
|
|
506
541
|
*/
|
|
507
542
|
canPlayAtPlaybackSpeed = async (
|
|
508
543
|
playbackSpeed: number
|
package/src/source.ts
CHANGED
|
@@ -136,7 +136,7 @@ export interface SourceConfig extends NativeInstanceConfig {
|
|
|
136
136
|
|
|
137
137
|
/**
|
|
138
138
|
* The remote control config for a source.
|
|
139
|
-
* @
|
|
139
|
+
* @platform iOS
|
|
140
140
|
*/
|
|
141
141
|
export interface SourceRemoteControlConfig {
|
|
142
142
|
/**
|
|
@@ -161,7 +161,7 @@ export class Source extends NativeInstance<SourceConfig> {
|
|
|
161
161
|
* The remote control config for this source.
|
|
162
162
|
* This is only supported on iOS.
|
|
163
163
|
*
|
|
164
|
-
* @
|
|
164
|
+
* @platform iOS
|
|
165
165
|
*/
|
|
166
166
|
remoteControl: SourceRemoteControlConfig | null = null;
|
|
167
167
|
/**
|
package/src/styleConfig.ts
CHANGED
|
@@ -26,7 +26,7 @@ export interface StyleConfig {
|
|
|
26
26
|
* },
|
|
27
27
|
* });
|
|
28
28
|
* ```
|
|
29
|
-
* @
|
|
29
|
+
* @platform iOS, tvOS
|
|
30
30
|
*/
|
|
31
31
|
userInterfaceType?: UserInterfaceType;
|
|
32
32
|
/**
|
|
@@ -39,7 +39,7 @@ export interface StyleConfig {
|
|
|
39
39
|
* },
|
|
40
40
|
* });
|
|
41
41
|
* ```
|
|
42
|
-
* @
|
|
42
|
+
* @platform iOS, Android
|
|
43
43
|
*/
|
|
44
44
|
playerUiCss?: string;
|
|
45
45
|
/**
|
|
@@ -52,7 +52,7 @@ export interface StyleConfig {
|
|
|
52
52
|
* },
|
|
53
53
|
* });
|
|
54
54
|
* ```
|
|
55
|
-
* @
|
|
55
|
+
* @platform iOS, Android
|
|
56
56
|
*/
|
|
57
57
|
supplementalPlayerUiCss?: string;
|
|
58
58
|
/**
|
|
@@ -65,7 +65,7 @@ export interface StyleConfig {
|
|
|
65
65
|
* },
|
|
66
66
|
* });
|
|
67
67
|
* ```
|
|
68
|
-
* @
|
|
68
|
+
* @platform iOS, Android
|
|
69
69
|
*/
|
|
70
70
|
playerUiJs?: string;
|
|
71
71
|
/**
|
|
@@ -111,7 +111,7 @@ export enum UserInterfaceType {
|
|
|
111
111
|
Bitmovin = 'Bitmovin',
|
|
112
112
|
/**
|
|
113
113
|
* Indicates that the system UI should be used.
|
|
114
|
-
* @
|
|
114
|
+
* @platform iOS, tvOS
|
|
115
115
|
*/
|
|
116
116
|
System = 'System',
|
|
117
117
|
/**
|
package/src/subtitleFormat.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Supported subtitle/caption file formats.
|
|
3
|
-
* @
|
|
3
|
+
* @platform Android, iOS, tvOS
|
|
4
4
|
*/
|
|
5
5
|
export enum SubtitleFormat {
|
|
6
6
|
/**
|
|
7
7
|
* Closed Captioning (CEA) subtitle format.
|
|
8
|
-
* @
|
|
8
|
+
* @platform Android, iOS, tvOS
|
|
9
9
|
*/
|
|
10
10
|
CEA = 'cea',
|
|
11
11
|
/**
|
|
12
12
|
* Timed Text Markup Language (TTML) subtitle format.
|
|
13
|
-
* @
|
|
13
|
+
* @platform Android, iOS, tvOS
|
|
14
14
|
*/
|
|
15
15
|
TTML = 'ttml',
|
|
16
16
|
/**
|
|
17
17
|
* Web Video Text Tracks Format (WebVTT) subtitle format.
|
|
18
|
-
* @
|
|
18
|
+
* @platform Android, iOS, tvOS
|
|
19
19
|
*/
|
|
20
20
|
VTT = 'vtt',
|
|
21
21
|
/**
|
|
22
22
|
* SubRip (SRT) subtitle format.
|
|
23
|
-
* @
|
|
23
|
+
* @platform Android, iOS, tvOS
|
|
24
24
|
*/
|
|
25
25
|
SRT = 'srt',
|
|
26
26
|
}
|
package/src/subtitleTrack.ts
CHANGED
package/src/tweaksConfig.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface TweaksConfig {
|
|
|
35
35
|
* Default value in iOS is `1.0`.
|
|
36
36
|
* Default value in Android is `0.2`.
|
|
37
37
|
*
|
|
38
|
-
* @
|
|
38
|
+
* @platform iOS, Android
|
|
39
39
|
*/
|
|
40
40
|
timeChangedInterval?: number;
|
|
41
41
|
/**
|
|
@@ -49,7 +49,7 @@ export interface TweaksConfig {
|
|
|
49
49
|
*
|
|
50
50
|
* Default is false.
|
|
51
51
|
*
|
|
52
|
-
* @
|
|
52
|
+
* @platform iOS
|
|
53
53
|
*/
|
|
54
54
|
isNativeHlsParsingEnabled?: boolean;
|
|
55
55
|
/**
|
|
@@ -62,7 +62,7 @@ export interface TweaksConfig {
|
|
|
62
62
|
*
|
|
63
63
|
* Default is true.
|
|
64
64
|
*
|
|
65
|
-
* @
|
|
65
|
+
* @platform iOS
|
|
66
66
|
*/
|
|
67
67
|
isCustomHlsLoadingEnabled?: boolean;
|
|
68
68
|
/**
|
|
@@ -76,7 +76,7 @@ export interface TweaksConfig {
|
|
|
76
76
|
*
|
|
77
77
|
* Default is 0.5.
|
|
78
78
|
*
|
|
79
|
-
* @
|
|
79
|
+
* @platform iOS
|
|
80
80
|
*/
|
|
81
81
|
seekToEndThreshold?: number;
|
|
82
82
|
/**
|
|
@@ -85,7 +85,7 @@ export interface TweaksConfig {
|
|
|
85
85
|
* - 'relaxed': Starts playback when enough media data is buffered and continuous playback without stalling can be ensured. If insufficient media data is buffered for playback to start, the player will act as if the buffer became empty during playback.
|
|
86
86
|
* - 'aggressive': When the buffer is not empty, this setting will cause the player to start playback of available media immediately. If insufficient media data is buffered for playback to start, the player will act as if the buffer became empty during playback.
|
|
87
87
|
*
|
|
88
|
-
* @
|
|
88
|
+
* @platform iOS
|
|
89
89
|
*/
|
|
90
90
|
playbackStartBehaviour?: 'relaxed' | 'aggressive';
|
|
91
91
|
/**
|
|
@@ -94,20 +94,20 @@ export interface TweaksConfig {
|
|
|
94
94
|
* - 'relaxed': The player will wait until the buffer is filled that it can, most likely, ensure continuous playback without another stalling right after playback continued.
|
|
95
95
|
* - 'aggressive': The player will try to unstall as soon as some media data became available and will start playback of this media immediately.
|
|
96
96
|
*
|
|
97
|
-
* @
|
|
97
|
+
* @platform iOS
|
|
98
98
|
*/
|
|
99
99
|
unstallingBehaviour?: 'relaxed' | 'aggressive';
|
|
100
100
|
/**
|
|
101
101
|
* Constantly aggregated and weighted bandwidth samples are summed up to this weight limit to calculate an bandwidth estimation. Remaining samples (i.e. that would lead to exceeding the limit) are dropped from memory as they are not relevant anymore.
|
|
102
102
|
* Default is 2000.
|
|
103
103
|
*
|
|
104
|
-
* @
|
|
104
|
+
* @platform Android
|
|
105
105
|
*/
|
|
106
106
|
bandwidthEstimateWeightLimit?: number;
|
|
107
107
|
/**
|
|
108
108
|
* Some devices have an incorrect implementation of MediaCodec.setOutputSurface. This leads to failure when the surface changes. To prevent failure, the codec will be released and re-instantiated in those scenarios.
|
|
109
109
|
*
|
|
110
|
-
* @
|
|
110
|
+
* @platform Android
|
|
111
111
|
*/
|
|
112
112
|
devicesThatRequireSurfaceWorkaround?: {
|
|
113
113
|
/**
|
|
@@ -132,14 +132,14 @@ export interface TweaksConfig {
|
|
|
132
132
|
* - "en_us" is normalized to "en-us"
|
|
133
133
|
* - "en-US-x-lvariant-POSIX" is normalized to "en-us-posix"
|
|
134
134
|
*
|
|
135
|
-
* @
|
|
135
|
+
* @platform Android
|
|
136
136
|
*/
|
|
137
137
|
languagePropertyNormalization?: boolean;
|
|
138
138
|
/**
|
|
139
139
|
* The interval in which dynamic DASH windows are updated locally. I.e. The rate by which the
|
|
140
140
|
* playback window is moved forward on the timeline.
|
|
141
141
|
*
|
|
142
|
-
* @
|
|
142
|
+
* @platform Android
|
|
143
143
|
*/
|
|
144
144
|
localDynamicDashWindowUpdateInterval?: number;
|
|
145
145
|
/**
|
|
@@ -147,7 +147,7 @@ export interface TweaksConfig {
|
|
|
147
147
|
* DRM sessions for clear content avoids the recreation of decoders when transitioning between clear
|
|
148
148
|
* and encrypted sections of content. Default is false.
|
|
149
149
|
*
|
|
150
|
-
* @
|
|
150
|
+
* @platform Android
|
|
151
151
|
*/
|
|
152
152
|
useDrmSessionForClearPeriods?: boolean;
|
|
153
153
|
/**
|
|
@@ -156,7 +156,7 @@ export interface TweaksConfig {
|
|
|
156
156
|
* periods in a DRM protected source. Using DRM sessions for clear content avoids the recreation of
|
|
157
157
|
* decoders when transitioning between clear and encrypted sections of content. Default is false.
|
|
158
158
|
*
|
|
159
|
-
* @
|
|
159
|
+
* @platform Android
|
|
160
160
|
*/
|
|
161
161
|
useDrmSessionForClearSources?: boolean;
|
|
162
162
|
/**
|
|
@@ -164,7 +164,7 @@ export interface TweaksConfig {
|
|
|
164
164
|
* matching extractor was found. If the fallback is applied, this will ignore potential incompatibilities
|
|
165
165
|
* with streams and thus can result in unstable or failing playback.
|
|
166
166
|
*
|
|
167
|
-
* @
|
|
167
|
+
* @platform Android
|
|
168
168
|
*/
|
|
169
169
|
useFiletypeExtractorFallbackForHls?: boolean;
|
|
170
170
|
/**
|
|
@@ -177,7 +177,7 @@ export interface TweaksConfig {
|
|
|
177
177
|
* Default is `true`.
|
|
178
178
|
*
|
|
179
179
|
* @deprecated To enable the Now Playing information use {@link MediaControlConfig.isEnabled}
|
|
180
|
-
* @
|
|
180
|
+
* @platform iOS
|
|
181
181
|
*/
|
|
182
182
|
updatesNowPlayingInfoCenter?: boolean;
|
|
183
183
|
|
|
@@ -192,7 +192,7 @@ export interface TweaksConfig {
|
|
|
192
192
|
*
|
|
193
193
|
* Default is `null` i.e not set
|
|
194
194
|
*
|
|
195
|
-
* @
|
|
195
|
+
* @platform Android
|
|
196
196
|
*/
|
|
197
197
|
forceReuseVideoCodecReasons?: ForceReuseVideoCodecReason[];
|
|
198
198
|
}
|