@vkontakte/videoplayer-core 2.0.155 → 2.0.156-dev.04ce2cd1.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 (185) hide show
  1. package/es2015.cjs +83 -136
  2. package/es2015.esm.js +77 -130
  3. package/es2018.cjs +77 -130
  4. package/es2018.esm.js +75 -128
  5. package/es2024.cjs +83 -136
  6. package/es2024.esm.js +81 -134
  7. package/esnext.cjs +83 -136
  8. package/esnext.esm.js +81 -134
  9. package/evergreen.esm.js +82 -135
  10. package/package.json +2 -2
  11. package/types/enums/AndroidPreferredFormat.d.ts +6 -6
  12. package/types/enums/IOSPreferredFormat.d.ts +2 -2
  13. package/types/enums/WebmCodecStrategy.d.ts +5 -5
  14. package/types/index.d.ts +16 -13
  15. package/types/player/Player.d.ts +219 -210
  16. package/types/player/types.d.ts +595 -591
  17. package/types/player/utils/optimisticPosition.d.ts +7 -7
  18. package/types/player/utils/selectContainer.d.ts +1 -1
  19. package/types/providers/ChromecastPresentationApiProvider/ChromecastPresentationApiConnector.d.ts +107 -106
  20. package/types/providers/ChromecastPresentationApiProvider/ChromecastPresentationApiInitializer.d.ts +23 -23
  21. package/types/providers/ChromecastPresentationApiProvider/ChromecastPresentationApiProvider.d.ts +34 -34
  22. package/types/providers/ChromecastPresentationApiProvider/ProgressTicker.d.ts +9 -9
  23. package/types/providers/ChromecastPresentationApiProvider/index.d.ts +3 -3
  24. package/types/providers/ChromecastPresentationApiProvider/types.d.ts +31 -31
  25. package/types/providers/ChromecastPresentationApiProvider/utils.d.ts +1 -1
  26. package/types/providers/ChromecastProvider/ChromecastInitializer/index.d.ts +22 -22
  27. package/types/providers/ChromecastProvider/ChromecastInitializer/types.d.ts +22 -22
  28. package/types/providers/ChromecastProvider/index.d.ts +23 -23
  29. package/types/providers/ChromecastProvider/types.d.ts +7 -7
  30. package/types/providers/ChromecastProvider/utils.d.ts +1 -1
  31. package/types/providers/DashLiveProvider/DashLiveProvider.d.ts +33 -33
  32. package/types/providers/DashLiveProvider/index.d.ts +1 -1
  33. package/types/providers/DashLiveProvider/types.d.ts +17 -17
  34. package/types/providers/DashLiveProvider/utils/FilesFetcher.d.ts +23 -23
  35. package/types/providers/DashLiveProvider/utils/LiveDashPlayer.d.ts +149 -150
  36. package/types/providers/DashLiveProvider/utils/ThroughputEstimator.d.ts +12 -30
  37. package/types/providers/DashLiveProvider/utils/liveDashPlayerUtil.d.ts +19 -22
  38. package/types/providers/DashProvider/baseDashProvider.d.ts +57 -56
  39. package/types/providers/DashProvider/dashCmafLiveProvider.d.ts +6 -6
  40. package/types/providers/DashProvider/dashProvider.d.ts +4 -4
  41. package/types/providers/DashProvider/index.d.ts +2 -2
  42. package/types/providers/DashProvider/lib/ElementSizeManager.d.ts +14 -14
  43. package/types/providers/DashProvider/lib/LiveTextManager.d.ts +21 -21
  44. package/types/providers/DashProvider/lib/buffer.d.ts +123 -122
  45. package/types/providers/DashProvider/lib/fetcher.d.ts +70 -69
  46. package/types/providers/DashProvider/lib/player.d.ts +109 -107
  47. package/types/providers/DashProvider/lib/sourceBufferTaskQueue.d.ts +17 -17
  48. package/types/providers/DashProvider/lib/types.d.ts +20 -20
  49. package/types/providers/DashProvider/lib/utils.d.ts +4 -4
  50. package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +58 -57
  51. package/types/providers/DashProviderVirtual/consts.d.ts +2 -2
  52. package/types/providers/DashProviderVirtual/dashCmafLiveProvider.d.ts +8 -8
  53. package/types/providers/DashProviderVirtual/dashProvider.d.ts +6 -6
  54. package/types/providers/DashProviderVirtual/index.d.ts +2 -2
  55. package/types/providers/DashProviderVirtual/lib/ElementSizeManager.d.ts +15 -14
  56. package/types/providers/DashProviderVirtual/lib/LiveTextManager.d.ts +21 -21
  57. package/types/providers/DashProviderVirtual/lib/buffer/nativeBufferManager.d.ts +17 -17
  58. package/types/providers/DashProviderVirtual/lib/buffer/sourceBufferTaskQueue.d.ts +17 -17
  59. package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +39 -39
  60. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts +94 -92
  61. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/byteRangeVirtualBufferManager.d.ts +19 -19
  62. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/liveVirtualBuffer.d.ts +25 -25
  63. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/templateVirtualBufferManager.d.ts +19 -19
  64. package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/virtualBufferFactory.d.ts +4 -4
  65. package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +68 -67
  66. package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +103 -100
  67. package/types/providers/DashProviderVirtual/lib/player/livePlayer.d.ts +34 -34
  68. package/types/providers/DashProviderVirtual/lib/player/player.d.ts +9 -9
  69. package/types/providers/DashProviderVirtual/lib/player/types.d.ts +13 -13
  70. package/types/providers/DashProviderVirtual/lib/types.d.ts +20 -20
  71. package/types/providers/DashProviderVirtual/lib/utils.d.ts +4 -4
  72. package/types/providers/HlsLiveProvider/LiveTextManager.d.ts +35 -35
  73. package/types/providers/HlsLiveProvider/index.d.ts +29 -28
  74. package/types/providers/HlsLiveProvider/seekBackTimeExtractor.d.ts +1 -1
  75. package/types/providers/HlsProvider/index.d.ts +19 -19
  76. package/types/providers/HlsProvider/manifestDataExtractor.d.ts +13 -13
  77. package/types/providers/MpegProvider/index.d.ts +17 -17
  78. package/types/providers/ProviderContainer/index.d.ts +47 -45
  79. package/types/providers/ProviderContainer/types.d.ts +16 -16
  80. package/types/providers/ProviderContainer/utils/formatsSupport.d.ts +9 -9
  81. package/types/providers/ProviderContainer/utils/playbackHangup.d.ts +9 -8
  82. package/types/providers/WebRTCLiveProvider/WebRTCLiveClient.d.ts +185 -185
  83. package/types/providers/WebRTCLiveProvider/WebRTCLiveProvider.d.ts +58 -57
  84. package/types/providers/WebRTCLiveProvider/interface/WebRTCLiveClientOptions.d.ts +6 -6
  85. package/types/providers/types.d.ts +103 -102
  86. package/types/providers/utils/HTMLVideoElement/DroppedFramesManager.d.ts +40 -39
  87. package/types/providers/utils/HTMLVideoElement/TextTrackManager.d.ts +28 -28
  88. package/types/providers/utils/HTMLVideoElement/forcePlay.d.ts +5 -5
  89. package/types/providers/utils/HTMLVideoElement/observable.d.ts +25 -25
  90. package/types/providers/utils/HTMLVideoElement/pool.d.ts +5 -4
  91. package/types/providers/utils/LiveOffset/index.d.ts +12 -12
  92. package/types/providers/utils/LiveOffset/types.d.ts +8 -8
  93. package/types/providers/utils/StallsManager.d.ts +49 -49
  94. package/types/providers/utils/debug.d.ts +13 -12
  95. package/types/providers/utils/extractConnectionHeaders.d.ts +3 -3
  96. package/types/providers/utils/generateLiveUrl.d.ts +4 -4
  97. package/types/providers/utils/guessNetworkErrorCause.d.ts +1 -1
  98. package/types/providers/utils/mergeIntervals.d.ts +1 -1
  99. package/types/providers/utils/okQualityStringToVideoQuality.d.ts +1 -1
  100. package/types/providers/utils/parsers/ietf/index.d.ts +8 -8
  101. package/types/providers/utils/parsers/index.d.ts +1 -1
  102. package/types/providers/utils/parsers/mpd.d.ts +1 -1
  103. package/types/providers/utils/parsers/mpeg/BoxModel.d.ts +18 -17
  104. package/types/providers/utils/parsers/mpeg/BoxParser.d.ts +15 -15
  105. package/types/providers/utils/parsers/mpeg/BoxTypeEnum.d.ts +27 -27
  106. package/types/providers/utils/parsers/mpeg/box.d.ts +68 -68
  107. package/types/providers/utils/parsers/mpeg/boxes/avc1.d.ts +5 -5
  108. package/types/providers/utils/parsers/mpeg/boxes/equi.d.ts +18 -18
  109. package/types/providers/utils/parsers/mpeg/boxes/ftyp.d.ts +14 -14
  110. package/types/providers/utils/parsers/mpeg/boxes/index.d.ts +27 -26
  111. package/types/providers/utils/parsers/mpeg/boxes/mdat.d.ts +12 -12
  112. package/types/providers/utils/parsers/mpeg/boxes/mdia.d.ts +5 -5
  113. package/types/providers/utils/parsers/mpeg/boxes/mfhd.d.ts +8 -8
  114. package/types/providers/utils/parsers/mpeg/boxes/minf.d.ts +5 -5
  115. package/types/providers/utils/parsers/mpeg/boxes/moof.d.ts +5 -5
  116. package/types/providers/utils/parsers/mpeg/boxes/moov.d.ts +5 -5
  117. package/types/providers/utils/parsers/mpeg/boxes/mvhd.d.ts +32 -32
  118. package/types/providers/utils/parsers/mpeg/boxes/prhd.d.ts +13 -13
  119. package/types/providers/utils/parsers/mpeg/boxes/proj.d.ts +5 -5
  120. package/types/providers/utils/parsers/mpeg/boxes/sidx.d.ts +43 -43
  121. package/types/providers/utils/parsers/mpeg/boxes/st3d.d.ts +16 -16
  122. package/types/providers/utils/parsers/mpeg/boxes/stbl.d.ts +5 -5
  123. package/types/providers/utils/parsers/mpeg/boxes/stsd.d.ts +8 -8
  124. package/types/providers/utils/parsers/mpeg/boxes/sv3d.d.ts +5 -5
  125. package/types/providers/utils/parsers/mpeg/boxes/tfdt.d.ts +14 -14
  126. package/types/providers/utils/parsers/mpeg/boxes/tfhd.d.ts +19 -19
  127. package/types/providers/utils/parsers/mpeg/boxes/tkhd.d.ts +39 -39
  128. package/types/providers/utils/parsers/mpeg/boxes/traf.d.ts +5 -5
  129. package/types/providers/utils/parsers/mpeg/boxes/trak.d.ts +5 -5
  130. package/types/providers/utils/parsers/mpeg/boxes/trun.d.ts +28 -28
  131. package/types/providers/utils/parsers/mpeg/boxes/unknown.d.ts +4 -5
  132. package/types/providers/utils/parsers/mpeg/boxes/uuid.d.ts +10 -10
  133. package/types/providers/utils/parsers/mpeg/fullBox.d.ts +12 -12
  134. package/types/providers/utils/parsers/mpeg/isobmff.d.ts +7 -7
  135. package/types/providers/utils/parsers/types.d.ts +137 -139
  136. package/types/providers/utils/parsers/webm/ebml.d.ts +62 -62
  137. package/types/providers/utils/parsers/webm/webm.d.ts +1 -1
  138. package/types/providers/utils/restorePlaybackRateInSafari.d.ts +17 -17
  139. package/types/providers/utils/syncDesiredState.d.ts +10 -10
  140. package/types/providers/utils/syncPlaybackState.d.ts +2 -2
  141. package/types/providers/utils/videoStreamRepresentaionsFilter.d.ts +2 -2
  142. package/types/utils/3d/Camera3D.d.ts +11 -11
  143. package/types/utils/3d/CameraRotationManager.d.ts +59 -59
  144. package/types/utils/3d/Scene3D.d.ts +129 -129
  145. package/types/utils/3d/types.d.ts +14 -14
  146. package/types/utils/ClientChecker/ClientChecker.d.ts +19 -19
  147. package/types/utils/ClientChecker/index.d.ts +2 -2
  148. package/types/utils/ClientChecker/services/AudioChecker.d.ts +7 -7
  149. package/types/utils/ClientChecker/services/BrowserChecker.d.ts +36 -36
  150. package/types/utils/ClientChecker/services/DeviceChecker.d.ts +38 -38
  151. package/types/utils/ClientChecker/services/DisplayChecker.d.ts +20 -20
  152. package/types/utils/ClientChecker/services/VideoChecker.d.ts +35 -35
  153. package/types/utils/ClientChecker/types/checker.d.ts +1 -1
  154. package/types/utils/ClientChecker/types/currentClientBrowser.d.ts +10 -10
  155. package/types/utils/ClientChecker/types/currentClientDevice.d.ts +8 -8
  156. package/types/utils/ClientChecker/types/userAgentData.d.ts +21 -21
  157. package/types/utils/StateMachine/StateMachine.d.ts +17 -17
  158. package/types/utils/StateMachine/types.d.ts +56 -56
  159. package/types/utils/StatefulIterator/index.d.ts +13 -13
  160. package/types/utils/ThroughputEstimator.d.ts +22 -22
  161. package/types/utils/VolumeMultiplierManager/VolumeMultiplierManager.d.ts +20 -20
  162. package/types/utils/VolumeMultiplierManager/index.d.ts +1 -1
  163. package/types/utils/autoSelectTrack.d.ts +28 -27
  164. package/types/utils/buffer/createTimeRanges.d.ts +2 -1
  165. package/types/utils/buffer/getBufferedRangeForPosition.d.ts +2 -2
  166. package/types/utils/buffer/getForwardBufferDuration.d.ts +1 -1
  167. package/types/utils/buffer/getTotalBufferDuration.d.ts +1 -1
  168. package/types/utils/buffer/isPositionBuffered.d.ts +1 -1
  169. package/types/utils/buffer/isSourceBufferValid.d.ts +1 -1
  170. package/types/utils/changePlaybackRate.d.ts +1 -1
  171. package/types/utils/decodingInfoLogger.d.ts +1 -1
  172. package/types/utils/mediaSource.d.ts +1 -5
  173. package/types/utils/observeElementVisibility.d.ts +1 -1
  174. package/types/utils/playbackTelemetry.d.ts +4 -4
  175. package/types/utils/playerOptions.d.ts +3 -3
  176. package/types/utils/qualityLimits.d.ts +15 -14
  177. package/types/utils/setStateWithSubscribe.d.ts +6 -3
  178. package/types/utils/smoothedValue/baseSmoothedValue.d.ts +16 -16
  179. package/types/utils/smoothedValue/emaAndMaSmoothedValue.d.ts +5 -5
  180. package/types/utils/smoothedValue/emaTopExtremumValue.d.ts +8 -8
  181. package/types/utils/smoothedValue/smoothedValueFactory.d.ts +4 -4
  182. package/types/utils/smoothedValue/twoEmaSmoothedValue.d.ts +6 -6
  183. package/types/utils/smoothedValue/types.d.ts +16 -16
  184. package/types/utils/tuningConfig.d.ts +304 -287
  185. package/types/utils/videoFormat.d.ts +1 -1
