@vkontakte/videoplayer-core 2.0.157-dev.b8834f3f.0 → 2.0.157-dev.baccd7d5.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.
Files changed (106) hide show
  1. package/es2015.esm.js +36 -37
  2. package/esnext.esm.js +36 -37
  3. package/evergreen.esm.js +7 -7
  4. package/package.json +7 -30
  5. package/types/index.d.ts +10 -10
  6. package/types/player/Player.d.ts +112 -16
  7. package/types/player/types.d.ts +103 -144
  8. package/types/player/utils/optimisticPosition.d.ts +2 -2
  9. package/types/player/utils/selectContainer.d.ts +1 -1
  10. package/types/providers/ChromecastPresentationApiProvider/ChromecastPresentationApiInitializer.d.ts +1 -1
  11. package/types/providers/ChromecastProvider/ChromecastInitializer/index.d.ts +1 -1
  12. package/types/providers/ChromecastProvider/ChromecastInitializer/types.d.ts +1 -1
  13. package/types/providers/ChromecastProvider/types.d.ts +1 -1
  14. package/types/providers/DashLiveProvider/DashLiveProvider.d.ts +2 -2
  15. package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +3 -3
  16. package/types/providers/DashProvider/baseDashProvider.d.ts +10 -10
  17. package/types/providers/DashProvider/lib/LiveTextManager.d.ts +1 -1
  18. package/types/providers/DashProvider/lib/buffer.d.ts +2 -2
  19. package/types/providers/DashProvider/lib/fetcher.d.ts +3 -3
  20. package/types/providers/DashProvider/lib/player.d.ts +6 -6
  21. package/types/providers/DashProvider/lib/types.d.ts +3 -3
  22. package/types/providers/DashProvider/lib/utils.d.ts +2 -2
  23. package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +12 -12
  24. package/types/providers/DashProviderVirtual/dashCmafLiveProvider.d.ts +1 -1
  25. package/types/providers/DashProviderVirtual/dashProvider.d.ts +1 -1
  26. package/types/providers/DashProviderVirtual/lib/LiveTextManager.d.ts +2 -2
  27. package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +3 -3
  28. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts +6 -6
  29. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/byteRangeVirtualBufferManager.d.ts +5 -5
  30. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/liveVirtualBuffer.d.ts +5 -5
  31. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/templateVirtualBufferManager.d.ts +5 -5
  32. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/virtualBufferFactory.d.ts +3 -3
  33. package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +3 -3
  34. package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +10 -10
  35. package/types/providers/DashProviderVirtual/lib/player/livePlayer.d.ts +8 -8
  36. package/types/providers/DashProviderVirtual/lib/player/player.d.ts +2 -2
  37. package/types/providers/DashProviderVirtual/lib/player/types.d.ts +3 -3
  38. package/types/providers/DashProviderVirtual/lib/types.d.ts +3 -3
  39. package/types/providers/DashProviderVirtual/lib/utils.d.ts +2 -2
  40. package/types/providers/HlsLiveProvider/LiveTextManager.d.ts +1 -1
  41. package/types/providers/HlsLiveProvider/index.d.ts +3 -3
  42. package/types/providers/HlsProvider/index.d.ts +2 -2
  43. package/types/providers/HlsProvider/manifestDataExtractor.d.ts +1 -1
  44. package/types/providers/MpegProvider/index.d.ts +1 -1
  45. package/types/providers/ProviderContainer/index.d.ts +3 -3
  46. package/types/providers/ProviderContainer/types.d.ts +1 -1
  47. package/types/providers/ProviderContainer/utils/formatsSupport.d.ts +2 -2
  48. package/types/providers/ProviderContainer/utils/playbackHangup.d.ts +3 -3
  49. package/types/providers/WebRTCLiveProvider/WebRTCLiveClient.d.ts +1 -1
  50. package/types/providers/WebRTCLiveProvider/WebRTCLiveProvider.d.ts +2 -2
  51. package/types/providers/types.d.ts +8 -8
  52. package/types/providers/utils/Abr/abrController.d.ts +3 -3
  53. package/types/providers/utils/Abr/abrManager.d.ts +3 -3
  54. package/types/providers/utils/Abr/controllers/stallsController.d.ts +2 -2
  55. package/types/providers/utils/Abr/rules/audio/audioThroughputRule.d.ts +4 -4
  56. package/types/providers/utils/Abr/rules/audio/minAudioForVideoRule.d.ts +4 -4
  57. package/types/providers/utils/Abr/rules/baseRule.d.ts +2 -2
  58. package/types/providers/utils/Abr/rules/limitAboveRule.d.ts +3 -3
  59. package/types/providers/utils/Abr/rules/limitBelowRule.d.ts +3 -3
  60. package/types/providers/utils/Abr/rules/video/bufferRule.d.ts +4 -4
  61. package/types/providers/utils/Abr/rules/video/fitsContainerRule.d.ts +4 -4
  62. package/types/providers/utils/Abr/rules/video/lowerLimitRule.d.ts +3 -3
  63. package/types/providers/utils/Abr/rules/video/stallsRule.d.ts +4 -4
  64. package/types/providers/utils/Abr/rules/video/throughputRule.d.ts +4 -4
  65. package/types/providers/utils/Abr/rules/video/upperLimitRule.d.ts +3 -3
  66. package/types/providers/utils/Abr/trackHistory.d.ts +4 -4
  67. package/types/providers/utils/Abr/types.d.ts +3 -3
  68. package/types/providers/utils/Abr/utils.d.ts +2 -2
  69. package/types/providers/utils/HTMLVideoElement/DroppedFramesManager.d.ts +3 -3
  70. package/types/providers/utils/HTMLVideoElement/ElementSizeManager.d.ts +1 -1
  71. package/types/providers/utils/HTMLVideoElement/TextTrackManager.d.ts +2 -2
  72. package/types/providers/utils/HTMLVideoElement/observable.d.ts +1 -1
  73. package/types/providers/utils/HTMLVideoElement/pool.d.ts +1 -1
  74. package/types/providers/utils/StallsManager.d.ts +2 -2
  75. package/types/providers/utils/extractConnectionHeaders.d.ts +1 -1
  76. package/types/providers/utils/parsers/types.d.ts +1 -1
  77. package/types/providers/utils/syncDesiredState.d.ts +2 -2
  78. package/types/providers/utils/syncPlaybackState.d.ts +2 -2
  79. package/types/providers/utils/videoStreamRepresentaionsFilter.d.ts +1 -1
  80. package/types/utils/3d/Camera3D.d.ts +1 -1
  81. package/types/utils/3d/CameraRotationManager.d.ts +2 -2
  82. package/types/utils/3d/Scene3D.d.ts +1 -1
  83. package/types/utils/ClientChecker/services/AudioChecker.d.ts +1 -1
  84. package/types/utils/ClientChecker/services/BrowserChecker.d.ts +2 -2
  85. package/types/utils/ClientChecker/services/DeviceChecker.d.ts +3 -3
  86. package/types/utils/ClientChecker/services/DisplayChecker.d.ts +1 -1
  87. package/types/utils/ClientChecker/services/VideoChecker.d.ts +2 -2
  88. package/types/utils/ThroughputEstimator.d.ts +1 -1
  89. package/types/utils/VolumeMultiplierManager/VolumeMultiplierManager.d.ts +2 -2
  90. package/types/utils/autoSelectTrack.d.ts +2 -2
  91. package/types/utils/qualityLimits.d.ts +2 -2
  92. package/types/utils/setStateWithSubscribe.d.ts +1 -1
  93. package/types/utils/smoothedValue/baseSmoothedValue.d.ts +1 -1
  94. package/types/utils/smoothedValue/emaAndMaSmoothedValue.d.ts +2 -2
  95. package/types/utils/smoothedValue/emaTopExtremumValue.d.ts +2 -2
  96. package/types/utils/smoothedValue/smoothedValueFactory.d.ts +2 -2
  97. package/types/utils/smoothedValue/twoEmaSmoothedValue.d.ts +2 -2
  98. package/types/utils/tuningConfig.d.ts +4 -8
  99. package/types/utils/videoFormat.d.ts +1 -1
  100. package/es2015.cjs +0 -221
  101. package/es2018.cjs +0 -221
  102. package/es2018.esm.js +0 -221
  103. package/es2024.cjs +0 -221
  104. package/es2024.esm.js +0 -221
  105. package/esnext.cjs +0 -221
  106. package/types/player/utils/defaults.d.ts +0 -2
