@vkontakte/videoplayer-core 2.0.103 → 2.0.104
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/es2015.cjs.js +73 -27
- package/es2015.esm.js +72 -26
- package/es2018.cjs.js +73 -27
- package/es2018.esm.js +72 -26
- package/esnext.cjs.js +75 -29
- package/esnext.esm.js +73 -27
- package/evergreen.esm.js +73 -27
- package/package.json +7 -7
- package/types/enums/AndroidPreferredFormat.d.ts +8 -0
- package/types/enums/WebmCodecStrategy.d.ts +7 -0
- package/types/env.d.ts +1 -0
- package/types/index.d.ts +12 -0
- package/types/player/Player.d.ts +173 -0
- package/{index.d.ts → types/player/types.d.ts} +64 -391
- package/types/player/utils/optimisticPosition.d.ts +12 -0
- package/types/player/utils/selectContainer.d.ts +3 -0
- package/types/providers/ChromecastProvider/ChromecastInitializer/index.d.ts +31 -0
- package/types/providers/ChromecastProvider/ChromecastInitializer/types.d.ts +23 -0
- package/types/providers/ChromecastProvider/index.d.ts +33 -0
- package/types/providers/DashLiveProvider/DashLiveProvider.d.ts +37 -0
- package/types/providers/DashLiveProvider/index.d.ts +2 -0
- package/types/providers/DashLiveProvider/types.d.ts +21 -0
- package/types/providers/DashLiveProvider/utils/FilesFetcher.d.ts +25 -0
- package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +143 -0
- package/types/providers/DashLiveProvider/utils/ThroughputEstimator.d.ts +33 -0
- package/types/providers/DashLiveProvider/utils/liveDashPlayerUtil.d.ts +42 -0
- package/types/providers/DashProvider/baseDashProvider.d.ts +52 -0
- package/types/providers/DashProvider/consts.d.ts +1 -0
- package/types/providers/DashProvider/dashCmafLiveProvider.d.ts +8 -0
- package/types/providers/DashProvider/dashProvider.d.ts +6 -0
- package/types/providers/DashProvider/index.d.ts +2 -0
- package/types/providers/DashProvider/lib/buffer.d.ts +103 -0
- package/types/providers/DashProvider/lib/fetcher.d.ts +51 -0
- package/types/providers/DashProvider/lib/parsers/mpd.d.ts +3 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/BoxModel.d.ts +20 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/BoxParser.d.ts +21 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/BoxTypeEnum.d.ts +26 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/box.d.ts +79 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/equi.d.ts +21 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/ftyp.d.ts +17 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/index.d.ts +22 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mdat.d.ts +15 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mdia.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mfhd.d.ts +11 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/minf.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/moof.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/moov.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/prhd.d.ts +16 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/proj.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/sidx.d.ts +48 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/st3d.d.ts +23 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/sv3d.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tfdt.d.ts +17 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tfhd.d.ts +22 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tkhd.d.ts +42 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/traf.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/trak.d.ts +7 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/trun.d.ts +31 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/unknown.d.ts +6 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/boxes/uuid.d.ts +6 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/fullBox.d.ts +15 -0
- package/types/providers/DashProvider/lib/parsers/mpeg/isobmff.d.ts +12 -0
- package/types/providers/DashProvider/lib/parsers/webm/ebml.d.ts +76 -0
- package/types/providers/DashProvider/lib/parsers/webm/webm.d.ts +3 -0
- package/types/providers/DashProvider/lib/player.d.ts +75 -0
- package/types/providers/DashProvider/lib/sourceBufferTaskQueue.d.ts +18 -0
- package/types/providers/DashProvider/lib/types.d.ts +156 -0
- package/types/providers/DashProvider/lib/utils.d.ts +14 -0
- package/types/providers/HlsJsProvider/index.d.ts +24 -0
- package/types/providers/HlsLiveProvider/index.d.ts +30 -0
- package/types/providers/HlsLiveProvider/seekBackTimeExtractor.d.ts +3 -0
- package/types/providers/HlsProvider/index.d.ts +21 -0
- package/types/providers/HlsProvider/manifestDataExtractor.d.ts +21 -0
- package/types/providers/MpegProvider/index.d.ts +20 -0
- package/types/providers/ProviderContainer/index.d.ts +42 -0
- package/types/providers/ProviderContainer/types.d.ts +20 -0
- package/types/providers/ProviderContainer/utils/formatsSupport.d.ts +20 -0
- package/types/providers/ProviderContainer/utils/playbackHangup.d.ts +12 -0
- package/types/providers/WebRTCLiveProvider/WebRTCLiveClient.d.ts +188 -0
- package/types/providers/WebRTCLiveProvider/WebRTCLiveProvider.d.ts +60 -0
- package/types/providers/WebRTCLiveProvider/interface/WebRTCLiveClientOptions.d.ts +9 -0
- package/types/providers/types.d.ts +83 -0
- package/types/providers/utils/HTMLVideoElement/DroppedFramesManager.d.ts +44 -0
- package/types/providers/utils/HTMLVideoElement/TextTrackManager.d.ts +30 -0
- package/types/providers/utils/HTMLVideoElement/clear.d.ts +1 -0
- package/types/providers/utils/HTMLVideoElement/destroy.d.ts +1 -0
- package/types/providers/utils/HTMLVideoElement/forcePlay.d.ts +7 -0
- package/types/providers/utils/HTMLVideoElement/observable.d.ts +25 -0
- package/types/providers/utils/HTMLVideoElement/pool.d.ts +2 -0
- package/types/providers/utils/HTMLVideoElement/surface.d.ts +2 -0
- package/types/providers/utils/LiveOffset/index.d.ts +14 -0
- package/types/providers/utils/LiveOffset/types.d.ts +10 -0
- package/types/providers/utils/addQuicParam.d.ts +2 -0
- package/types/providers/utils/extractConnectionHeaders.d.ts +6 -0
- package/types/providers/utils/generateLiveUrl.d.ts +9 -0
- package/types/providers/utils/okQualityStringToVideoQuality.d.ts +3 -0
- package/types/providers/utils/parseFps.d.ts +1 -0
- package/types/providers/utils/syncDesiredState.d.ts +12 -0
- package/types/providers/utils/syncPlaybackState.d.ts +4 -0
- package/types/utils/3d/Camera3D.d.ts +14 -0
- package/types/utils/3d/CameraRotationManager.d.ts +62 -0
- package/types/utils/3d/Scene3D.d.ts +132 -0
- package/types/utils/3d/types.d.ts +25 -0
- package/types/utils/StateMachine/StateMachine.d.ts +19 -0
- package/types/utils/StateMachine/types.d.ts +60 -0
- package/types/utils/StatefulIterator/index.d.ts +13 -0
- package/types/utils/ThroughputEstimator.d.ts +25 -0
- package/types/utils/addScript.d.ts +2 -0
- package/types/utils/autoSelectVideoTrack.d.ts +26 -0
- package/types/utils/buffer/getBufferedRangeForPosition.d.ts +3 -0
- package/types/utils/buffer/getForwardBufferDuration.d.ts +3 -0
- package/types/utils/buffer/getTotalBufferDuration.d.ts +3 -0
- package/types/utils/buffer/isPositionBuffered.d.ts +3 -0
- package/types/utils/changePlaybackRate.d.ts +2 -0
- package/types/utils/hostnameFromUrl.d.ts +2 -0
- package/types/utils/isInPiP.d.ts +1 -0
- package/types/utils/link.d.ts +2 -0
- package/types/utils/mediaSource.d.ts +8 -0
- package/types/utils/observeElementVisibility.d.ts +3 -0
- package/types/utils/playbackTelemetry.d.ts +12 -0
- package/types/utils/setStateWithSubscribe.d.ts +3 -0
- package/types/utils/smoothedValue/baseSmoothedValue.d.ts +18 -0
- package/types/utils/smoothedValue/emaAndMaSmoothedValue.d.ts +7 -0
- package/types/utils/smoothedValue/emaTopExtremumValue.d.ts +10 -0
- package/types/utils/smoothedValue/smoothedValueFactory.d.ts +6 -0
- package/types/utils/smoothedValue/twoEmaSmoothedValue.d.ts +8 -0
- package/types/utils/smoothedValue/types.d.ts +26 -0
- package/types/utils/smoothedValue/utils.d.ts +3 -0
- package/types/utils/tuningConfig.d.ts +164 -0
- package/types/utils/videoFormat.d.ts +2 -0
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare const VERSION: string;
|
|
5
|
-
|
|
6
|
-
type Pixel = number;
|
|
7
|
-
|
|
8
|
-
interface StartEnd<Unit extends number> {
|
|
1
|
+
import { IObservable, IValueObservable, IValueSubject, ILogEntry, Kbps, Milliseconds, Seconds, IRectangle, IError, QualityLimits, VideoQuality } from '@vkontakte/videoplayer-shared';
|
|
2
|
+
import { Pixel } from '../utils/3d/types';
|
|
3
|
+
export interface StartEnd<Unit extends number> {
|
|
9
4
|
start: Unit;
|
|
10
5
|
end: Unit;
|
|
11
6
|
}
|
|
12
|
-
interface IPlayer {
|
|
7
|
+
export interface IPlayer {
|
|
13
8
|
info: IPlayerInfo;
|
|
14
9
|
events: IPlayerEvents;
|
|
15
10
|
/**
|
|
@@ -80,7 +75,7 @@ interface IPlayer {
|
|
|
80
75
|
* События, начинающиеся с `will...` случаются в начале совершения действия,
|
|
81
76
|
* остальные - в момент окончания действия.
|
|
82
77
|
*/
|
|
83
|
-
interface IPlayerEvents {
|
|
78
|
+
export interface IPlayerEvents {
|
|
84
79
|
/**
|
|
85
80
|
* Плеер получил ссылку и начал полезную работу
|
|
86
81
|
*/
|
|
@@ -182,7 +177,7 @@ interface IPlayerEvents {
|
|
|
182
177
|
*/
|
|
183
178
|
log$: IObservable<ILogEntry>;
|
|
184
179
|
}
|
|
185
|
-
interface IPlayerInfo {
|
|
180
|
+
export interface IPlayerInfo {
|
|
186
181
|
/**
|
|
187
182
|
* Оптимистичный статут плеера. Так например, значение будет равно Playing сразу после вызова play().
|
|
188
183
|
* Фактическое состояние лучше отслеживать по событиям (например, playing$)
|
|
@@ -375,19 +370,26 @@ interface IPlayerInfo {
|
|
|
375
370
|
*/
|
|
376
371
|
currentAudioSegmentLength$: IValueSubject<number>;
|
|
377
372
|
}
|
|
378
|
-
declare enum PlaybackState {
|
|
373
|
+
export declare enum PlaybackState {
|
|
379
374
|
STOPPED = "stopped",
|
|
380
375
|
READY = "ready",
|
|
381
376
|
PLAYING = "playing",
|
|
382
377
|
PAUSED = "paused"
|
|
383
378
|
}
|
|
384
|
-
interface
|
|
379
|
+
export interface IVolumeState {
|
|
380
|
+
/**
|
|
381
|
+
* range: [0;1]
|
|
382
|
+
*/
|
|
383
|
+
volume: number;
|
|
384
|
+
muted: boolean;
|
|
385
|
+
}
|
|
386
|
+
export interface IConfig {
|
|
385
387
|
container: string | HTMLElement;
|
|
386
388
|
sources: ISources;
|
|
387
389
|
meta?: IMetadata;
|
|
388
390
|
failoverHosts?: string[];
|
|
389
391
|
}
|
|
390
|
-
interface ISources {
|
|
392
|
+
export interface ISources {
|
|
391
393
|
[VideoFormat.MPEG]?: IMpegSource;
|
|
392
394
|
[VideoFormat.DASH_SEP]?: IDashURLSource;
|
|
393
395
|
[VideoFormat.DASH_WEBM]?: IDashURLSource;
|
|
@@ -402,31 +404,31 @@ interface ISources {
|
|
|
402
404
|
[VideoFormat.HLS_LIVE_CMAF]?: IHLSLiveSource;
|
|
403
405
|
[VideoFormat.WEB_RTC_LIVE]?: URLSource;
|
|
404
406
|
}
|
|
405
|
-
interface IMetadata {
|
|
407
|
+
export interface IMetadata {
|
|
406
408
|
title?: string;
|
|
407
409
|
subtitle?: string;
|
|
408
410
|
videoId?: string;
|
|
409
411
|
}
|
|
410
|
-
type QualitySetSource = Partial<Record<VideoQuality, string>>;
|
|
411
|
-
type URLSource = {
|
|
412
|
+
export type QualitySetSource = Partial<Record<VideoQuality, string>>;
|
|
413
|
+
export type URLSource = {
|
|
412
414
|
type: 'url';
|
|
413
415
|
url: string;
|
|
414
416
|
};
|
|
415
|
-
type RawSource = {
|
|
417
|
+
export type RawSource = {
|
|
416
418
|
type: 'raw';
|
|
417
419
|
raw: string;
|
|
418
420
|
};
|
|
419
|
-
type URLSourceWithSeek = URLSource & Partial<{
|
|
421
|
+
export type URLSourceWithSeek = URLSource & Partial<{
|
|
420
422
|
maxSeekBackTime: Milliseconds;
|
|
421
423
|
}>;
|
|
422
|
-
type IMpegSource = QualitySetSource;
|
|
423
|
-
type IDashURLSource = URLSource & {
|
|
424
|
+
export type IMpegSource = QualitySetSource;
|
|
425
|
+
export type IDashURLSource = URLSource & {
|
|
424
426
|
compatibilityMode?: boolean;
|
|
425
427
|
};
|
|
426
|
-
type IDashSource = URLSource | RawSource;
|
|
427
|
-
type IHLSSource = URLSource;
|
|
428
|
-
type IHLSLiveSource = URLSourceWithSeek;
|
|
429
|
-
declare enum VideoFormat {
|
|
428
|
+
export type IDashSource = URLSource | RawSource;
|
|
429
|
+
export type IHLSSource = URLSource;
|
|
430
|
+
export type IHLSLiveSource = URLSourceWithSeek;
|
|
431
|
+
export declare enum VideoFormat {
|
|
430
432
|
MPEG = "MPEG",
|
|
431
433
|
/** @deprecated Используйте DASH_SEP */
|
|
432
434
|
DASH = "DASH_SEP",
|
|
@@ -452,7 +454,14 @@ declare enum VideoFormat {
|
|
|
452
454
|
HLS_LIVE_CMAF = "HLS_LIVE_CMAF",
|
|
453
455
|
WEB_RTC_LIVE = "WEB_RTC_LIVE"
|
|
454
456
|
}
|
|
455
|
-
interface
|
|
457
|
+
export interface IVideoTrack {
|
|
458
|
+
id: string;
|
|
459
|
+
quality: VideoQuality;
|
|
460
|
+
bitrate?: Kbps;
|
|
461
|
+
size?: IRectangle;
|
|
462
|
+
fps?: number;
|
|
463
|
+
}
|
|
464
|
+
export interface IAudioTrack {
|
|
456
465
|
id: string;
|
|
457
466
|
bitrate?: Kbps;
|
|
458
467
|
}
|
|
@@ -464,39 +473,57 @@ interface ITextTrackBase {
|
|
|
464
473
|
url?: string;
|
|
465
474
|
isAuto?: boolean;
|
|
466
475
|
}
|
|
467
|
-
interface IExternalTextTrack extends ITextTrackBase {
|
|
476
|
+
export interface IExternalTextTrack extends ITextTrackBase {
|
|
468
477
|
type: 'external';
|
|
469
478
|
url: string;
|
|
470
479
|
}
|
|
471
|
-
interface IInternalTextTrack extends ITextTrackBase {
|
|
480
|
+
export interface IInternalTextTrack extends ITextTrackBase {
|
|
472
481
|
type: 'internal';
|
|
473
482
|
url: string;
|
|
474
483
|
}
|
|
475
|
-
type ITextTrack = IExternalTextTrack | IInternalTextTrack;
|
|
476
|
-
interface ICueSettings {
|
|
484
|
+
export type ITextTrack = IExternalTextTrack | IInternalTextTrack;
|
|
485
|
+
export interface ICueSettings {
|
|
477
486
|
align?: 'left' | 'center' | 'right';
|
|
478
487
|
position?: number | 'auto';
|
|
479
488
|
size?: number;
|
|
480
489
|
line?: number | 'auto';
|
|
481
490
|
}
|
|
482
|
-
declare enum
|
|
491
|
+
export declare enum VideoDestination {
|
|
492
|
+
SCREEN = "SCREEN",
|
|
493
|
+
CHROMECAST = "CHROMECAST"
|
|
494
|
+
}
|
|
495
|
+
export declare enum ChromecastState {
|
|
483
496
|
NOT_AVAILABLE = "NOT_AVAILABLE",
|
|
484
497
|
AVAILABLE = "AVAILABLE",
|
|
485
498
|
CONNECTING = "CONNECTING",
|
|
486
499
|
CONNECTED = "CONNECTED"
|
|
487
500
|
}
|
|
488
|
-
interface ISeekRequest {
|
|
501
|
+
export interface ISeekRequest {
|
|
489
502
|
from: Seconds;
|
|
490
503
|
to: Seconds;
|
|
491
504
|
}
|
|
492
|
-
declare enum HttpConnectionType {
|
|
505
|
+
export declare enum HttpConnectionType {
|
|
493
506
|
HTTP1 = "http1",
|
|
494
507
|
HTTP2 = "http2",
|
|
495
508
|
QUIC = "quic"
|
|
496
509
|
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
510
|
+
export declare enum SeekOperationState {
|
|
511
|
+
None = "none",
|
|
512
|
+
Requested = "requested",
|
|
513
|
+
Applying = "applying"
|
|
514
|
+
}
|
|
515
|
+
type SeekStateNone = {
|
|
516
|
+
state: SeekOperationState.None;
|
|
517
|
+
};
|
|
518
|
+
type SeekStateNotNone = {
|
|
519
|
+
state: Exclude<SeekOperationState, SeekOperationState.None>;
|
|
520
|
+
position: Milliseconds;
|
|
521
|
+
forcePrecise: boolean;
|
|
522
|
+
};
|
|
523
|
+
export type SeekState = SeekStateNone | SeekStateNotNone;
|
|
524
|
+
export type FpsByQuality = Partial<Record<VideoQuality, number>>;
|
|
525
|
+
export type PlaybackRate = number;
|
|
526
|
+
export declare enum Surface {
|
|
500
527
|
NONE = "none",
|
|
501
528
|
INLINE = "inline",
|
|
502
529
|
FULLSCREEN = "fullscreen",
|
|
@@ -504,358 +531,4 @@ declare enum Surface {
|
|
|
504
531
|
PIP = "pip",
|
|
505
532
|
INVISIBLE = "invisible"
|
|
506
533
|
}
|
|
507
|
-
|
|
508
|
-
declare enum WebmCodecStrategy {
|
|
509
|
-
VP9 = "vp9",
|
|
510
|
-
AV1 = "av1",
|
|
511
|
-
NONE = "none",
|
|
512
|
-
SMOOTH = "smooth",
|
|
513
|
-
POWER_EFFICIENT = "power_efficient"
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
declare enum AndroidPreferredFormat {
|
|
517
|
-
DASH = "dash",
|
|
518
|
-
HLS = "hls",
|
|
519
|
-
MPEG = "mpeg",
|
|
520
|
-
DASH_ANY_MPEG = "dash_any_mpeg",
|
|
521
|
-
DASH_ANY_WEBM = "dash_any_webm",
|
|
522
|
-
DASH_SEP = "dash_sep"
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
type ITuningConfig = {
|
|
526
|
-
configName: string[];
|
|
527
|
-
throughputEstimator: {
|
|
528
|
-
type: 'TwoEma' | 'EmaAndMa';
|
|
529
|
-
emaAlphaSlow: number;
|
|
530
|
-
emaAlphaFast: number;
|
|
531
|
-
emaAlpha: number;
|
|
532
|
-
basisTrendChangeCount: number;
|
|
533
|
-
changeThreshold: number;
|
|
534
|
-
useBrowserEstimation: boolean;
|
|
535
|
-
rttPenaltyRequestSize: Byte;
|
|
536
|
-
streamMinSampleSize: Byte;
|
|
537
|
-
streamMinSampleTime: Milliseconds;
|
|
538
|
-
deviationDepth: number;
|
|
539
|
-
deviationFactor: number;
|
|
540
|
-
lowLatency: {
|
|
541
|
-
continuesByteSequenceInterval: Milliseconds;
|
|
542
|
-
};
|
|
543
|
-
};
|
|
544
|
-
autoTrackSelection: {
|
|
545
|
-
bitrateFactorAtEmptyBuffer: number;
|
|
546
|
-
bitrateFactorAtFullBuffer: number;
|
|
547
|
-
limitByContainer: boolean;
|
|
548
|
-
usePixelRatio: boolean;
|
|
549
|
-
containerSizeFactor: number;
|
|
550
|
-
lazyQualitySwitch: boolean;
|
|
551
|
-
minBufferToSwitchUp: number;
|
|
552
|
-
considerPlaybackRate: boolean;
|
|
553
|
-
trackCooldown: Milliseconds;
|
|
554
|
-
backgroundVideoQualityLimit: VideoQuality;
|
|
555
|
-
activeVideoAreaThreshold: number;
|
|
556
|
-
};
|
|
557
|
-
droppedFramesChecker: {
|
|
558
|
-
enabled: boolean;
|
|
559
|
-
percentLimit: number;
|
|
560
|
-
checkTime: number;
|
|
561
|
-
countLimit: number;
|
|
562
|
-
tickCountAfterQualityChange: number;
|
|
563
|
-
qualityUpWaitingTime: number;
|
|
564
|
-
minQualityBanLimit: ExactVideoQuality;
|
|
565
|
-
};
|
|
566
|
-
dash: {
|
|
567
|
-
/** @deprecated */
|
|
568
|
-
forwardBufferTarget: Milliseconds;
|
|
569
|
-
forwardBufferTargetAuto: Milliseconds;
|
|
570
|
-
forwardBufferTargetManual: Milliseconds;
|
|
571
|
-
forwardBufferTargetPreload: Milliseconds;
|
|
572
|
-
maxSegmentDurationLeftToSelectNextSegment: Milliseconds;
|
|
573
|
-
minSafeBufferThreshold: number;
|
|
574
|
-
bufferPruningSafeZone: Milliseconds;
|
|
575
|
-
segmentRequestSize: Byte;
|
|
576
|
-
representationSwitchForwardBufferGap: Milliseconds;
|
|
577
|
-
crashOnStallTimeout: Milliseconds;
|
|
578
|
-
enableSubSegmentBufferFeeding: boolean;
|
|
579
|
-
segmentTimelineTolerance: Milliseconds;
|
|
580
|
-
useFetchPriorityHints: boolean;
|
|
581
|
-
};
|
|
582
|
-
dashCmafLive: {
|
|
583
|
-
maxActiveLiveOffset: Milliseconds;
|
|
584
|
-
normalizedTargetMinBufferSize: Milliseconds;
|
|
585
|
-
normalizedLiveMinBufferSize: Milliseconds;
|
|
586
|
-
normalizedActualBufferOffset: Milliseconds;
|
|
587
|
-
offsetCalculationError: Milliseconds;
|
|
588
|
-
lowLatency: {
|
|
589
|
-
maxTargetOffset: Milliseconds;
|
|
590
|
-
maxTargetOffsetDeviation: Milliseconds;
|
|
591
|
-
playbackCatchupSpeedup: number;
|
|
592
|
-
isActive: boolean;
|
|
593
|
-
delayEstimator: {
|
|
594
|
-
emaAlpha: number;
|
|
595
|
-
changeThreshold: number;
|
|
596
|
-
deviationDepth: number;
|
|
597
|
-
deviationFactor: number;
|
|
598
|
-
extremumInterval: number;
|
|
599
|
-
};
|
|
600
|
-
};
|
|
601
|
-
};
|
|
602
|
-
downloadBackoff: {
|
|
603
|
-
bufferThreshold: Milliseconds;
|
|
604
|
-
start: Milliseconds;
|
|
605
|
-
factor: number;
|
|
606
|
-
max: Milliseconds;
|
|
607
|
-
random: number;
|
|
608
|
-
};
|
|
609
|
-
live: {
|
|
610
|
-
minBuffer: Milliseconds;
|
|
611
|
-
minBufferSegments: number;
|
|
612
|
-
lowLatencyMinBuffer: Milliseconds;
|
|
613
|
-
lowLatencyMinBufferSegments: number;
|
|
614
|
-
lowLatencyActiveLiveDelay: Milliseconds;
|
|
615
|
-
activeLiveDelay: Milliseconds;
|
|
616
|
-
isLiveCatchUpMode: boolean;
|
|
617
|
-
/**
|
|
618
|
-
* Максимальное общее время нахождения на паузе, при котором воспроизведение можно продолжить без перезагрузки потока.
|
|
619
|
-
* Время всех "пауз" суммируется до тех пор, пока не превысит этот лимит.
|
|
620
|
-
* В случае превышения лимита при продолжении воспроизведения поток будет перезапущен с пересчитанным `offset`.
|
|
621
|
-
*/
|
|
622
|
-
maxPausedTime: number;
|
|
623
|
-
};
|
|
624
|
-
enableWakeLock: boolean;
|
|
625
|
-
enableTelemetryAtStart: boolean;
|
|
626
|
-
forceFormat: VideoFormat | undefined;
|
|
627
|
-
formatsToAvoid: VideoFormat[];
|
|
628
|
-
disableChromecast: boolean;
|
|
629
|
-
chromecastReceiverId: string | undefined;
|
|
630
|
-
/** @deprecated */
|
|
631
|
-
useWebmBigRequest: boolean;
|
|
632
|
-
webmCodec: WebmCodecStrategy;
|
|
633
|
-
androidPreferredFormat: AndroidPreferredFormat;
|
|
634
|
-
preferCMAF: boolean;
|
|
635
|
-
preferWebRTC: boolean;
|
|
636
|
-
bigRequestMinInitSize: Byte;
|
|
637
|
-
bigRequestMinDataSize: Byte;
|
|
638
|
-
stripRangeHeader: boolean;
|
|
639
|
-
flushShortLoopedBuffers: boolean;
|
|
640
|
-
insufficientBufferRuleMargin: Milliseconds;
|
|
641
|
-
dashSeekInSegmentDurationThreshold: Milliseconds;
|
|
642
|
-
dashSeekInSegmentAlwaysSeekDelta: Milliseconds;
|
|
643
|
-
endGapTolerance: Milliseconds;
|
|
644
|
-
stallIgnoreThreshold: Milliseconds;
|
|
645
|
-
gapWatchdogInterval: Milliseconds;
|
|
646
|
-
requestQuick: boolean;
|
|
647
|
-
useHlsJs: boolean;
|
|
648
|
-
useDashAbortPartiallyFedSegment: boolean;
|
|
649
|
-
useNativeHLSTextTracks: boolean;
|
|
650
|
-
useManagedMediaSource: boolean;
|
|
651
|
-
isAudioDisabled: boolean;
|
|
652
|
-
autoplayOnlyInActiveTab: boolean;
|
|
653
|
-
dynamicImportTimeout: Milliseconds;
|
|
654
|
-
maxPlaybackTransitionInterval: Milliseconds;
|
|
655
|
-
providerErrorLimit: number;
|
|
656
|
-
manifestRetryInterval: number;
|
|
657
|
-
manifestRetryMaxInterval: number;
|
|
658
|
-
manifestRetryMaxCount: number;
|
|
659
|
-
webrtc: {
|
|
660
|
-
connectionRetryMaxNumber: number;
|
|
661
|
-
};
|
|
662
|
-
spherical: {
|
|
663
|
-
enabled: boolean;
|
|
664
|
-
fov: {
|
|
665
|
-
x: number;
|
|
666
|
-
y: number;
|
|
667
|
-
};
|
|
668
|
-
orientation?: {
|
|
669
|
-
x: number;
|
|
670
|
-
y: number;
|
|
671
|
-
z: number;
|
|
672
|
-
};
|
|
673
|
-
rotationSpeed: number;
|
|
674
|
-
maxYawAngle: number;
|
|
675
|
-
rotationSpeedCorrection: number;
|
|
676
|
-
degreeToPixelCorrection: number;
|
|
677
|
-
speedFadeTime: Milliseconds;
|
|
678
|
-
speedFadeThreshold: Milliseconds;
|
|
679
|
-
};
|
|
680
|
-
};
|
|
681
|
-
type IOptionalTuningConfig = RecursivePartial<ITuningConfig> & {
|
|
682
|
-
configName: ITuningConfig['configName'];
|
|
683
|
-
};
|
|
684
|
-
|
|
685
|
-
declare class Player implements IPlayer {
|
|
686
|
-
private subscription;
|
|
687
|
-
private domContainer;
|
|
688
|
-
private providerContainer?;
|
|
689
|
-
private chromecastInitializer;
|
|
690
|
-
private logger;
|
|
691
|
-
private abrLogger;
|
|
692
|
-
private config;
|
|
693
|
-
private tuning;
|
|
694
|
-
private throughputEstimator;
|
|
695
|
-
private isPlaybackStarted;
|
|
696
|
-
private initedAt;
|
|
697
|
-
private hasLiveOffsetByPaused;
|
|
698
|
-
private hasLiveOffsetByPausedTimer;
|
|
699
|
-
private desiredState;
|
|
700
|
-
info: {
|
|
701
|
-
playbackState$: ValueSubject<PlaybackState>;
|
|
702
|
-
position$: ValueSubject<number>;
|
|
703
|
-
duration$: ValueSubject<number>;
|
|
704
|
-
muted$: ValueSubject<boolean>;
|
|
705
|
-
volume$: ValueSubject<number>;
|
|
706
|
-
availableQualities$: ValueSubject<VideoQuality[]>;
|
|
707
|
-
availableQualitiesFps$: ValueSubject<Partial<Record<VideoQuality, number>>>;
|
|
708
|
-
availableAudioTracks$: ValueSubject<IAudioTrack[]>;
|
|
709
|
-
isAudioAvailable$: ValueSubject<boolean>;
|
|
710
|
-
currentQuality$: ValueSubject<VideoQuality | undefined>;
|
|
711
|
-
isAutoQualityEnabled$: ValueSubject<boolean>;
|
|
712
|
-
autoQualityLimitingAvailable$: ValueSubject<boolean>;
|
|
713
|
-
autoQualityLimits$: ValueSubject<QualityLimits>;
|
|
714
|
-
currentPlaybackRate$: ValueSubject<number>;
|
|
715
|
-
currentBuffer$: ValueSubject<StartEnd<number>>;
|
|
716
|
-
isBuffering$: ValueSubject<boolean>;
|
|
717
|
-
isStalled$: ValueSubject<boolean>;
|
|
718
|
-
isEnded$: ValueSubject<boolean>;
|
|
719
|
-
isLooped$: ValueSubject<boolean>;
|
|
720
|
-
isLive$: ValueSubject<boolean | undefined>;
|
|
721
|
-
canChangePlaybackSpeed$: ValueSubject<boolean | undefined>;
|
|
722
|
-
atLiveEdge$: ValueSubject<boolean | undefined>;
|
|
723
|
-
atLiveDurationEdge$: ValueSubject<boolean | undefined>;
|
|
724
|
-
liveTime$: ValueSubject<number | undefined>;
|
|
725
|
-
liveBufferTime$: ValueSubject<number | undefined>;
|
|
726
|
-
currentFormat$: ValueSubject<VideoFormat | undefined>;
|
|
727
|
-
availableTextTracks$: ValueSubject<ITextTrack[]>;
|
|
728
|
-
currentTextTrack$: ValueSubject<string | undefined>;
|
|
729
|
-
throughputEstimation$: ValueSubject<number | undefined>;
|
|
730
|
-
rttEstimation$: ValueSubject<number | undefined>;
|
|
731
|
-
videoBitrate$: ValueSubject<number | undefined>;
|
|
732
|
-
hostname$: ValueSubject<string | undefined>;
|
|
733
|
-
httpConnectionType$: ValueSubject<HttpConnectionType | undefined>;
|
|
734
|
-
httpConnectionReused$: ValueSubject<boolean | undefined>;
|
|
735
|
-
surface$: ValueSubject<Surface>;
|
|
736
|
-
chromecastState$: ValueSubject<ChromecastState>;
|
|
737
|
-
chromecastDeviceName$: ValueSubject<string | undefined>;
|
|
738
|
-
intrinsicVideoSize$: ValueSubject<{
|
|
739
|
-
width: number;
|
|
740
|
-
height: number;
|
|
741
|
-
} | undefined>;
|
|
742
|
-
availableSources$: ValueSubject<ISources | undefined>;
|
|
743
|
-
is3DVideo$: ValueSubject<boolean>;
|
|
744
|
-
currentVideoSegmentLength$: ValueSubject<number>;
|
|
745
|
-
currentAudioSegmentLength$: ValueSubject<number>;
|
|
746
|
-
};
|
|
747
|
-
events: {
|
|
748
|
-
inited$: Subject<void>;
|
|
749
|
-
ready$: Subject<void>;
|
|
750
|
-
started$: Subject<void>;
|
|
751
|
-
playing$: Subject<void>;
|
|
752
|
-
paused$: Subject<void>;
|
|
753
|
-
stopped$: Subject<void>;
|
|
754
|
-
willStart$: Subject<void>;
|
|
755
|
-
willResume$: Subject<void>;
|
|
756
|
-
willPause$: Subject<void>;
|
|
757
|
-
willStop$: Subject<void>;
|
|
758
|
-
willDestruct$: Subject<void>;
|
|
759
|
-
watchCoverageRecord$: Subject<StartEnd<number>>;
|
|
760
|
-
watchCoverageLive$: Subject<StartEnd<number>>;
|
|
761
|
-
managedError$: Subject<IError>;
|
|
762
|
-
fatalError$: Subject<IError>;
|
|
763
|
-
ended$: Subject<void>;
|
|
764
|
-
looped$: Subject<number>;
|
|
765
|
-
seeked$: Subject<void>;
|
|
766
|
-
willSeek$: Subject<ISeekRequest>;
|
|
767
|
-
firstBytes$: Subject<number>;
|
|
768
|
-
firstFrame$: Subject<number>;
|
|
769
|
-
canplay$: Subject<number>;
|
|
770
|
-
log$: Subject<ILogEntry>;
|
|
771
|
-
};
|
|
772
|
-
experimental: {
|
|
773
|
-
element$: ValueSubject<HTMLElement | undefined>;
|
|
774
|
-
tuningConfigName$: ValueSubject<string[]>;
|
|
775
|
-
enableDebugTelemetry$: ValueSubject<boolean>;
|
|
776
|
-
dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
|
|
777
|
-
};
|
|
778
|
-
constructor(tuning?: IOptionalTuningConfig);
|
|
779
|
-
initVideo(config: IConfig): IPlayer;
|
|
780
|
-
destroy(): void;
|
|
781
|
-
prepare(): IPlayer;
|
|
782
|
-
play(): IPlayer;
|
|
783
|
-
pause(): IPlayer;
|
|
784
|
-
stop(): IPlayer;
|
|
785
|
-
seekTime(time: Seconds, forcePrecise?: boolean): IPlayer;
|
|
786
|
-
/**
|
|
787
|
-
* NOTE: Сейчас вызов `seekPercent` до получения `duration` не сработает.
|
|
788
|
-
* @param percent: number [0, 1];
|
|
789
|
-
*/
|
|
790
|
-
seekPercent(percent: number): IPlayer;
|
|
791
|
-
setVolume(percent: number): IPlayer;
|
|
792
|
-
setMuted(isMuted: boolean): IPlayer;
|
|
793
|
-
setQuality(quality: VideoQuality): IPlayer;
|
|
794
|
-
setAutoQuality(enable: boolean): IPlayer;
|
|
795
|
-
setAutoQualityLimits(limits: QualityLimits): IPlayer;
|
|
796
|
-
setPlaybackRate(playbackRate: PlaybackRate): IPlayer;
|
|
797
|
-
setExternalTextTracks(tracks: Omit<IExternalTextTrack, 'type'>[]): IPlayer;
|
|
798
|
-
selectTextTrack(id: ITextTrack['id'] | undefined): IPlayer;
|
|
799
|
-
setTextTrackCueSettings(settings: ICueSettings): IPlayer;
|
|
800
|
-
setLooped(isLooped: boolean): IPlayer;
|
|
801
|
-
toggleChromecast(): void;
|
|
802
|
-
/**
|
|
803
|
-
* Starts 3D-camera constant rotation
|
|
804
|
-
* Base rotation speed is provided through the tuning config
|
|
805
|
-
*
|
|
806
|
-
* @param mx - camera X rotation speed multiplier
|
|
807
|
-
* @param my - camera Y rotation speed multiplier
|
|
808
|
-
*
|
|
809
|
-
* 1 - positive direction
|
|
810
|
-
* 0.5 - half speed in positive direction
|
|
811
|
-
* 0 - no rotation
|
|
812
|
-
* -1 negative direction
|
|
813
|
-
* -2 double speed in negative direction
|
|
814
|
-
*
|
|
815
|
-
* Limitations:
|
|
816
|
-
* When camera reaches angles 180 or -180 in vertical direction it stops.
|
|
817
|
-
* z-axis is frozen for now
|
|
818
|
-
*
|
|
819
|
-
* Set all zeroes to stop the camera rotation
|
|
820
|
-
* startCameraManualRotation(0, 0);
|
|
821
|
-
*/
|
|
822
|
-
startCameraManualRotation(mx: number, my: number): this;
|
|
823
|
-
/**
|
|
824
|
-
* Rotates 3d-camera to given angles relative to current position
|
|
825
|
-
*/
|
|
826
|
-
stopCameraManualRotation(immediate?: boolean): this;
|
|
827
|
-
/**
|
|
828
|
-
* Rotates 3d-camera to given angles relative to current position
|
|
829
|
-
* using mouse deltas and scene fov
|
|
830
|
-
*/
|
|
831
|
-
moveCameraFocusPX(dxpx: number, dypx: number): this;
|
|
832
|
-
/**
|
|
833
|
-
* "Holds" camera so that it can not perform movement without manual control
|
|
834
|
-
*/
|
|
835
|
-
holdCamera(): this;
|
|
836
|
-
/**
|
|
837
|
-
* "Releases" the camera so that it can move using its internal logic
|
|
838
|
-
*/
|
|
839
|
-
releaseCamera(): this;
|
|
840
|
-
getExactTime(): Seconds;
|
|
841
|
-
getAllLogs(): ILogEntry[];
|
|
842
|
-
private getScene3D;
|
|
843
|
-
private setIntrinsicVideoSize;
|
|
844
|
-
private initDesiredStateSubscriptions;
|
|
845
|
-
private initProviderContainerSubscription;
|
|
846
|
-
private initChromecastSubscription;
|
|
847
|
-
private initStartingVideoTrack;
|
|
848
|
-
private setStartingVideoTrack;
|
|
849
|
-
private initLogs;
|
|
850
|
-
private initDebugTelemetry;
|
|
851
|
-
private initWakeLock;
|
|
852
|
-
private setVideoTrackIdByQuality;
|
|
853
|
-
private getActiveLiveDelay;
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
/**
|
|
857
|
-
* @deprecated
|
|
858
|
-
*/
|
|
859
|
-
declare const SDK_VERSION: string;
|
|
860
|
-
|
|
861
|
-
export { ChromecastState, HttpConnectionType, IConfig, ICueSettings, IDashSource, IDashURLSource, IExternalTextTrack, IHLSLiveSource, IHLSSource, IMpegSource, IOptionalTuningConfig, IPlayer, IPlayerEvents, IPlayerInfo, ISeekRequest, ISources, ITextTrack, PlaybackRate, PlaybackState, Player, RawSource, SDK_VERSION, Surface, URLSource, URLSourceWithSeek, VERSION, VideoFormat };
|
|
534
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SeekState } from '../../player/types';
|
|
2
|
+
import { IObservable, IValueObservable, Seconds } from '@vkontakte/videoplayer-shared';
|
|
3
|
+
import { IStateMachine } from '../../utils/StateMachine/types';
|
|
4
|
+
interface IParams {
|
|
5
|
+
seekState: IStateMachine<SeekState>;
|
|
6
|
+
position$: IValueObservable<Seconds>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Реализует оптимистичное изменение позиции при перемотке
|
|
10
|
+
*/
|
|
11
|
+
declare const _default: ({ seekState, position$ }: IParams) => IObservable<Seconds>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ISubject, IValueSubject, ILogger, IError } from '@vkontakte/videoplayer-shared';
|
|
2
|
+
import { ChromecastState } from '../../../player/types';
|
|
3
|
+
import { IChromecastConnection, IChromecastInitializer } from './types';
|
|
4
|
+
interface IParams {
|
|
5
|
+
receiverApplicationId?: string;
|
|
6
|
+
isDisabled?: boolean;
|
|
7
|
+
dependencies: {
|
|
8
|
+
logger: ILogger;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare class ChromecastInitializer implements IChromecastInitializer {
|
|
12
|
+
connection$: IValueSubject<IChromecastConnection | undefined>;
|
|
13
|
+
castState$: IValueSubject<ChromecastState>;
|
|
14
|
+
errorEvent$: ISubject<IError>;
|
|
15
|
+
contentId?: string;
|
|
16
|
+
private realCastState$;
|
|
17
|
+
private subscription;
|
|
18
|
+
private log;
|
|
19
|
+
private params;
|
|
20
|
+
constructor(params: IParams);
|
|
21
|
+
connect(): void;
|
|
22
|
+
disconnect(): void;
|
|
23
|
+
stopMedia(): Promise<void>;
|
|
24
|
+
toggleConnection(): void;
|
|
25
|
+
setVolume(volume: number): void;
|
|
26
|
+
setMuted(muted: boolean): void;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
private initListeners;
|
|
29
|
+
private initializeCastApi;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="chromecast-caf-sender" />
|
|
2
|
+
/// <reference types="chrome/chrome-cast" />
|
|
3
|
+
import { IObservable, IValueObservable, IError } from '@vkontakte/videoplayer-shared';
|
|
4
|
+
import { ChromecastState } from '../../../player/types';
|
|
5
|
+
export interface IChromecastInitializer {
|
|
6
|
+
connect(): void;
|
|
7
|
+
disconnect(): void;
|
|
8
|
+
stopMedia(): Promise<void>;
|
|
9
|
+
toggleConnection(): void;
|
|
10
|
+
setVolume(volume: number): void;
|
|
11
|
+
setMuted(muted: boolean): void;
|
|
12
|
+
destroy(): void;
|
|
13
|
+
contentId?: string;
|
|
14
|
+
connection$: IValueObservable<IChromecastConnection | undefined>;
|
|
15
|
+
castState$: IValueObservable<ChromecastState>;
|
|
16
|
+
errorEvent$: IObservable<IError>;
|
|
17
|
+
}
|
|
18
|
+
export interface IChromecastConnection {
|
|
19
|
+
remotePlayer: cast.framework.RemotePlayer;
|
|
20
|
+
remotePlayerController: cast.framework.RemotePlayerController;
|
|
21
|
+
session: cast.framework.CastSession;
|
|
22
|
+
castDevice: chrome.cast.Receiver;
|
|
23
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { IMetadata, ISources, VideoFormat } from '../../player/types';
|
|
2
|
+
import { IChromecastConnection } from '../../providers/ChromecastProvider/ChromecastInitializer/types';
|
|
3
|
+
import { IProvider, IProviderParams } from '../types';
|
|
4
|
+
interface IParams extends IProviderParams<ISources> {
|
|
5
|
+
meta: IMetadata;
|
|
6
|
+
format: VideoFormat;
|
|
7
|
+
connection: IChromecastConnection;
|
|
8
|
+
}
|
|
9
|
+
export default class ChromecastProvider implements IProvider {
|
|
10
|
+
private subscription;
|
|
11
|
+
private loadMediaTimeoutSubscription;
|
|
12
|
+
private videoState;
|
|
13
|
+
private params;
|
|
14
|
+
private log;
|
|
15
|
+
constructor(params: IParams);
|
|
16
|
+
destroy(): void;
|
|
17
|
+
private subscribe;
|
|
18
|
+
private restoreSession;
|
|
19
|
+
private prepare;
|
|
20
|
+
private handleRemotePause;
|
|
21
|
+
private handleRemotePlay;
|
|
22
|
+
private handleRemoteReady;
|
|
23
|
+
private handleRemoteStop;
|
|
24
|
+
private handleRemoteVolumeChange;
|
|
25
|
+
private seek;
|
|
26
|
+
private stop;
|
|
27
|
+
private createMediaInfo;
|
|
28
|
+
private createLoadRequest;
|
|
29
|
+
private loadMedia;
|
|
30
|
+
private logRemoteEvent;
|
|
31
|
+
private syncPlayback;
|
|
32
|
+
}
|
|
33
|
+
export {};
|