@@ -1,673 +1,677 @@
1
- import { IObservable, IValueObservable, IValueSubject, ILogEntry, Kbps, Milliseconds, Seconds, IRectangle, IError, QualityLimits, VideoQuality } from '@vkontakte/videoplayer-shared';
2
- import { Pixel } from '../utils/3d/types';
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";
3
3
  export interface StartEnd<Unit extends number> {
4
- start: Unit;
5
- end: Unit;
4
+ start: Unit;
5
+ end: Unit;
6
6
  }
7
7
  export interface IPlayer {
8
- info: IPlayerInfo;
9
- events: IPlayerEvents;
10
- /**
11
- * Инициализация видео
12
- */
13
- initVideo(config: IConfig): IPlayer;
14
- /**
15
- * Полная деинициализация плеера
16
- */
17
- destroy(): void;
18
- prepare(): IPlayer;
19
- play(): IPlayer;
20
- pause(): IPlayer;
21
- stop(): IPlayer;
22
- /**
23
- * @param time
24
- * @param forcePrecise Для длинных видео перемотка по-умолчанию может быть не точной (т.к. точная выполняется долго). С этим флагом перемотка будет гарантировано точной (но возможно медленной)
25
- */
26
- seekTime(time: Seconds, forcePrecise?: boolean): IPlayer;
27
- /**
28
- * @param percent: number [0; 1]
29
- */
30
- seekPercent(percent: number): IPlayer;
31
- /**
32
- * @param percent: number [0; 1]
33
- */
34
- setVolume(percent: number, muted?: boolean): IPlayer;
35
- /**
36
- * @param muted Флаг, отражающий нужно ли сделать мьют.
37
- * @param forced Флаг, который игнорирует внутренние механики простановки mute значения
38
- * и ставит то значение, которое передали в функцию.
39
- */
40
- setMuted(muted: boolean, forced?: boolean): IPlayer;
41
- setAudioStream(stream: IVideoStream): IPlayer;
42
- setVideoStream(stream: IVideoStream): IPlayer;
43
- setQuality(quality: VideoQuality): IPlayer;
44
- setAutoQuality(enable: boolean): IPlayer;
45
- setAutoQualityLimits(limit: QualityLimits): IPlayer;
46
- /**
47
- * Установить предопределенные настройки лимитов.
48
- */
49
- setPredefinedQualityLimits(type: PredefinedQualityLimits): IPlayer;
50
- startCameraManualRotation(mx: number, my: number): IPlayer;
51
- stopCameraManualRotation(immediate: boolean): IPlayer;
52
- moveCameraFocusPX(mx: Pixel, my: Pixel, dt: number): IPlayer;
53
- holdCamera(): IPlayer;
54
- releaseCamera(): IPlayer;
55
- setPlaybackRate(playbackRate: PlaybackRate): IPlayer;
56
- setLooped(isLooped: boolean): IPlayer;
57
- setExternalTextTracks(tracks: Omit<IExternalTextTrack, 'type'>[]): IPlayer;
58
- selectTextTrack(id: ITextTrack['id'] | undefined): IPlayer;
59
- setTextTrackCueSettings(settings: ICueSettings): IPlayer;
60
- setLiveLowLatency(isLowLatency: boolean): IPlayer;
61
- /**
62
- * Включает или отключает Chromecast
63
- */
64
- toggleChromecast(): void;
65
- /**
66
- * Возвращает наиболее точное время воспроизведения.
67
- * Может быть точнее, чем `info.position$` в промежутках между timeupdate
68
- */
69
- getExactTime(): number;
70
- /**
71
- * Возвращает все логи с момента инициализации плеера
72
- */
73
- getAllLogs(): ILogEntry[];
74
- experimental: {
75
- /**
76
- * Элемент, который сейчас вставлен в container.
77
- * Может быть видеоэлементом, iframe и вообще чем угодно в общем случае.
78
- */
79
- element$: IValueObservable<HTMLVideoElement | undefined>;
80
- enableDebugTelemetry$: IValueSubject<boolean>;
81
- dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
82
- /** функция вычисления текущей позиции проигрывания из под провадера (если расчет нестандартный) */
83
- getCurrentTime$: IValueSubject<(() => number) | null>;
84
- };
8
+ info: IPlayerInfo;
9
+ events: IPlayerEvents;
10
+ /**
11
+ * Инициализация видео
12
+ */
13
+ initVideo(config: IConfig): IPlayer;
14
+ /**
15
+ * Полная деинициализация плеера
16
+ */
17
+ destroy(): void;
18
+ prepare(): IPlayer;
19
+ play(): IPlayer;
20
+ pause(): IPlayer;
21
+ stop(): IPlayer;
22
+ /**
23
+ * @param time
24
+ * @param forcePrecise Для длинных видео перемотка по-умолчанию может быть не точной (т.к. точная выполняется долго). С этим флагом перемотка будет гарантировано точной (но возможно медленной)
25
+ */
26
+ seekTime(time: Seconds, forcePrecise?: boolean): IPlayer;
27
+ /**
28
+ * @param percent: number [0; 1]
29
+ */
30
+ seekPercent(percent: number): IPlayer;
31
+ /**
32
+ * @param percent: number [0; 1]
33
+ * @param muted Флаг, отражающий нужно ли сделать мьют.
34
+ * @param skipVideoElVolumeSync Флаг, который не меняет громкость у видеоэлемента
35
+ */
36
+ setVolume(percent: number, muted?: boolean, skipVideoElVolumeSync?: boolean): IPlayer;
37
+ /**
38
+ * @param muted Флаг, отражающий нужно ли сделать мьют.
39
+ * @param forced Флаг, который игнорирует внутренние механики простановки mute значения
40
+ * и ставит то значение, которое передали в функцию.
41
+ * @param skipVideoElVolumeSync Флаг, который не меняет громкость у видеоэлемента
42
+ */
43
+ setMuted(muted: boolean, forced?: boolean, skipVideoElVolumeSync?: boolean): IPlayer;
44
+ setAudioStream(stream: IVideoStream): IPlayer;
45
+ setVideoStream(stream: IVideoStream): IPlayer;
46
+ setQuality(quality: VideoQuality): IPlayer;
47
+ setAutoQuality(enable: boolean): IPlayer;
48
+ setAutoQualityLimits(limit: QualityLimits): IPlayer;
49
+ /**
50
+ * Установить предопределенные настройки лимитов.
51
+ */
52
+ setPredefinedQualityLimits(type: PredefinedQualityLimits): IPlayer;
53
+ startCameraManualRotation(mx: number, my: number): IPlayer;
54
+ stopCameraManualRotation(immediate: boolean): IPlayer;
55
+ moveCameraFocusPX(mx: Pixel, my: Pixel, dt: number): IPlayer;
56
+ holdCamera(): IPlayer;
57
+ releaseCamera(): IPlayer;
58
+ setPlaybackRate(playbackRate: PlaybackRate): IPlayer;
59
+ setLooped(isLooped: boolean): IPlayer;
60
+ setExternalTextTracks(tracks: Omit<IExternalTextTrack, "type">[]): IPlayer;
61
+ selectTextTrack(id: ITextTrack["id"] | undefined): IPlayer;
62
+ setTextTrackCueSettings(settings: ICueSettings): IPlayer;
63
+ setLiveLowLatency(isLowLatency: boolean): IPlayer;
64
+ /**
65
+ * Включает или отключает Chromecast
66
+ */
67
+ toggleChromecast(): void;
68
+ /**
69
+ * Возвращает наиболее точное время воспроизведения.
70
+ * Может быть точнее, чем `info.position$` в промежутках между timeupdate
71
+ */
72
+ getExactTime(): number;
73
+ /**
74
+ * Возвращает все логи с момента инициализации плеера
75
+ */
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
+ };
85
88
  }