package/package.json CHANGED
@@ -1,59 +1,36 @@
1
1
  {
2
2
  "name": "@vkontakte/videoplayer-core",
3
- "version": "2.0.157-dev.b8834f3f.0",
3
+ "version": "2.0.157-dev.baccd7d5.0",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer core library based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
7
7
  "license": "GPL-3.0",
8
- "main": "./esnext.cjs",
9
8
  "module": "./esnext.esm.js",
10
9
  "types": "./types/index.d.ts",
11
10
  "type": "module",
12
11
  "exports": {
13
12
  ".": {
14
13
  "types": "./types/index.d.ts",
15
- "import": "./esnext.esm.js",
16
- "require": "./esnext.cjs"
14
+ "import": "./esnext.esm.js"
17
15
  },
18
16
  "./evergreen": {
19
17
  "types": "./types/index.d.ts",
20
- "import": "./evergreen.esm.js",
21
- "require": "./evergreen.cjs"
18
+ "import": "./evergreen.esm.js"
22
19
  },
23
20
  "./esnext": {
24
21
  "types": "./types/index.d.ts",
25
- "import": "./esnext.esm.js",
26
- "require": "./esnext.cjs"
27
- },
28
- "./es2024": {
29
- "types": "./types/index.d.ts",
30
- "import": "./es2024.esm.js",
31
- "require": "./es2024.cjs"
32
- },
33
- "./es2018": {
34
- "types": "./types/index.d.ts",
35
- "import": "./es2018.esm.js",
36
- "require": "./es2018.cjs"
22
+ "import": "./esnext.esm.js"
37
23
  },
38
24
  "./es2015": {
39
25
  "types": "./types/index.d.ts",
40
- "import": "./es2015.esm.js",
41
- "require": "./es2015.cjs"
42
- },
43
- "./evergreen.esm.js": "./evergeen.esm.js",
44
- "./esnext.esm.js": "./esnext.esm.js",
45
- "./esnext.cjs": "./esnext.cjs",
46
- "./es2018.esm.js": "./es2018.esm.js",
47
- "./es2018.cjs": "./es2018.cjs",
48
- "./es2015.esm.js": "./es2015.esm.js",
49
- "./es2015.cjs": "./es2015.cjs"
26
+ "import": "./es2015.esm.js"
27
+ }
50
28
  },
