@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.
Files changed (130) hide show
  1. package/es2015.cjs.js +73 -27
  2. package/es2015.esm.js +72 -26
  3. package/es2018.cjs.js +73 -27
  4. package/es2018.esm.js +72 -26
  5. package/esnext.cjs.js +75 -29
  6. package/esnext.esm.js +73 -27
  7. package/evergreen.esm.js +73 -27
  8. package/package.json +7 -7
  9. package/types/enums/AndroidPreferredFormat.d.ts +8 -0
  10. package/types/enums/WebmCodecStrategy.d.ts +7 -0
  11. package/types/env.d.ts +1 -0
  12. package/types/index.d.ts +12 -0
  13. package/types/player/Player.d.ts +173 -0
  14. package/{index.d.ts → types/player/types.d.ts} +64 -391
  15. package/types/player/utils/optimisticPosition.d.ts +12 -0
  16. package/types/player/utils/selectContainer.d.ts +3 -0
  17. package/types/providers/ChromecastProvider/ChromecastInitializer/index.d.ts +31 -0
  18. package/types/providers/ChromecastProvider/ChromecastInitializer/types.d.ts +23 -0
  19. package/types/providers/ChromecastProvider/index.d.ts +33 -0
  20. package/types/providers/DashLiveProvider/DashLiveProvider.d.ts +37 -0
  21. package/types/providers/DashLiveProvider/index.d.ts +2 -0
  22. package/types/providers/DashLiveProvider/types.d.ts +21 -0
  23. package/types/providers/DashLiveProvider/utils/FilesFetcher.d.ts +25 -0
  24. package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +143 -0
  25. package/types/providers/DashLiveProvider/utils/ThroughputEstimator.d.ts +33 -0
  26. package/types/providers/DashLiveProvider/utils/liveDashPlayerUtil.d.ts +42 -0
  27. package/types/providers/DashProvider/baseDashProvider.d.ts +52 -0
  28. package/types/providers/DashProvider/consts.d.ts +1 -0
  29. package/types/providers/DashProvider/dashCmafLiveProvider.d.ts +8 -0
  30. package/types/providers/DashProvider/dashProvider.d.ts +6 -0
  31. package/types/providers/DashProvider/index.d.ts +2 -0
  32. package/types/providers/DashProvider/lib/buffer.d.ts +103 -0
  33. package/types/providers/DashProvider/lib/fetcher.d.ts +51 -0
  34. package/types/providers/DashProvider/lib/parsers/mpd.d.ts +3 -0
  35. package/types/providers/DashProvider/lib/parsers/mpeg/BoxModel.d.ts +20 -0
  36. package/types/providers/DashProvider/lib/parsers/mpeg/BoxParser.d.ts +21 -0
  37. package/types/providers/DashProvider/lib/parsers/mpeg/BoxTypeEnum.d.ts +26 -0
  38. package/types/providers/DashProvider/lib/parsers/mpeg/box.d.ts +79 -0
  39. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/equi.d.ts +21 -0
  40. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/ftyp.d.ts +17 -0
  41. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/index.d.ts +22 -0
  42. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mdat.d.ts +15 -0
  43. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mdia.d.ts +7 -0
  44. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/mfhd.d.ts +11 -0
  45. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/minf.d.ts +7 -0
  46. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/moof.d.ts +7 -0
  47. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/moov.d.ts +7 -0
  48. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/prhd.d.ts +16 -0
  49. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/proj.d.ts +7 -0
  50. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/sidx.d.ts +48 -0
  51. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/st3d.d.ts +23 -0
  52. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/sv3d.d.ts +7 -0
  53. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tfdt.d.ts +17 -0
  54. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tfhd.d.ts +22 -0
  55. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/tkhd.d.ts +42 -0
  56. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/traf.d.ts +7 -0
  57. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/trak.d.ts +7 -0
  58. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/trun.d.ts +31 -0
  59. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/unknown.d.ts +6 -0
  60. package/types/providers/DashProvider/lib/parsers/mpeg/boxes/uuid.d.ts +6 -0
  61. package/types/providers/DashProvider/lib/parsers/mpeg/fullBox.d.ts +15 -0
  62. package/types/providers/DashProvider/lib/parsers/mpeg/isobmff.d.ts +12 -0
  63. package/types/providers/DashProvider/lib/parsers/webm/ebml.d.ts +76 -0
  64. package/types/providers/DashProvider/lib/parsers/webm/webm.d.ts +3 -0
  65. package/types/providers/DashProvider/lib/player.d.ts +75 -0
  66. package/types/providers/DashProvider/lib/sourceBufferTaskQueue.d.ts +18 -0
  67. package/types/providers/DashProvider/lib/types.d.ts +156 -0
  68. package/types/providers/DashProvider/lib/utils.d.ts +14 -0
  69. package/types/providers/HlsJsProvider/index.d.ts +24 -0
  70. package/types/providers/HlsLiveProvider/index.d.ts +30 -0
  71. package/types/providers/HlsLiveProvider/seekBackTimeExtractor.d.ts +3 -0
  72. package/types/providers/HlsProvider/index.d.ts +21 -0
  73. package/types/providers/HlsProvider/manifestDataExtractor.d.ts +21 -0
  74. package/types/providers/MpegProvider/index.d.ts +20 -0
  75. package/types/providers/ProviderContainer/index.d.ts +42 -0
  76. package/types/providers/ProviderContainer/types.d.ts +20 -0
  77. package/types/providers/ProviderContainer/utils/formatsSupport.d.ts +20 -0
  78. package/types/providers/ProviderContainer/utils/playbackHangup.d.ts +12 -0
  79. package/types/providers/WebRTCLiveProvider/WebRTCLiveClient.d.ts +188 -0
  80. package/types/providers/WebRTCLiveProvider/WebRTCLiveProvider.d.ts +60 -0
  81. package/types/providers/WebRTCLiveProvider/interface/WebRTCLiveClientOptions.d.ts +9 -0
  82. package/types/providers/types.d.ts +83 -0
  83. package/types/providers/utils/HTMLVideoElement/DroppedFramesManager.d.ts +44 -0
  84. package/types/providers/utils/HTMLVideoElement/TextTrackManager.d.ts +30 -0
  85. package/types/providers/utils/HTMLVideoElement/clear.d.ts +1 -0
  86. package/types/providers/utils/HTMLVideoElement/destroy.d.ts +1 -0
  87. package/types/providers/utils/HTMLVideoElement/forcePlay.d.ts +7 -0
  88. package/types/providers/utils/HTMLVideoElement/observable.d.ts +25 -0
  89. package/types/providers/utils/HTMLVideoElement/pool.d.ts +2 -0
  90. package/types/providers/utils/HTMLVideoElement/surface.d.ts +2 -0
  91. package/types/providers/utils/LiveOffset/index.d.ts +14 -0
  92. package/types/providers/utils/LiveOffset/types.d.ts +10 -0
  93. package/types/providers/utils/addQuicParam.d.ts +2 -0
  94. package/types/providers/utils/extractConnectionHeaders.d.ts +6 -0
  95. package/types/providers/utils/generateLiveUrl.d.ts +9 -0
  96. package/types/providers/utils/okQualityStringToVideoQuality.d.ts +3 -0
  97. package/types/providers/utils/parseFps.d.ts +1 -0
  98. package/types/providers/utils/syncDesiredState.d.ts +12 -0
  99. package/types/providers/utils/syncPlaybackState.d.ts +4 -0
  100. package/types/utils/3d/Camera3D.d.ts +14 -0
  101. package/types/utils/3d/CameraRotationManager.d.ts +62 -0
  102. package/types/utils/3d/Scene3D.d.ts +132 -0
  103. package/types/utils/3d/types.d.ts +25 -0
  104. package/types/utils/StateMachine/StateMachine.d.ts +19 -0
  105. package/types/utils/StateMachine/types.d.ts +60 -0
  106. package/types/utils/StatefulIterator/index.d.ts +13 -0
  107. package/types/utils/ThroughputEstimator.d.ts +25 -0
  108. package/types/utils/addScript.d.ts +2 -0
  109. package/types/utils/autoSelectVideoTrack.d.ts +26 -0
  110. package/types/utils/buffer/getBufferedRangeForPosition.d.ts +3 -0
  111. package/types/utils/buffer/getForwardBufferDuration.d.ts +3 -0
  112. package/types/utils/buffer/getTotalBufferDuration.d.ts +3 -0
  113. package/types/utils/buffer/isPositionBuffered.d.ts +3 -0
  114. package/types/utils/changePlaybackRate.d.ts +2 -0
  115. package/types/utils/hostnameFromUrl.d.ts +2 -0
  116. package/types/utils/isInPiP.d.ts +1 -0
  117. package/types/utils/link.d.ts +2 -0
  118. package/types/utils/mediaSource.d.ts +8 -0
  119. package/types/utils/observeElementVisibility.d.ts +3 -0
  120. package/types/utils/playbackTelemetry.d.ts +12 -0
  121. package/types/utils/setStateWithSubscribe.d.ts +3 -0
  122. package/types/utils/smoothedValue/baseSmoothedValue.d.ts +18 -0
  123. package/types/utils/smoothedValue/emaAndMaSmoothedValue.d.ts +7 -0
  124. package/types/utils/smoothedValue/emaTopExtremumValue.d.ts +10 -0
  125. package/types/utils/smoothedValue/smoothedValueFactory.d.ts +6 -0
  126. package/types/utils/smoothedValue/twoEmaSmoothedValue.d.ts +8 -0
  127. package/types/utils/smoothedValue/types.d.ts +26 -0
  128. package/types/utils/smoothedValue/utils.d.ts +3 -0
  129. package/types/utils/tuningConfig.d.ts +164 -0
  130. package/types/utils/videoFormat.d.ts +2 -0
@@ -1,15 +1,10 @@
1
- import { Seconds, VideoQuality, QualityLimits, ILogEntry, IValueObservable, IValueSubject, IObservable, Milliseconds, IError, Kbps, RecursivePartial, Byte, ExactVideoQuality, ValueSubject, Subject } from '@vkontakte/videoplayer-shared';
2
- export { ExactVideoQuality, IEmitter, IListener, ILogEntry, IObservable, IOperator, IRange, ISubscription, IUnsubscriber, IValue, IValueObservable, Observable, Subject, Subscription, ValueSubject, VideoQuality } from '@vkontakte/videoplayer-shared';
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 IConfig {
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 IAudioTrack {
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 ChromecastState {
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
- type FpsByQuality = Partial<Record<VideoQuality, number>>;
498
- type PlaybackRate = number;
499
- declare enum Surface {
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,3 @@
1
+ import { IConfig } from '../../player/types';
2
+ declare const _default: (config: IConfig) => HTMLElement;
3
+ 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 {};