86
89
  /**
87
- * События плеера.
88
- * События, начинающиеся с `will...` случаются в начале совершения действия,
89
- * остальные - в момент окончания действия.
90
- */
90
+ * События плеера.
91
+ * События, начинающиеся с `will...` случаются в начале совершения действия,
92
+ * остальные - в момент окончания действия.
93
+ */
91
94
  export interface IPlayerEvents {
92
- /**
93
- * Плеер получил ссылку и начал полезную работу
94
- */
95
- inited$: IObservable<void>;
96
- /**
97
- * Предзагрузка окончена и плеер готов стартовать немедленно. Если предзагрузка не инициировалась, события не будет
98
- */
99
- ready$: IObservable<void>;
100
- /**
101
- * Видео начало воспроизведение в первый раз
102
- * Соответствует первому для видео внешнему запуску воспроизведения
103
- */
104
- started$: IObservable<void>;
105
- /**
106
- * Любое начало воспроизведения. Первои и после паузы
107
- */
108
- playing$: IObservable<void>;
109
- /**
110
- * Видео на паузе
111
- */
112
- paused$: IObservable<void>;
113
- /**
114
- * Плеер остановлен
115
- */
116
- stopped$: IObservable<void>;
117
- /**
118
- * Запрошена предзагрузка видео
119
- */
120
- willReady$: IObservable<void>;
121
- /**
122
- * Запрошена пауза
123
- */
124
- willPause$: IObservable<void>;
125
- /**
126
- * Запрошено первый старт воспроизведения
127
- */
128
- willStart$: IObservable<void>;
129
- /**
130
- * Запрошено возобновление воспроизведения после паузы
131
- */
132
- willResume$: IObservable<void>;
133
- /**
134
- * Плеер будет остановлен
135
- */
136
- willStop$: IObservable<void>;
137
- /**
138
- * Плеер будет уничтожен, в момент события можно синхронно запросить последние данные о его состоянии.
139
- */
140
- willDestruct$: IObservable<void>;
141
- /**
142
- * @deprecated
143
- */
144
- watchCoverageRecord$: IObservable<StartEnd<Seconds>>;
145
- /**
146
- * @deprecated
147
- */
148
- watchCoverageLive$: IObservable<StartEnd<Milliseconds>>;
149
- /**
150
- * Ошибка в работе после которой воспроизведение было восстановлено
151
- */
152
- managedError$: IObservable<IError>;
153
- /**
154
- * Критическая ошибка, воспроизведение более не возможно
155
- */
156
- fatalError$: IObservable<IError>;
157
- /**
158
- * Проигрывание видео завершено
159
- */
160
- ended$: IObservable<void>;
161
- /**
162
- * Видео доиграло до конца, перемоталось в начало и заиграло снова, в параметре время в которое произошло переключение
163
- */
164
- looped$: IObservable<Seconds>;
165
- /**
166
- * Совершена перемотка
167
- */
168
- seeked$: IObservable<void>;
169
- /**
170
- * Запрошена перемотка
171
- */
172
- willSeek$: IObservable<ISeekRequest>;
173
- /**
174
- * Браузер не разрешил стартовать со звуком
175
- */
176
- autoplaySoundProhibited$: IObservable<void>;
177
- /**
178
- * Был отправлен запрос за манифестом
179
- * Событие поддерживается не во всех провайдерах
180
- */
181
- manifestRequested$: IObservable<void>;
182
- /**
183
- * Запрос за первыми данными манифеста был успешно получен
184
- * Событие поддерживается не во всех провайдерах
185
- */
186
- firstBytesManifest$: IObservable<void>;
187
- /**
188
- * Запрос за манифестом был успешно получен
189
- * Событие поддерживается не во всех провайдерах
190
- */
191
- manifestReceived$: IObservable<void>;
192
- /**
193
- * Был отправлен запрос за первыми медиа данными
194
- * Событие поддерживается не во всех провайдерах
195
- */
196
- firstBytesRequested$: IObservable<void>;
197
- /**
198
- * Запрос за первыми медиа данными был успешно получен
199
- * Событие поддерживается не во всех провайдерах
200
- */
201
- firstBytesReceived$: IObservable<void>;
202
- /**
203
- * Получен первый кусок контента от сервера раздачи видео
204
- * Событие поддерживается не во всех провайдерах (т.к. не все способы проигрывания видео поддерживают такой интерфейс)
205
- *
206
- * Содержит время в миллисекундах: сколько прошло с момента инициализации
207
- */
208
- firstBytes$: IObservable<Milliseconds>;
209
- /**
210
- * Загружена метадата в видео элементе
211
- */
212
- loadedMetadata$: IObservable<void>;
213
- /**
214
- * Показан первый кадр
215
- *
216
- * Содержит время в миллисекундах: сколько прошло времени с инициализации
217
- */
218
- firstFrame$: IObservable<Milliseconds>;
219
- /**
220
- * Плеер готов начать воспроизведение
221
- *
222
- * Содержит время в миллисекундах: сколько прошло времени с инициализации
223
- */
224
- canplay$: IObservable<Milliseconds>;
225
- /**
226
- * Логи для отладки
227
- */
228
- log$: IObservable<ILogEntry>;
229
- /**
230
- * Ошибки запроса данных, которые должны полечится перезапуском плеера
231
- */
232
- fetcherRecoverableError$: IObservable<IError>;
233
- /**
234
- * Произошел серьезный/долгий стол.
235
- */
236
- severeStallOccured$: IObservable<boolean>;
95
+ /**
96
+ * Плеер получил ссылку и начал полезную работу
97
+ */
98
+ inited$: IObservable<void>;
99
+ /**
100
+ * Предзагрузка окончена и плеер готов стартовать немедленно. Если предзагрузка не инициировалась, события не будет
101
+ */
102
+ ready$: IObservable<void>;
103
+ /**
104
+ * Видео начало воспроизведение в первый раз
105
+ * Соответствует первому для видео внешнему запуску воспроизведения
106
+ */
107
+ started$: IObservable<void>;
108
+ /**
109
+ * Любое начало воспроизведения. Первои и после паузы
110
+ */
111
+ playing$: IObservable<void>;
112
+ /**
113
+ * Видео на паузе
114
+ */
115
+ paused$: IObservable<void>;
116
+ /**
117
+ * Плеер остановлен
118
+ */
119
+ stopped$: IObservable<void>;
120
+ /**
121
+ * Запрошена предзагрузка видео
122
+ */
123
+ willReady$: IObservable<void>;
124
+ /**
125
+ * Запрошена пауза
126
+ */
127
+ willPause$: IObservable<void>;
128
+ /**
129
+ * Запрошено первый старт воспроизведения
130
+ */
131
+ willStart$: IObservable<void>;
132
+ /**
133
+ * Запрошено возобновление воспроизведения после паузы
134
+ */
135
+ willResume$: IObservable<void>;
136
+ /**
137
+ * Плеер будет остановлен
138
+ */
139
+ willStop$: IObservable<void>;
140
+ /**
141
+ * Плеер будет уничтожен, в момент события можно синхронно запросить последние данные о его состоянии.
142
+ */
143
+ willDestruct$: IObservable<void>;
144
+ /**
145
+ * @deprecated
146
+ */
147
+ watchCoverageRecord$: IObservable<StartEnd<Seconds>>;
148
+ /**
149
+ * @deprecated
150
+ */
151
+ watchCoverageLive$: IObservable<StartEnd<Milliseconds>>;
152
+ /**
153
+ * Ошибка в работе после которой воспроизведение было восстановлено
154
+ */
155
+ managedError$: IObservable<IError>;
156
+ /**
157
+ * Критическая ошибка, воспроизведение более не возможно
158
+ */
159
+ fatalError$: IObservable<IError>;
160
+ /**
161
+ * Проигрывание видео завершено
162
+ */
163
+ ended$: IObservable<void>;
164
+ /**
165
+ * Видео доиграло до конца, перемоталось в начало и заиграло снова, в параметре время в которое произошло переключение
166
+ */
167
+ looped$: IObservable<Seconds>;
168
+ /**
169
+ * Совершена перемотка
170
+ */
171
+ seeked$: IObservable<void>;
172
+ /**
173
+ * Запрошена перемотка
174
+ */
175
+ willSeek$: IObservable<ISeekRequest>;
176
+ /**
177
+ * Браузер не разрешил стартовать со звуком
178
+ */
179
+ autoplaySoundProhibited$: IObservable<void>;
180
+ /**
181
+ * Был отправлен запрос за манифестом
182
+ * Событие поддерживается не во всех провайдерах
183
+ */
184
+ manifestRequested$: IObservable<void>;
185
+ /**
186
+ * Запрос за первыми данными манифеста был успешно получен
187
+ * Событие поддерживается не во всех провайдерах
188
+ */
189
+ firstBytesManifest$: IObservable<void>;
190
+ /**
191
+ * Запрос за манифестом был успешно получен
192
+ * Событие поддерживается не во всех провайдерах
193
+ */
194
+ manifestReceived$: IObservable<void>;
195
+ /**
196
+ * Был отправлен запрос за первыми медиа данными
197
+ * Событие поддерживается не во всех провайдерах
198
+ */
199
+ firstBytesRequested$: IObservable<void>;
200
+ /**
201
+ * Запрос за первыми медиа данными был успешно получен
202
+ * Событие поддерживается не во всех провайдерах
203
+ */
204
+ firstBytesReceived$: IObservable<void>;
205
+ /**
206
+ * Получен первый кусок контента от сервера раздачи видео
207
+ * Событие поддерживается не во всех провайдерах (т.к. не все способы проигрывания видео поддерживают такой интерфейс)
208
+ *
209
+ * Содержит время в миллисекундах: сколько прошло с момента инициализации
210
+ */
211
+ firstBytes$: IObservable<Milliseconds>;
212
+ /**
213
+ * Загружена метадата в видео элементе
214
+ */
215
+ loadedMetadata$: IObservable<void>;
216
+ /**
217
+ * Показан первый кадр
218
+ *
219
+ * Содержит время в миллисекундах: сколько прошло времени с инициализации
220
+ */
221
+ firstFrame$: IObservable<Milliseconds>;
222
+ /**
223
+ * Плеер готов начать воспроизведение
224
+ *
225
+ * Содержит время в миллисекундах: сколько прошло времени с инициализации
226
+ */
227
+ canplay$: IObservable<Milliseconds>;
228
+ /**
229
+ * Логи для отладки
230
+ */
231
+ log$: IObservable<ILogEntry>;
232
+ /**
233
+ * Ошибки запроса данных, которые должны полечится перезапуском плеера
234
+ */
235
+ fetcherRecoverableError$: IObservable<IError>;
236
+ /**
237
+ * Произошел серьезный/долгий стол.
238
+ */
239
+ severeStallOccured$: IObservable<boolean>;
237
240
  }