51
29
  "files": [
52
- "*.cjs",
53
30
  "*.esm.js",
54
31
  "**/*.d.ts"
55
32
  ],
56
33
  "dependencies": {
57
- "@vkontakte/videoplayer-shared": "1.0.86-dev.b8834f3f.0"
34
+ "@vkontakte/videoplayer-shared": "1.0.86-dev.baccd7d5.0"
58
35
  }
59
36
  }
package/types/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { VERSION } from "./env";
2
- import type { IMpegSource, IDashSource, IHLSSource, IDashURLSource, IHLSLiveSource, ISeekRequest, URLSource, RawSource, URLSourceWithSeek } from "./player/types";
3
- import { VideoFormat, Surface, PredefinedQualityLimits, VideoCodec } from "./player/types";
4
- import Player from "./player/Player";
5
- import type { IPlayer, IPlayerInfo, IPlayerEvents, IConfig, ISources, ICueSettings, IExternalTextTrack, ITextTrack, PlaybackRate, IVideoStream, IAudioStream } from "./player/types";
6
- import { PlaybackState, ChromecastState, HttpConnectionType } from "./player/types";
7
- import type { IOptionalTuningConfig } from "./utils/tuningConfig";
8
- export { clientChecker, isMobile } from "./utils/ClientChecker";
9
- export { areValidLiveRecordSources } from "./utils/videoFormat";
10
- export { WebmCodecStrategy } from "./enums/WebmCodecStrategy";
1
+ import { VERSION } from "#/env";
2
+ import type { IMpegSource, IDashSource, IHLSSource, IDashURLSource, IHLSLiveSource, ISeekRequest, URLSource, RawSource, URLSourceWithSeek } from "#/player/types";
3
+ import { VideoFormat, Surface, PredefinedQualityLimits, VideoCodec } from "#/player/types";
4
+ import Player from "#/player/Player";
5
+ import type { IPlayer, IPlayerInfo, IPlayerEvents, IConfig, ISources, ICueSettings, IExternalTextTrack, ITextTrack, PlaybackRate, IVideoStream, IAudioStream } from "#/player/types";
6
+ import { PlaybackState, ChromecastState, HttpConnectionType } from "#/player/types";
7
+ import type { IOptionalTuningConfig } from "#/utils/tuningConfig";
8
+ export { clientChecker, isMobile } from "#/utils/ClientChecker";
9
+ export { areValidLiveRecordSources } from "#/utils/videoFormat";
10
+ export { WebmCodecStrategy } from "#/enums/WebmCodecStrategy";
11
11
  import type { ISubscription, IUnsubscriber, IEmitter, IObservable, IValueObservable, IValue, IOperator, IListener, ILogEntry, IRange, ExactVideoQuality } from "@vkontakte/videoplayer-shared";
12
12
  import { Subscription, Observable, Subject, ValueSubject, VideoQuality } from "@vkontakte/videoplayer-shared";