238
241
  export interface IPlayerInfo {
239
- /**
240
- * Оптимистичный статут плеера. Так например, значение будет равно Playing сразу после вызова play().
241
- * Фактическое состояние лучше отслеживать по событиям (например, playing$)
242
- */
243
- playbackState$: IValueObservable<PlaybackState | undefined>;
244
- /**
245
- * Текущая позиция.
246
- *
247
- * default value: `0`
248
- */
249
- position$: IValueObservable<Seconds>;
250
- /**
251
- * Длительность видео.
252
- *
253
- * default value: `Infinity`
254
- */
255
- duration$: IValueObservable<Seconds>;
256
- /**
257
- * default value: `false`
258
- */
259
- muted$: IValueObservable<boolean>;
260
- /**
261
- * default value: `1`
262
- */
263
- volume$: IValueObservable<number>;
264
- currentVideoStream$: IValueObservable<IVideoStream | undefined>;
265
- availableVideoStreams$: IValueObservable<IVideoStream[]>;
266
- availableVideoTracks$: IValueObservable<IVideoTrack[]>;
267
- currentAudioStream$: IValueObservable<IAudioStream | undefined>;
268
- availableAudioStreams$: IValueObservable<IAudioStream[]>;
269
- /**
270
- * Список доступных качеств. Отсортированы по возрастанию.
271
- *
272
- * default value: `[]`
273
- */
274
- availableQualities$: IValueObservable<VideoQuality[]>;
275
- /**
276
- * Список фпс для доступных качеств
277
- *
278
- * default value: `{}`
279
- */
280
- availableQualitiesFps$: IValueObservable<FpsByQuality>;
281
- /**
282
- * Список доступных аудиодорожек
283
- *
284
- * default value: `[]`
285
- */
286
- availableAudioTracks$: IValueSubject<IAudioTrack[]>;
287
- /**
288
- * Доступна ли аудио дорожка
289
- *
290
- * default value: true
291
- */
292
- isAudioAvailable$: IValueSubject<boolean>;
293
- /**
294
- * Реальное качество, в котором сейчас воспроизводится видео.
295
- *
296
- * default value: `undefined`
297
- */
298
- currentQuality$: IValueObservable<VideoQuality | undefined>;
299
- /**
300
- * Будет ли плеер адаптивно переключать качество в зависимости от канала пользователя
301
- */
302
- isAutoQualityEnabled$: IValueObservable<boolean>;
303
- /**
304
- * Доступна ли установка лимитов авто качества
305
- */
306
- autoQualityLimitingAvailable$: IValueObservable<boolean>;
307
- /**
308
- * Текущие лимиты авто-качества
309
- */
310
- autoQualityLimits$: IValueObservable<QualityLimits>;
311
- /**
312
- * Отображает тип лимитов по качеству.
313
- */
314
- predefinedQualityLimitType$: IValueObservable<PredefinedQualityLimits>;
315
- /**
316
- * Текущая скорость воспроизведения
317
- */
318
- currentPlaybackRate$: IValueObservable<PlaybackRate>;
319
- /**
320
- * Текущий буффер плеера (тот, который содержит текущую позицию воспроизведения)
321
- *
322
- * default value: `undefined`
323
- */
324
- currentBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
325
- /**
326
- * Текущий браузерный буффер (тот, который содержит текущую позицию воспроизведения)
327
- *
328
- * default value: `undefined`
329
- */
330
- currentNativeBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
331
- /**
332
- * Статус буферизации видео. true если буфер пустой и воспроизведение прервано
333
- * В отличии от isStalled показывает и буферизации на старте и после перемотки
334
- */
335
- isBuffering$: IValueObservable<boolean>;
336
- /**
337
- * Статус только нежелательной буферизации, возникает при опустошении буфера в процессе воспроизведения
338
- * и не возникает при начальном наполнении буфера или после перемотки
339
- */
340
- isStalled$: IValueObservable<boolean>;
341
- /**
342
- * Закончилось ли видео
343
- */
344
- isEnded$: IValueObservable<boolean>;
345
- /**
346
- * Зациклено ли видео
347
- */
348
- isLooped$: IValueObservable<boolean>;
349
- /**
350
- * Бесконечный ли стрим
351
- */
352
- isLive$: IValueObservable<boolean | undefined>;
353
- /**
354
- * Был ли завершен бесконечный стрим
355
- */
356
- isLiveEnded$: IValueObservable<boolean | null>;
357
- /**
358
- * Доступно ли ускоренное воспроизведении в лайв трансляции
359
- */
360
- canChangePlaybackSpeed$: IValueObservable<boolean | undefined>;
361
- /**
362
- * Играем ли мы сейчас самый актуальный кадр лайва
363
- */
364
- atLiveEdge$: IValueObservable<boolean | undefined>;
365
- /**
366
- * Может ли плеер доиграть буффер законченной трансляции при перемотке
367
- */
368
- canPlayLiveTailBuffer$: IValueObservable<boolean>;
369
- /**
370
- * Играем ли мы сейчас самый старый кадр лайва
371
- */
372
- atLiveDurationEdge$: IValueObservable<boolean | undefined>;
373
- /**
374
- * Серверное время текущего кадра
375
- */
376
- liveTime$: IValueObservable<Milliseconds | undefined>;
377
- /**
378
- * Буферное время текущего кадра
379
- */
380
- liveBufferTime$: IValueObservable<Milliseconds | undefined>;
381
- /**
382
- * Задержка лайв стрима
383
- */
384
- liveLatency$: IValueObservable<Milliseconds | undefined>;
385
- /**
386
- * Формат, в котором сейчас воспроизводится видео
387
- */
388
- currentFormat$: IValueObservable<VideoFormat | undefined>;
389
- /**
390
- * Список всех доступных субтитров
391
- */
392
- availableTextTracks$: IValueObservable<ITextTrack[]>;
393
- /**
394
- * Выбранная и отображаемая дорожка субтитров
395
- */
396
- currentTextTrack$: IValueObservable<ITextTrack['id'] | undefined>;
397
- /**
398
- * Рассчитанная ширина канала пользователя
399
- */
400
- throughputEstimation$: IValueObservable<Kbps | undefined>;
401
- /**
402
- * Round-Trip-Time, время от отправки запроса до получения ответа. Весьма неточное.
403
- */
404
- rttEstimation$: IValueObservable<Milliseconds | undefined>;
405
- /**
406
- * Битрейт текущей видео-дорожки
407
- */
408
- videoBitrate$: IValueObservable<Kbps | undefined>;
409
- /**
410
- * Хост с которого воспроизводится видео
411
- */
412
- hostname$: IValueObservable<string | undefined>;
413
- /**
414
- * Тип HTTP соединения последнего запроса
415
- */
416
- httpConnectionType$: IValueObservable<HttpConnectionType | undefined>;
417
- /**
418
- * Было ли переиспользовано последнее HTTP соединение
419
- */
420
- httpConnectionReused$: IValueObservable<boolean | undefined>;
421
- /**
422
- * Дополнительные данные-метрики по HTTP соединению
423
- */
424
- httpConnectionMetrics$: IValueSubject<HttpConnectionMetrics | undefined>;
425
- /**
426
- * Данные по загрузке по сети
427
- */
428
- httpDownloadMetrics$: IValueObservable<HttpDownloadMetrics | undefined>;
429
- /**
430
- * Состояние подключения Chromecast
431
- */
432
- chromecastState$: IValueObservable<ChromecastState>;
433
- /**
434
- * Имя устройства, куда выводится видео через Chromecast.
435
- * `undefined`, если видео не играет на Chromecast устройстве
436
- */
437
- chromecastDeviceName$: IValueObservable<string | undefined>;
438
- /**
439
- * Фактический размер видео
440
- */
441
- intrinsicVideoSize$: IValueObservable<{
442
- width: number;
443
- height: number;
444
- } | undefined>;
445
- /**
446
- * Признак того, что сейчас проигрывается 3D-видео
447
- */
448
- is3DVideo$: IValueObservable<boolean>;
449
- /**
450
- * Где сейчас рисуется картинка
451
- */
452
- surface$: IValueObservable<Surface | undefined>;
453
- /**
454
- * Список всех доступных источников
455
- */
456
- availableSources$: IValueObservable<ISources | undefined>;
457
- /**
458
- * Длина видео сегмента
459
- */
460
- currentVideoSegmentLength$: IValueSubject<number>;
461
- /**
462
- * Длина аудио сегмента
463
- */
464
- currentAudioSegmentLength$: IValueSubject<number>;
242
+ /**
243
+ * Оптимистичный статут плеера. Так например, значение будет равно Playing сразу после вызова play().
244
+ * Фактическое состояние лучше отслеживать по событиям (например, playing$)
245
+ */
246
+ playbackState$: IValueObservable<PlaybackState | undefined>;
247
+ /**
248
+ * Текущая позиция.
249
+ *
250
+ * default value: `0`
251
+ */
252
+ position$: IValueObservable<Seconds>;
253
+ /**
254
+ * Длительность видео.
255
+ *
256
+ * default value: `Infinity`
257
+ */
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[]>;
272
+ /**
273
+ * Список доступных качеств. Отсортированы по возрастанию.
274
+ *
275
+ * default value: `[]`
276
+ */
277
+ availableQualities$: IValueObservable<VideoQuality[]>;
278
+ /**
279
+ * Список фпс для доступных качеств
280
+ *
281
+ * default value: `{}`
282
+ */
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>;
296
+ /**
297
+ * Реальное качество, в котором сейчас воспроизводится видео.
298
+ *
299
+ * default value: `undefined`
300
+ */
301
+ currentQuality$: IValueObservable<VideoQuality | undefined>;
302
+ /**
303
+ * Будет ли плеер адаптивно переключать качество в зависимости от канала пользователя
304
+ */
305
+ isAutoQualityEnabled$: IValueObservable<boolean>;
306
+ /**
307
+ * Доступна ли установка лимитов авто качества
308
+ */
309
+ autoQualityLimitingAvailable$: IValueObservable<boolean>;
310
+ /**
311
+ * Текущие лимиты авто-качества
312
+ */
313
+ autoQualityLimits$: IValueObservable<QualityLimits>;
314
+ /**
315
+ * Отображает тип лимитов по качеству.
316
+ */
317
+ predefinedQualityLimitType$: IValueObservable<PredefinedQualityLimits>;
318
+ /**
319
+ * Текущая скорость воспроизведения
320
+ */
321
+ currentPlaybackRate$: IValueObservable<PlaybackRate>;
322
+ /**
323
+ * Текущий буффер плеера (тот, который содержит текущую позицию воспроизведения)
324
+ *
325
+ * default value: `undefined`
326
+ */
327
+ currentBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
328
+ /**
329
+ * Текущий браузерный буффер (тот, который содержит текущую позицию воспроизведения)
330
+ *
331
+ * default value: `undefined`
332
+ */
333
+ currentNativeBuffer$: IValueObservable<StartEnd<Seconds> | undefined>;
334
+ /**
335
+ * Статус буферизации видео. true если буфер пустой и воспроизведение прервано
336
+ * В отличии от isStalled показывает и буферизации на старте и после перемотки
337
+ */
338
+ isBuffering$: IValueObservable<boolean>;
339
+ /**
340
+ * Статус только нежелательной буферизации, возникает при опустошении буфера в процессе воспроизведения
341
+ * и не возникает при начальном наполнении буфера или после перемотки
342
+ */
343
+ isStalled$: IValueObservable<boolean>;
344
+ /**
345
+ * Закончилось ли видео
346
+ */
347
+ isEnded$: IValueObservable<boolean>;
348
+ /**
349
+ * Зациклено ли видео
350
+ */
351
+ isLooped$: IValueObservable<boolean>;
352
+ /**
353
+ * Бесконечный ли стрим
354
+ */
355
+ isLive$: IValueObservable<boolean | undefined>;
356
+ /**
357
+ * Был ли завершен бесконечный стрим
358
+ */
359
+ isLiveEnded$: IValueObservable<boolean | null>;
360
+ /**
361
+ * Доступно ли ускоренное воспроизведении в лайв трансляции
362
+ */
363
+ canChangePlaybackSpeed$: IValueObservable<boolean | undefined>;
364
+ /**
365
+ * Играем ли мы сейчас самый актуальный кадр лайва
366
+ */
367
+ atLiveEdge$: IValueObservable<boolean | undefined>;
368
+ /**
369
+ * Может ли плеер доиграть буффер законченной трансляции при перемотке
370
+ */
371
+ canPlayLiveTailBuffer$: IValueObservable<boolean>;
372
+ /**
373
+ * Играем ли мы сейчас самый старый кадр лайва
374
+ */
375
+ atLiveDurationEdge$: IValueObservable<boolean | undefined>;
376
+ /**
377
+ * Серверное время текущего кадра
378
+ */
379
+ liveTime$: IValueObservable<Milliseconds | undefined>;
380
+ /**
381
+ * Буферное время текущего кадра
382
+ */
383
+ liveBufferTime$: IValueObservable<Milliseconds | undefined>;
384
+ /**
385
+ * Задержка лайв стрима
386
+ */
387
+ liveLatency$: IValueObservable<Milliseconds | undefined>;
388
+ /**
389
+ * Формат, в котором сейчас воспроизводится видео
390
+ */
391
+ currentFormat$: IValueObservable<VideoFormat | undefined>;
392
+ /**
393
+ * Список всех доступных субтитров
394
+ */
395
+ availableTextTracks$: IValueObservable<ITextTrack[]>;
396
+ /**
397
+ * Выбранная и отображаемая дорожка субтитров
398
+ */
399
+ currentTextTrack$: IValueObservable<ITextTrack["id"] | undefined>;
400
+ /**
401
+ * Рассчитанная ширина канала пользователя
402
+ */
403
+ throughputEstimation$: IValueObservable<Kbps | undefined>;
404
+ /**
405
+ * Round-Trip-Time, время от отправки запроса до получения ответа. Весьма неточное.
406
+ */
407
+ rttEstimation$: IValueObservable<Milliseconds | undefined>;
408
+ /**
409
+ * Битрейт текущей видео-дорожки
410
+ */
411
+ videoBitrate$: IValueObservable<Kbps | undefined>;
412
+ /**
413
+ * Хост с которого воспроизводится видео
414
+ */
415
+ hostname$: IValueObservable<string | undefined>;
416
+ /**
417
+ * Тип HTTP соединения последнего запроса
418
+ */
419
+ httpConnectionType$: IValueObservable<HttpConnectionType | undefined>;
420
+ /**
421
+ * Было ли переиспользовано последнее HTTP соединение
422
+ */
423
+ httpConnectionReused$: IValueObservable<boolean | undefined>;
424
+ /**
425
+ * Дополнительные данные-метрики по HTTP соединению
426
+ */
427
+ httpConnectionMetrics$: IValueSubject<HttpConnectionMetrics | undefined>;
428
+ /**
429
+ * Данные по загрузке по сети
430
+ */
431
+ httpDownloadMetrics$: IValueObservable<HttpDownloadMetrics | undefined>;
432
+ /**
433
+ * Состояние подключения Chromecast
434
+ */
435
+ chromecastState$: IValueObservable<ChromecastState>;
436
+ /**
437
+ * Имя устройства, куда выводится видео через Chromecast.
438
+ * `undefined`, если видео не играет на Chromecast устройстве
439
+ */
440
+ chromecastDeviceName$: IValueObservable<string | undefined>;
441
+ /**
442
+ * Фактический размер видео
443
+ */
444
+ intrinsicVideoSize$: IValueObservable<{
445
+ width: number;
446
+ height: number;
447
+ } | undefined>;
448
+ /**
449
+ * Признак того, что сейчас проигрывается 3D-видео
450
+ */
451
+ is3DVideo$: IValueObservable<boolean>;
452
+ /**
453
+ * Где сейчас рисуется картинка
454
+ */
455
+ surface$: IValueObservable<Surface | undefined>;
456
+ /**
457
+ * Список всех доступных источников
458
+ */
459
+ availableSources$: IValueObservable<ISources | undefined>;
460
+ /**
461
+ * Длина видео сегмента
462
+ */
463
+ currentVideoSegmentLength$: IValueSubject<number>;
464
+ /**
465
+ * Длина аудио сегмента
466
+ */
467
+ currentAudioSegmentLength$: IValueSubject<number>;
465
468
  }
466
469
  export declare enum PlaybackState {
467
- STOPPED = "stopped",
468
- READY = "ready",
469
- PLAYING = "playing",
470
- PAUSED = "paused"
470
+ STOPPED = "stopped",
471
+ READY = "ready",
472
+ PLAYING = "playing",
473
+ PAUSED = "paused"
471
474
  }
472
475
  export interface IVolumeState {
473
- /**
474
- * range: [0;1]
475
- */
476
- volume: number;
477
- muted: boolean;
476
+ /**
477
+ * range: [0;1]
478
+ */
479
+ volume: number;
480
+ muted: boolean;
478
481
  }
479
482
  export interface IConfig {
480
- container: string | HTMLElement;
481
- sources: ISources;
482
- meta?: IMetadata;
483
- failoverHosts?: string[];
484
- volumeMultiplier?: number;
485
- panelSize?: IRectangle;
483
+ container: string | HTMLElement;
484
+ sources: ISources;
485
+ meta?: IMetadata;
486
+ failoverHosts?: string[];
487
+ volumeMultiplier?: number;
488
+ panelSize?: IRectangle;
489
+ isMuted?: boolean;
486
490
  }
487
491
  export interface ISources {
488
- [VideoFormat.MPEG]?: IMpegSource;
489
- [VideoFormat.DASH]?: IDashURLSource;
490
- [VideoFormat.DASH_SEP]?: IDashURLSource;
491
- [VideoFormat.DASH_WEBM]?: IDashURLSource;
492
- [VideoFormat.DASH_WEBM_AV1]?: IDashURLSource;
493
- [VideoFormat.DASH_STREAMS]?: IDashURLSource;
494
- [VideoFormat.DASH_ONDEMAND]?: IDashURLSource;
495
- [VideoFormat.DASH_LIVE]?: IDashURLSource;
496
- [VideoFormat.DASH_LIVE_CMAF]?: IDashURLSource;
497
- [VideoFormat.DASH_LIVE_WEBM]?: IDashURLSource;
498
- [VideoFormat.HLS]?: IHLSSource;
499
- [VideoFormat.HLS_ONDEMAND]?: IHLSSource;
500
- [VideoFormat.HLS_FMP4]?: IHLSSource;
501
- [VideoFormat.HLS_LIVE]?: IHLSLiveSource;
502
- [VideoFormat.HLS_LIVE_CMAF]?: IHLSLiveSource;
503
- [VideoFormat.WEB_RTC_LIVE]?: URLSource;
492
+ [VideoFormat.MPEG]?: IMpegSource;
493
+ [VideoFormat.DASH]?: IDashURLSource;
494
+ [VideoFormat.DASH_SEP]?: IDashURLSource;
495
+ [VideoFormat.DASH_WEBM]?: IDashURLSource;
496
+ [VideoFormat.DASH_WEBM_AV1]?: IDashURLSource;
497
+ [VideoFormat.DASH_STREAMS]?: IDashURLSource;
498
+ [VideoFormat.DASH_ONDEMAND]?: IDashURLSource;
499
+ [VideoFormat.DASH_LIVE]?: IDashURLSource;
500
+ [VideoFormat.DASH_LIVE_CMAF]?: IDashURLSource;
501
+ [VideoFormat.DASH_LIVE_WEBM]?: IDashURLSource;
502
+ [VideoFormat.HLS]?: IHLSSource;
503
+ [VideoFormat.HLS_ONDEMAND]?: IHLSSource;
504
+ [VideoFormat.HLS_FMP4]?: IHLSSource;
505
+ [VideoFormat.HLS_LIVE]?: IHLSLiveSource;
506
+ [VideoFormat.HLS_LIVE_CMAF]?: IHLSLiveSource;
507
+ [VideoFormat.WEB_RTC_LIVE]?: URLSource;
504
508
  }