13
13
  /**
@@ -1,10 +1,116 @@
1
- import type { IOptionalTuningConfig } from "../utils/tuningConfig";
2
- import type { ILogEntry, Seconds, QualityLimits, VideoQuality, ITracer } from "@vkontakte/videoplayer-shared";
3
- import { type IAudioStream, type IConfig, type ICueSettings, type IExternalTextTrack, type IPlayer, type ITextTrack, type IVideoStream, type PlaybackRate, PredefinedQualityLimits, type PlayerInfoImpl, type PlayerEventsImpl, type PlayerExperimentalImpl } from "./types";
4
- import type { IPlayerOptions } from "../utils/playerOptions";
1
+ import { dump } from "#/utils/playbackTelemetry";
2
+ import type { IOptionalTuningConfig } from "#/utils/tuningConfig";
3
+ import type { IError, ILogEntry, Kbps, Milliseconds, Seconds, QualityLimits, VideoQuality, ITracer } from "@vkontakte/videoplayer-shared";
4
+ import { Subject, ValueSubject } from "@vkontakte/videoplayer-shared";
5
+ import { ChromecastState, type FpsByQuality, type HttpConnectionType, type HttpConnectionMetrics, type HttpDownloadMetrics, type IAudioStream, type IAudioTrack, type IConfig, type ICueSettings, type IExternalTextTrack, type IPlayer, type ISeekRequest, type ISources, type ITextTrack, type IVideoStream, type IVideoTrack, type PlaybackRate, PlaybackState, PredefinedQualityLimits, type StartEnd, Surface, type VideoFormat } from "./types";
6
+ import type { IPlayerOptions } from "#/utils/playerOptions";
7
+ /** Конкретный тип для Player.info с ValueSubject вместо IValueObservable */
8
+ interface PlayerInfoImpl {
9
+ playbackState$: ValueSubject<PlaybackState | undefined>;
10
+ position$: ValueSubject<number>;
11
+ duration$: ValueSubject<number>;
12
+ muted$: ValueSubject<boolean>;
13
+ volume$: ValueSubject<number>;
14
+ availableVideoStreams$: ValueSubject<IVideoStream[]>;
15
+ currentVideoStream$: ValueSubject<IVideoStream | undefined>;
16
+ availableVideoTracks$: ValueSubject<IVideoTrack[]>;
17
+ availableQualities$: ValueSubject<VideoQuality[]>;
18
+ availableQualitiesFps$: ValueSubject<FpsByQuality>;
19
+ currentQuality$: ValueSubject<VideoQuality | undefined>;
20
+ isAutoQualityEnabled$: ValueSubject<boolean>;
21
+ autoQualityLimitingAvailable$: ValueSubject<boolean>;
22
+ autoQualityLimits$: ValueSubject<QualityLimits>;
23
+ predefinedQualityLimitType$: ValueSubject<PredefinedQualityLimits>;
24
+ availableAudioStreams$: ValueSubject<IAudioStream[]>;
25
+ currentAudioStream$: ValueSubject<IVideoStream | undefined>;
26
+ availableAudioTracks$: ValueSubject<IAudioTrack[]>;
27
+ isAudioAvailable$: ValueSubject<boolean>;
28
+ currentPlaybackRate$: ValueSubject<PlaybackRate>;
29
+ currentBuffer$: ValueSubject<StartEnd<Seconds>>;
30
+ currentNativeBuffer$: ValueSubject<StartEnd<Seconds>>;
31
+ isBuffering$: ValueSubject<boolean>;
32
+ isStalled$: ValueSubject<boolean>;
33
+ isEnded$: ValueSubject<boolean>;
34
+ isLooped$: ValueSubject<boolean>;
35
+ isLive$: ValueSubject<boolean | undefined>;
36
+ isLiveEnded$: ValueSubject<boolean | null>;
37
+ canPlayLiveTailBuffer$: ValueSubject<boolean>;
38
+ canChangePlaybackSpeed$: ValueSubject<boolean | undefined>;
39
+ atLiveEdge$: ValueSubject<boolean | undefined>;
40
+ atLiveDurationEdge$: ValueSubject<boolean | undefined>;
41
+ liveTime$: ValueSubject<Milliseconds | undefined>;
42
+ liveBufferTime$: ValueSubject<Milliseconds | undefined>;
43
+ liveLatency$: ValueSubject<Milliseconds | undefined>;
44
+ currentFormat$: ValueSubject<VideoFormat | undefined>;
45
+ availableTextTracks$: ValueSubject<ITextTrack[]>;
46
+ currentTextTrack$: ValueSubject<ITextTrack["id"] | undefined>;
47
+ throughputEstimation$: ValueSubject<Kbps | undefined>;
48
+ rttEstimation$: ValueSubject<Milliseconds | undefined>;
49
+ videoBitrate$: ValueSubject<Kbps | undefined>;
50
+ hostname$: ValueSubject<string | undefined>;
51
+ httpConnectionType$: ValueSubject<HttpConnectionType | undefined>;
52
+ httpConnectionReused$: ValueSubject<boolean | undefined>;
53
+ httpConnectionMetrics$: ValueSubject<HttpConnectionMetrics | undefined>;
54
+ httpDownloadMetrics$: ValueSubject<HttpDownloadMetrics | undefined>;
55
+ surface$: ValueSubject<Surface>;
56
+ chromecastState$: ValueSubject<ChromecastState>;
57
+ chromecastDeviceName$: ValueSubject<string | undefined>;
58
+ intrinsicVideoSize$: ValueSubject<{
59
+ width: number;
60
+ height: number;
61
+ } | undefined>;
62
+ availableSources$: ValueSubject<ISources | undefined>;
63
+ is3DVideo$: ValueSubject<boolean>;
64
+ currentVideoSegmentLength$: ValueSubject<number>;
65
+ currentAudioSegmentLength$: ValueSubject<number>;
66
+ }
67
+ /** Конкретный тип для Player.events с Subject вместо IObservable */
68
+ interface PlayerEventsImpl {
69
+ inited$: Subject<void>;
70
+ ready$: Subject<void>;
71
+ started$: Subject<void>;
72
+ playing$: Subject<void>;
73
+ paused$: Subject<void>;
74
+ stopped$: Subject<void>;
75
+ willReady$: Subject<void>;
76
+ willStart$: Subject<void>;
77
+ willResume$: Subject<void>;
78
+ willPause$: Subject<void>;
79
+ willStop$: Subject<void>;
80
+ willDestruct$: Subject<void>;
81
+ watchCoverageRecord$: Subject<StartEnd<Seconds>>;
82
+ watchCoverageLive$: Subject<StartEnd<Milliseconds>>;
83
+ managedError$: Subject<IError>;
84
+ fatalError$: Subject<IError>;
85
+ fetcherRecoverableError$: Subject<IError>;
86
+ ended$: Subject<void>;
87
+ looped$: Subject<Seconds>;
88
+ seeked$: Subject<void>;
89
+ willSeek$: Subject<ISeekRequest>;
90
+ autoplaySoundProhibited$: Subject<void>;
91
+ manifestRequested$: Subject<void>;
92
+ firstBytesManifest$: Subject<void>;
93
+ manifestReceived$: Subject<void>;
94
+ firstBytesRequested$: Subject<void>;
95
+ firstBytesReceived$: Subject<void>;
96
+ firstBytes$: Subject<Milliseconds>;
97
+ loadedMetadata$: Subject<void>;
98
+ firstFrame$: Subject<Milliseconds>;
99
+ canplay$: Subject<Milliseconds>;
100
+ log$: Subject<ILogEntry>;
101
+ fetcherError$: Subject<IError>;
102
+ severeStallOccured$: Subject<boolean>;
103
+ }
104
+ /** Конкретный тип для Player.experimental */
105
+ interface PlayerExperimentalImpl {
106
+ element$: ValueSubject<HTMLVideoElement | undefined>;
107
+ enableDebugTelemetry$: ValueSubject<boolean>;
108
+ dumpTelemetry: typeof dump;
109
+ getCurrentTime$: ValueSubject<(() => number) | null>;
110
+ skipVideoElVolumeSync$: ValueSubject<boolean>;
111
+ }
5
112
  export default class Player implements IPlayer {
6
- private readonly subscription;
7
- private readonly persistentSubscription;
113
+ private subscription;
8
114
  private domContainer;
9
115
  private providerContainer?;
10
116
  private chromecastInitializer;
@@ -30,16 +136,6 @@ export default class Player implements IPlayer {
30
136
  private devNullLog;
31
137
  private collectDecodingInfoDestroyCb;
32
138
  constructor(tuning?: IOptionalTuningConfig, tracer?: ITracer, playerOptions?: IPlayerOptions);
33
- private readonly doInit;
34
- /**
35
- * Очищает необходимые поля при переключении на другое видео
36
- */
37
- private resetDesiredState;
38
- /**
39
- * Возвращает плеер в начальное состояние
40
- * Позвонялет переиспользовать для другого видео
41
- */
42
- private reset;
43
139
  initVideo(config: IConfig): IPlayer;
44
140
  destroy(): void;
45
141
  private waitInit;
@@ -1,6 +1,5 @@
1
- import type { IObservable, IValueObservable, IValueSubject, ILogEntry, Kbps, Milliseconds, Seconds, IRectangle, IError, QualityLimits, VideoQuality, Subject, ValueSubject } from "@vkontakte/videoplayer-shared";
2
- import type { Pixel } from "../utils/3d/types";
3
- import type { dump } from "../utils/playbackTelemetry";
1
+ import type { IObservable, IValueObservable, IValueSubject, ILogEntry, Kbps, Milliseconds, Seconds, IRectangle, IError, QualityLimits, VideoQuality } from "@vkontakte/videoplayer-shared";
2
+ import type { Pixel } from "#/utils/3d/types";
4
3
  export interface StartEnd<Unit extends number> {
5
4
  start: Unit;
6
5
  end: Unit;
@@ -8,7 +7,6 @@ export interface StartEnd<Unit extends number> {
8
7
  export interface IPlayer {
9
8
  info: IPlayerInfo;
10
9
  events: IPlayerEvents;
11
- experimental: IPlayerExperimental;
12
10
  /**
13
11
  * Инициализация видео
14
12
  */
@@ -76,6 +74,17 @@ export interface IPlayer {
76
74
  * Возвращает все логи с момента инициализации плеера
77
75
  */
78
76
  getAllLogs(): ILogEntry[];
77
+ experimental: {
78
+ /**
79
+ * Элемент, который сейчас вставлен в container.
80
+ * Может быть видеоэлементом, iframe и вообще чем угодно в общем случае.
81
+ */
82
+ element$: IValueObservable<HTMLVideoElement | undefined>;
83
+ enableDebugTelemetry$: IValueSubject<boolean>;
84
+ dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
85
+ /** функция вычисления текущей позиции проигрывания из под провадера (если расчет нестандартный) */
86
+ getCurrentTime$: IValueSubject<(() => number) | null>;
87
+ };
79
88
  }
80
89
  /**
81
90
  * События плеера.
@@ -229,283 +238,233 @@ export interface IPlayerEvents {
229
238
  */
230
239
  severeStallOccured$: IObservable<boolean>;
231
240
  }
232
- export interface PlayerInfoValues {
241
+ export interface IPlayerInfo {
233
242
  /**
234
243
  * Оптимистичный статут плеера. Так например, значение будет равно Playing сразу после вызова play().
235
244
  * Фактическое состояние лучше отслеживать по событиям (например, playing$)
236
245
  */
237
- playbackState$: PlaybackState | undefined;
246
+ playbackState$: IValueObservable<PlaybackState | undefined>;
238
247
  /**
239
248
  * Текущая позиция.
240
249
  *
241
250
  * default value: `0`
242
251
  */
243
- position$: Seconds;
252
+ position$: IValueObservable<Seconds>;
244
253
  /**
245
254
  * Длительность видео.
246
255
  *
247
256
  * default value: `Infinity`
248
257
  */
249
- duration$: Seconds;
250
- muted$: boolean;
251
- volume$: number;
252
- availableVideoStreams$: IVideoStream[];
253
- currentVideoStream$: IVideoStream | undefined;
254
- availableVideoTracks$: IVideoTrack[];
258
+ duration$: IValueObservable<Seconds>;
259
+ /**
260
+ * default value: `false`
261
+ */
262
+ muted$: IValueObservable<boolean>;
263
+ /**
264
+ * default value: `1`
265
+ */
266
+ volume$: IValueObservable<number>;
267
+ currentVideoStream$: IValueObservable<IVideoStream | undefined>;
268
+ availableVideoStreams$: IValueObservable<IVideoStream[]>;
269
+ availableVideoTracks$: IValueObservable<IVideoTrack[]>;
270
+ currentAudioStream$: IValueObservable<IAudioStream | undefined>;
271
+ availableAudioStreams$: IValueObservable<IAudioStream[]>;
255
272
  /**
256
273
  * Список доступных качеств. Отсортированы по возрастанию.
257
274
  *
258
275
  * default value: `[]`
259
276
  */
260
- availableQualities$: VideoQuality[];
277
+ availableQualities$: IValueObservable<VideoQuality[]>;
261
278
  /**
262
279
  * Список фпс для доступных качеств
263
280
  *
264
281
  * default value: `{}`
265
282
  */
266
- availableQualitiesFps$: FpsByQuality;
283
+ availableQualitiesFps$: IValueObservable<FpsByQuality>;
284
+ /**
285
+ * Список доступных аудиодорожек
286
+ *
287
+ * default value: `[]`
288
+ */
289
+ availableAudioTracks$: IValueSubject<IAudioTrack[]>;
290
+ /**
291
+ * Доступна ли аудио дорожка
292
+ *
293
+ * default value: true
294
+ */
295
+ isAudioAvailable$: IValueSubject<boolean>;
267
296
  /**
268
- * Реальное качество; в котором сейчас воспроизводится видео.
297
+ * Реальное качество, в котором сейчас воспроизводится видео.
269
298
  *
270
299
  * default value: `undefined`
271
300
  */
272
- currentQuality$: VideoQuality | undefined;
301
+ currentQuality$: IValueObservable<VideoQuality | undefined>;
273
302
  /**
274
303
  * Будет ли плеер адаптивно переключать качество в зависимости от канала пользователя
275
304
  */
276
- isAutoQualityEnabled$: boolean;
305
+ isAutoQualityEnabled$: IValueObservable<boolean>;
277
306
  /**
278
307
  * Доступна ли установка лимитов авто качества
279
308
  */
280
- autoQualityLimitingAvailable$: boolean;
309
+ autoQualityLimitingAvailable$: IValueObservable<boolean>;
281
310
  /**
282
311
  * Текущие лимиты авто-качества
283
312
  */
284
- autoQualityLimits$: QualityLimits;
313
+ autoQualityLimits$: IValueObservable<QualityLimits>;
285
314
  /**
286
315
  * Отображает тип лимитов по качеству.
287
316
  */
288
- predefinedQualityLimitType$: PredefinedQualityLimits;
289
- availableAudioStreams$: IAudioStream[];
290
- currentAudioStream$: IVideoStream | undefined;
291
- /**
292
- * Список доступных аудиодорожек
293
- *
294
- * default value: `[]`
295
- */
296
- availableAudioTracks$: IAudioTrack[];
297
- /**
298
- * Доступна ли аудио дорожка
299
- *
300
- * default value: true
301
- */
302
- isAudioAvailable$: boolean;
317
+ predefinedQualityLimitType$: IValueObservable<PredefinedQualityLimits>;
303
318
  /**
304
319
  * Текущая скорость воспроизведения
305
320
  */
306
- currentPlaybackRate$: PlaybackRate;
321
+ currentPlaybackRate$: IValueObservable<PlaybackRate>;
307
322
  /**
308
- * Текущий буффер плеера (тот; который содержит текущую позицию воспроизведения)
323
+ * Текущий буффер плеера (тот, который содержит текущую позицию воспроизведения)
309
324
  *
310
325
  * default value: `undefined`
311
326
  */
312
- currentBuffer$: StartEnd<Seconds>;
327
+ currentBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
313
328
  /**
314
- * Текущий браузерный буффер (тот; который содержит текущую позицию воспроизведения)
329
+ * Текущий браузерный буффер (тот, который содержит текущую позицию воспроизведения)
315
330
  *
316
331
  * default value: `undefined`
317
332
  */
318
- currentNativeBuffer$: StartEnd<Seconds>;
333
+ currentNativeBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
319
334
  /**
320
335
  * Статус буферизации видео. true если буфер пустой и воспроизведение прервано
321
336
  * В отличии от isStalled показывает и буферизации на старте и после перемотки
322
337
  */
323
- isBuffering$: boolean;
338
+ isBuffering$: IValueObservable<boolean>;
324
339
  /**
325
- * Статус только нежелательной буферизации; возникает при опустошении буфера в процессе воспроизведения
340
+ * Статус только нежелательной буферизации, возникает при опустошении буфера в процессе воспроизведения
326
341
  * и не возникает при начальном наполнении буфера или после перемотки
327
342
  */
328
- isStalled$: boolean;
343
+ isStalled$: IValueObservable<boolean>;
329
344
  /**
330
345
  * Закончилось ли видео
331
346
  */
332
- isEnded$: boolean;
347
+ isEnded$: IValueObservable<boolean>;
333
348
  /**
334
349
  * Зациклено ли видео
335
350
  */
336
- isLooped$: boolean;
337
- /**
338
- * Является трансляцией
339
- */
340
- isLive$: boolean | undefined;
351
+ isLooped$: IValueObservable<boolean>;
341
352
  /**
342
- * Была ли завершена трансляция
353
+ * Бесконечный ли стрим
343
354
  */
344
- isLiveEnded$: boolean | null;
355
+ isLive$: IValueObservable<boolean | undefined>;
345
356
  /**
346
- * Может ли плеер доиграть буффер законченной трансляции при перемотке
357
+ * Был ли завершен бесконечный стрим
347
358
  */
348
- canPlayLiveTailBuffer$: boolean;
359
+ isLiveEnded$: IValueObservable<boolean | null>;
349
360
  /**
350
361
  * Доступно ли ускоренное воспроизведении в лайв трансляции
351
362
  */
352
- canChangePlaybackSpeed$: boolean | undefined;
363
+ canChangePlaybackSpeed$: IValueObservable<boolean | undefined>;
353
364
  /**
354
365
  * Играем ли мы сейчас самый актуальный кадр лайва
355
366
  */
356
- atLiveEdge$: boolean | undefined;
367
+ atLiveEdge$: IValueObservable<boolean | undefined>;
368
+ /**
369
+ * Может ли плеер доиграть буффер законченной трансляции при перемотке
370
+ */
371
+ canPlayLiveTailBuffer$: IValueObservable<boolean>;
357
372
  /**
358
373
  * Играем ли мы сейчас самый старый кадр лайва
359
374
  */
360
- atLiveDurationEdge$: boolean | undefined;
375
+ atLiveDurationEdge$: IValueObservable<boolean | undefined>;
361
376
  /**
362
377
  * Серверное время текущего кадра
363
378
  */
364
- liveTime$: Milliseconds | undefined;
379
+ liveTime$: IValueObservable<Milliseconds | undefined>;
365
380
  /**
366
381
  * Буферное время текущего кадра
367
382
  */
368
- liveBufferTime$: Milliseconds | undefined;
383
+ liveBufferTime$: IValueObservable<Milliseconds | undefined>;
369
384
  /**
370
385
  * Задержка лайв стрима
371
386
  */
372
- liveLatency$: Milliseconds | undefined;
387
+ liveLatency$: IValueObservable<Milliseconds | undefined>;
373
388
  /**
374
- * Формат; в котором сейчас воспроизводится видео
389
+ * Формат, в котором сейчас воспроизводится видео
375
390
  */
376
- currentFormat$: VideoFormat | undefined;
391
+ currentFormat$: IValueObservable<VideoFormat | undefined>;
377
392
  /**
378
393
  * Список всех доступных субтитров
379
394
  */
380
- availableTextTracks$: ITextTrack[];
395
+ availableTextTracks$: IValueObservable<ITextTrack[]>;
381
396
  /**
382
397
  * Выбранная и отображаемая дорожка субтитров
383
398
  */
384
- currentTextTrack$: ITextTrack["id"] | undefined;
399
+ currentTextTrack$: IValueObservable<ITextTrack["id"] | undefined>;
385
400
  /**
386
401
  * Рассчитанная ширина канала пользователя
387
402
  */
388
- throughputEstimation$: Kbps | undefined;
403
+ throughputEstimation$: IValueObservable<Kbps | undefined>;
389
404
  /**
390
- * Round-Trip-Time; время от отправки запроса до получения ответа. Весьма неточное.
405
+ * Round-Trip-Time, время от отправки запроса до получения ответа. Весьма неточное.
391
406
  */
392
- rttEstimation$: Milliseconds | undefined;
407
+ rttEstimation$: IValueObservable<Milliseconds | undefined>;
393
408
  /**
394
409
  * Битрейт текущей видео-дорожки
395
410
  */
396
- videoBitrate$: Kbps | undefined;
411
+ videoBitrate$: IValueObservable<Kbps | undefined>;
397
412
  /**
398
413
  * Хост с которого воспроизводится видео
399
414
  */
400
- hostname$: string | undefined;
415
+ hostname$: IValueObservable<string | undefined>;
401
416
  /**
402
417
  * Тип HTTP соединения последнего запроса
403
418
  */
404
- httpConnectionType$: HttpConnectionType | undefined;
419
+ httpConnectionType$: IValueObservable<HttpConnectionType | undefined>;
405
420
  /**
406
421
  * Было ли переиспользовано последнее HTTP соединение
407
422
  */
408
- httpConnectionReused$: boolean | undefined;
423
+ httpConnectionReused$: IValueObservable<boolean | undefined>;
409
424
  /**
410
425
  * Дополнительные данные-метрики по HTTP соединению
411
426
  */
412
- httpConnectionMetrics$: HttpConnectionMetrics | undefined;
427
+ httpConnectionMetrics$: IValueSubject<HttpConnectionMetrics | undefined>;
413
428
  /**
414
429
  * Данные по загрузке по сети
415
430
  */
416
- httpDownloadMetrics$: HttpDownloadMetrics | undefined;
417
- /**
418
- * Где сейчас рисуется картинка
419
- */
420
- surface$: Surface;
431
+ httpDownloadMetrics$: IValueObservable<HttpDownloadMetrics | undefined>;
421
432
  /**
422
433
  * Состояние подключения Chromecast
423
434
  */
424
- chromecastState$: ChromecastState;
435
+ chromecastState$: IValueObservable<ChromecastState>;
425
436
  /**
426
- * Имя устройства; куда выводится видео через Chromecast.
427
- * `undefined`; если видео не играет на Chromecast устройстве
437
+ * Имя устройства, куда выводится видео через Chromecast.
438
+ * `undefined`, если видео не играет на Chromecast устройстве
428
439
  */
429
- chromecastDeviceName$: string | undefined;
440
+ chromecastDeviceName$: IValueObservable<string | undefined>;
430
441
  /**
431
442
  * Фактический размер видео
432
443
  */
433
- intrinsicVideoSize$: {
444
+ intrinsicVideoSize$: IValueObservable<{
434
445
  width: number;
435
446
  height: number;
436
- } | undefined;
447
+ } | undefined>;
437
448
  /**
438
- * Список всех доступных источников
449
+ * Признак того, что сейчас проигрывается 3D-видео
439
450
  */
440
- availableSources$: ISources | undefined;
451
+ is3DVideo$: IValueObservable<boolean>;
441
452
  /**
442
- * Признак того; что сейчас проигрывается 3D-видео
453
+ * Где сейчас рисуется картинка
443
454
  */
444
- is3DVideo$: boolean;
455
+ surface$: IValueObservable<Surface | undefined>;
445
456
  /**
446
- * Длина видео сегмента
457
+ * Список всех доступных источников
447
458
  */
448
- currentVideoSegmentLength$: number;
459
+ availableSources$: IValueObservable<ISources | undefined>;
449
460
  /**
450
- * Длина аудио сегмента
461
+ * Длина видео сегмента
451
462
  */
452
- currentAudioSegmentLength$: number;
453
- }
454
- export type IPlayerInfo = { [K in keyof PlayerInfoValues] : IValueObservable<PlayerInfoValues[K]> };
455
- export type PlayerInfoImpl = { [K in keyof PlayerInfoValues] : ValueSubject<PlayerInfoValues[K]> };
456
- export interface PlayerEventsImpl {
457
- inited$: Subject<void>;
458
- ready$: Subject<void>;
459
- started$: Subject<void>;
460
- playing$: Subject<void>;
461
- paused$: Subject<void>;
462
- stopped$: Subject<void>;
463
- willReady$: Subject<void>;
464
- willStart$: Subject<void>;
465
- willResume$: Subject<void>;
466
- willPause$: Subject<void>;
467
- willStop$: Subject<void>;
468
- willDestruct$: Subject<void>;
469
- watchCoverageRecord$: Subject<StartEnd<Seconds>>;
470
- watchCoverageLive$: Subject<StartEnd<Milliseconds>>;
471
- managedError$: Subject<IError>;
472
- fatalError$: Subject<IError>;
473
- fetcherRecoverableError$: Subject<IError>;
474
- ended$: Subject<void>;
475
- looped$: Subject<Seconds>;
476
- seeked$: Subject<void>;
477
- willSeek$: Subject<ISeekRequest>;
478
- autoplaySoundProhibited$: Subject<void>;
479
- manifestRequested$: Subject<void>;
480
- firstBytesManifest$: Subject<void>;
481
- manifestReceived$: Subject<void>;
482
- firstBytesRequested$: Subject<void>;
483
- firstBytesReceived$: Subject<void>;
484
- firstBytes$: Subject<Milliseconds>;
485
- loadedMetadata$: Subject<void>;
486
- firstFrame$: Subject<Milliseconds>;
487
- canplay$: Subject<Milliseconds>;
488
- log$: Subject<ILogEntry>;
489
- fetcherError$: Subject<IError>;
490
- severeStallOccured$: Subject<boolean>;
491
- }
492
- interface IPlayerExperimental {
463
+ currentVideoSegmentLength$: IValueSubject<number>;
493
464
  /**
494
- * Элемент, который сейчас вставлен в container.
495
- * Может быть видеоэлементом, iframe и вообще чем угодно в общем случае.
465
+ * Длина аудио сегмента
496
466
  */
497
- element$: IValueObservable<HTMLVideoElement | undefined>;
498
- enableDebugTelemetry$: IValueSubject<boolean>;
499
- dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
500
- /** функция вычисления текущей позиции проигрывания из под провадера (если расчет нестандартный) */
501
- getCurrentTime$: IValueSubject<(() => number) | null>;
502
- }
503
- export interface PlayerExperimentalImpl {
504
- element$: ValueSubject<HTMLVideoElement | undefined>;
505
- enableDebugTelemetry$: ValueSubject<boolean>;
506
- dumpTelemetry: typeof dump;
507
- getCurrentTime$: ValueSubject<(() => number) | null>;
508
- skipVideoElVolumeSync$: ValueSubject<boolean>;
467
+ currentAudioSegmentLength$: IValueSubject<number>;
509
468
  }
510
469
  export declare enum PlaybackState {
511
470
  STOPPED = "stopped",
@@ -1,6 +1,6 @@
1
- import type { SeekState } from "../types";
1
+ import type { SeekState } from "#/player/types";
2
2
  import type { IObservable, IValueObservable, Seconds } from "@vkontakte/videoplayer-shared";
3
- import type { IStateMachine } from "../../utils/StateMachine/types";
3
+ import type { IStateMachine } from "#/utils/StateMachine/types";
4
4
  interface IParams {
5
5
  seekState: IStateMachine<SeekState>;
6
6
  position$: IValueObservable<Seconds>;
@@ -1,3 +1,3 @@
1
- import type { IConfig } from "../types";
1
+ import type { IConfig } from "#/player/types";
2
2
  declare const _default: (config: IConfig) => HTMLElement;
3
3
  export default _default;
@@ -1,4 +1,4 @@
1
- import { ChromecastState } from "../../player/types";
1
+ import { ChromecastState } from "#/player/types";
2
2
  import type { IError, IValueSubject, ISubject } from "@vkontakte/videoplayer-shared";
3
3
  import type { IChromecastConnection } from "../ChromecastProvider/ChromecastInitializer/types";
4
4
  import { ChromecastPresentationApiConnector } from "./ChromecastPresentationApiConnector";