505
509
  export interface IMetadata {
506
- title?: string;
507
- subtitle?: string;
508
- videoId?: string;
510
+ title?: string;
511
+ subtitle?: string;
512
+ videoId?: string;
509
513
  }
510
514
  export type QualitySetSource = Partial<Record<VideoQuality, string>>;
511
515
  export type URLSource = {
512
- type: 'url';
513
- url: string;
516
+ type: "url";
517
+ url: string;
514
518
  };
515
519
  export type RawSource = {
516
- type: 'raw';
517
- raw: string;
520
+ type: "raw";
521
+ raw: string;
518
522
  };
519
523
  export type URLSourceWithSeek = URLSource & Partial<{
520
- maxSeekBackTime: Milliseconds;
524
+ maxSeekBackTime: Milliseconds;
521
525
  }>;
522
526
  export type IMpegSource = QualitySetSource;
523
527
  export type IDashURLSource = URLSource & {
524
- compatibilityMode?: boolean;
528
+ compatibilityMode?: boolean;
525
529
  };
526
530
  export type IDashSource = URLSource | RawSource;
527
531
  export type IHLSSource = URLSource;
528
532
  export type IHLSLiveSource = URLSourceWithSeek;
529
533
  export declare enum VideoFormat {
530
- MPEG = "MPEG",
531
- /** @deprecated Больше не транскодируется */
532
- DASH = "DASH",// "Старый" h264 даш, слитный: Аудиодорожка слита с видео
533
- DASH_SEP = "DASH_SEP",// h264, но аудиодорожка отделена
534
- /** @deprecated Используйте DASH_SEP */ DASH_SEP_VK = "DASH_SEP",
535
- DASH_WEBM = "DASH_WEBM",// Видео закодировано в VP9, аудио в opus, контейнер webm
536
- DASH_WEBM_AV1 = "DASH_WEBM_AV1",// Видео закодировано в AV1, остальное как _WEBM
537
- DASH_STREAMS = "DASH_STREAMS",// AdaptationSet может быть несколько. На текущий момент различаются только языки аудио. Возможно позже и кодеки будут. Пока H.264/AAC
538
- /** @deprecated Используйте DASH_WEBM */ DASH_WEBM_VK = "DASH_WEBM",
539
- DASH_ONDEMAND = "DASH_ONDEMAND",// На бэке сегменты транскодируются на лету. Кодек H.264. Формат манифеста отличается, SegmentTemplate вместо SegmentBase
540
- /** @deprecated Используйте DASH_ONDEMAND */ DASH_ONDEMAND_VK = "DASH_ONDEMAND",
541
- DASH_LIVE = "DASH_LIVE",
542
- DASH_LIVE_CMAF = "DASH_LIVE_CMAF",
543
- /** @deprecated */
544
- DASH_LIVE_WEBM = "DASH_LIVE_WEBM",
545
- HLS = "HLS",
546
- HLS_ONDEMAND = "HLS_ONDEMAND",
547
- /** @deprecated Используйте HLS */ HLS_JS = "HLS",
548
- HLS_FMP4 = "HLS_FMP4",
549
- HLS_LIVE = "HLS_LIVE",
550
- HLS_LIVE_CMAF = "HLS_LIVE_CMAF",
551
- WEB_RTC_LIVE = "WEB_RTC_LIVE"
534
+ MPEG = "MPEG",
535
+ /** @deprecated Больше не транскодируется */
536
+ DASH = "DASH",
537
+ DASH_SEP = "DASH_SEP",
538
+ /** @deprecated Используйте DASH_SEP */ DASH_SEP_VK = "DASH_SEP",
539
+ DASH_WEBM = "DASH_WEBM",
540
+ DASH_WEBM_AV1 = "DASH_WEBM_AV1",
541
+ DASH_STREAMS = "DASH_STREAMS",
542
+ /** @deprecated Используйте DASH_WEBM */ DASH_WEBM_VK = "DASH_WEBM",
543
+ DASH_ONDEMAND = "DASH_ONDEMAND",
544
+ /** @deprecated Используйте DASH_ONDEMAND */ DASH_ONDEMAND_VK = "DASH_ONDEMAND",
545
+ DASH_LIVE = "DASH_LIVE",
546
+ DASH_LIVE_CMAF = "DASH_LIVE_CMAF",
547
+ /** @deprecated */
548
+ DASH_LIVE_WEBM = "DASH_LIVE_WEBM",
549
+ HLS = "HLS",
550
+ HLS_ONDEMAND = "HLS_ONDEMAND",
551
+ /** @deprecated Используйте HLS */ HLS_JS = "HLS",
552
+ HLS_FMP4 = "HLS_FMP4",
553
+ HLS_LIVE = "HLS_LIVE",
554
+ HLS_LIVE_CMAF = "HLS_LIVE_CMAF",
555
+ WEB_RTC_LIVE = "WEB_RTC_LIVE"
552
556
  }
553
557
  export declare enum VideoCodec {
554
- AV1 = "av1",
555
- VP9 = "vp9",
556
- AVC1 = "avc1",// H264, AVC
557
- HEV1 = "hev1"
558
+ AV1 = "av1",
559
+ VP9 = "vp9",
560
+ AVC1 = "avc1",
561
+ HEV1 = "hev1"
558
562
  }
559
563
  export declare enum AudioCodec {
560
- OPUS = "opus",
561
- MP4A = "mp4a"
564
+ OPUS = "opus",
565
+ MP4A = "mp4a"
562
566
  }
563
567
  export interface IVideoStream {
564
- id: string;
565
- language?: string;
566
- hdr?: boolean;
567
- codec?: string;
568
- label?: string;
568
+ id: string;
569
+ language?: string;
570
+ hdr?: boolean;
571
+ codec?: string;
572
+ label?: string;
569
573
  }
570
574
  export interface IBaseTrack {
571
- id: string;
572
- bitrate?: Kbps;
575
+ id: string;
576
+ bitrate?: Kbps;
573
577
  }
574
578
  export interface IVideoTrack extends IBaseTrack {
575
- quality: VideoQuality;
576
- size?: IRectangle;
577
- fps?: number;
578
- streamId?: IVideoStream['id'];
579
- tvDisabled?: boolean;
579
+ quality: VideoQuality;
580
+ size?: IRectangle;
581
+ fps?: number;
582
+ streamId?: IVideoStream["id"];
583
+ tvDisabled?: boolean;
580
584
  }
581
585
  export interface IAudioStream {
582
- id: string;
583
- language?: string;
584
- label?: string;
585
- codec?: string;
586
- isDefault?: boolean;
586
+ id: string;
587
+ language?: string;
588
+ label?: string;
589
+ codec?: string;
590
+ isDefault?: boolean;
587
591
  }
588
592
  export type IAudioTrack = IBaseTrack;
589
593
  interface ITextTrackBase {
590
- type: 'external' | 'internal';
591
- id: string;
592
- language?: string;
593
- label?: string;
594
- url?: string;
595
- isAuto?: boolean;
594
+ type: "external" | "internal";
595
+ id: string;
596
+ language?: string;
597
+ label?: string;
598
+ url?: string;
599
+ isAuto?: boolean;
596
600
  }
597
601
  export interface IExternalTextTrack extends ITextTrackBase {
598
- type: 'external';
599
- url: string;
602
+ type: "external";
603
+ url: string;
600
604
  }
601
605
  export interface IInternalTextTrack extends ITextTrackBase {
602
- type: 'internal';
603
- url: string;
606
+ type: "internal";
607
+ url: string;
604
608
  }
605
609
  export type ITextTrack = IExternalTextTrack | IInternalTextTrack;
606
610
  export interface ICueSettings {
607
- align?: 'left' | 'center' | 'right';
608
- position?: number | 'auto';
609
- size?: number;
610
- line?: number | 'auto';
611
+ align?: "left" | "center" | "right";
612
+ position?: number | "auto";
613
+ size?: number;
614
+ line?: number | "auto";
611
615
  }
612
616
  export declare enum VideoDestination {
613
- SCREEN = "SCREEN",
614
- CHROMECAST = "CHROMECAST"
617
+ SCREEN = "SCREEN",
618
+ CHROMECAST = "CHROMECAST"
615
619
  }
616
620
  export declare enum ChromecastState {
617
- NOT_AVAILABLE = "NOT_AVAILABLE",
618
- AVAILABLE = "AVAILABLE",
619
- CONNECTING = "CONNECTING",
620
- CONNECTED = "CONNECTED"
621
+ NOT_AVAILABLE = "NOT_AVAILABLE",
622
+ AVAILABLE = "AVAILABLE",
623
+ CONNECTING = "CONNECTING",
624
+ CONNECTED = "CONNECTED"
621
625
  }
622
626
  export interface ISeekRequest {
623
- from: Seconds;
624
- to: Seconds;
627
+ from: Seconds;
628
+ to: Seconds;
625
629
  }
626
630
  export declare enum HttpConnectionType {
627
- HTTP1 = "http1",
628
- HTTP2 = "http2",
629
- QUIC = "quic"
631
+ HTTP1 = "http1",
632
+ HTTP2 = "http2",
633
+ QUIC = "quic"
630
634
  }
631
635
  export interface HttpConnectionMetrics {
632
- dnsResolveTime: number;
633
- tcpHandshakeTime: number;
634
- tlsHandshakeTime: number;
635
- totalConnectTime: number;
636
- url: string;
637
- networkType: string;
636
+ dnsResolveTime: number;
637
+ tcpHandshakeTime: number;
638
+ tlsHandshakeTime: number;
639
+ totalConnectTime: number;
640
+ url: string;
641
+ networkType: string;
638
642
  }
639
643
  export interface HttpDownloadMetrics {
640
- bytes: number;
641
- speed: number;
642
- url: string;
644
+ bytes: number;
645
+ speed: number;
646
+ url: string;
643
647
  }
644
648
  export declare enum SeekOperationState {
645
- None = "none",
646
- Requested = "requested",
647
- Applying = "applying"
649
+ None = "none",
650
+ Requested = "requested",
651
+ Applying = "applying"
648
652
  }
649
653
  type SeekStateNone = {
650
- state: SeekOperationState.None;
654
+ state: SeekOperationState.None;
651
655
  };
652
656
  type SeekStateNotNone = {
653
- state: Exclude<SeekOperationState, SeekOperationState.None>;
654
- position: Milliseconds;
655
- forcePrecise: boolean;
657
+ state: Exclude<SeekOperationState, SeekOperationState.None>;
658
+ position: Milliseconds;
659
+ forcePrecise: boolean;
656
660
  };
657
661
  export type SeekState = SeekStateNone | SeekStateNotNone;
658
662
  export type FpsByQuality = Partial<Record<VideoQuality, number>>;
659
663
  export type PlaybackRate = number;
660
664
  export declare enum Surface {
661
- NONE = "none",
662
- INLINE = "inline",
663
- FULLSCREEN = "fullscreen",
664
- SECOND_SCREEN = "second_screen",
665
- PIP = "pip",
666
- INVISIBLE = "invisible"
665
+ NONE = "none",
666
+ INLINE = "inline",
667
+ FULLSCREEN = "fullscreen",
668
+ SECOND_SCREEN = "second_screen",
669
+ PIP = "pip",
670
+ INVISIBLE = "invisible"
667
671
  }
668
672
  export declare enum PredefinedQualityLimits {
669
- TRAFFIC_SAVING = "traffic_saving",
670
- HIGH_QUALITY = "high_quality",
671
- UNKNOWN = "unknown"
673
+ TRAFFIC_SAVING = "traffic_saving",
674
+ HIGH_QUALITY = "high_quality",
675
+ UNKNOWN = "unknown"
672
676
  }
673
677
  export {};