@vkontakte/videoplayer-core 2.0.118-dev.f24234cb.0 → 2.0.118-dev.feac9bf3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/videoplayer-core",
3
- "version": "2.0.118-dev.f24234cb.0",
3
+ "version": "2.0.118-dev.feac9bf3.0",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer core library based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -49,7 +49,7 @@
49
49
  "**/*.d.ts"
50
50
  ],
51
51
  "dependencies": {
52
- "@vkontakte/videoplayer-shared": "1.0.50-dev.e0ca2fd5.0",
52
+ "@vkontakte/videoplayer-shared": "1.0.50-dev.ef136aa4.0",
53
53
  "hls.js": "~1.4.7"
54
54
  }
55
55
  }
@@ -103,6 +103,7 @@ export default class Player implements IPlayer {
103
103
  tuningConfigName$: ValueSubject<string[]>;
104
104
  enableDebugTelemetry$: ValueSubject<boolean>;
105
105
  dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
106
+ getCurrentTime$: ValueSubject<null>;
106
107
  };
107
108
  constructor(tuning?: IOptionalTuningConfig, tracer?: ITracer);
108
109
  initVideo(config: IConfig): IPlayer;
@@ -71,6 +71,8 @@ export interface IPlayer {
71
71
  tuningConfigName$: IValueSubject<string[]>;
72
72
  enableDebugTelemetry$: IValueSubject<boolean>;
73
73
  dumpTelemetry: (receiver: (value: Record<string, any>) => void) => void;
74
+ /** функция вычисления текущей позиции проигрывания из под провадера (если расчет нестандартный) */
75
+ getCurrentTime$: IValueSubject<(() => number) | null>;
74
76
  };
75
77
  }
76
78
  /**
@@ -0,0 +1,42 @@
1
+ import { IInternalTextTrack } from '../../player/types';
2
+ import { IValueSubject, Milliseconds, IError, ISubject } from '@vkontakte/videoplayer-shared';
3
+ import { HLSManifestData } from '../HlsProvider/manifestDataExtractor';
4
+ type FetchManifestData = (url: string, init?: RequestInit) => Promise<HLSManifestData>;
5
+ export declare class LiveTextManager {
6
+ private readonly logger;
7
+ private readonly log;
8
+ private readonly params;
9
+ private readonly subscription;
10
+ private readonly abortControllers;
11
+ private readonly numberFormat;
12
+ /** в случае перемотки будет сохранена актуальная ссылка "наконечника" стрима */
13
+ private prepareUrl;
14
+ private currentTextTrackData;
15
+ availableTextTracks$: IValueSubject<IInternalTextTrack[] | null>;
16
+ getCurrentTime$: IValueSubject<(() => number) | null>;
17
+ error$: ISubject<IError>;
18
+ constructor(liveTime$: IValueSubject<Milliseconds | undefined>, video: HTMLVideoElement, fetchManifestData: FetchManifestData, sourceUrl: string);
19
+ destroy(): void;
20
+ /**
21
+ * одноименный метод из провайдера, который дергаем на перемотке,
22
+ * чтобы синхронизировать субтитры с видео\аудио дорожками
23
+ */
24
+ prepare(url: string): Promise<void>;
25
+ /** тут, на самом деле, мы получаем ссылку на плейлисты для текстовых треков */
26
+ processTextTracks(textTracks: IInternalTextTrack[], baseUrl: string): Promise<void>;
27
+ /**
28
+ * @todo - пока только с 1 стримом работает
29
+ */
30
+ private parseTextTracks;
31
+ /** парсим плейлист и получаем список треков */
32
+ private parsePlaylist;
33
+ /** забирает значение (value) строки в плейлисте */
34
+ private extractPlaylistRowValue;
35
+ /** обновляет ссылку на текущий сегмент субтитров для UI */
36
+ private processLiveTime;
37
+ /** догружает актуальные сабы */
38
+ private fetchNextManifestData;
39
+ private fetchManifestData;
40
+ private error;
41
+ }
42
+ export {};
@@ -13,6 +13,7 @@ export default class HlsLiveProvider implements IProvider {
13
13
  private video;
14
14
  private params;
15
15
  private textTracksManager;
16
+ private liveTextManager;
16
17
  private masterManifest;
17
18
  private manifests$;
18
19
  private maxSeekBackTime$;
@@ -26,5 +27,6 @@ export default class HlsLiveProvider implements IProvider {
26
27
  private playIfAllowed;
27
28
  private seek;
28
29
  private syncPlayback;
30
+ private generateLiveUrl;
29
31
  }
30
32
  export {};
@@ -17,5 +17,5 @@ type ExtractHLSManifestDataConfig = {
17
17
  manifestRetryInterval: number;
18
18
  manifestRetryMaxInterval: number;
19
19
  };
20
- declare const extractHLSManifestData: (masterManifestUrl: string, baseUrl: string | undefined, config: ExtractHLSManifestDataConfig) => Promise<HLSManifestData>;
20
+ declare const extractHLSManifestData: (masterManifestUrl: string, baseUrl: string | undefined, config: ExtractHLSManifestDataConfig, init?: RequestInit) => Promise<HLSManifestData>;
21
21
  export default extractHLSManifestData;
@@ -92,4 +92,5 @@ export interface IProviderOutput {
92
92
  inPiP$: IValueSubject<boolean>;
93
93
  inFullscreen$: IValueSubject<boolean>;
94
94
  playbackState$: IValueSubject<PlaybackState | string>;
95
+ getCurrentTime$: IValueSubject<(() => number) | null>;
95
96
  }
@@ -184,6 +184,7 @@ export type ITuningConfig = {
184
184
  ignoreAudioRendererError: boolean;
185
185
  useEnableSubtitlesParam: boolean;
186
186
  useOldMSEDetection: boolean;
187
+ useHlsLiveNewTextManager: boolean;
187
188
  };
188
189
  export type IOptionalTuningConfig = RecursivePartial<ITuningConfig> & {
189
190
  configName: ITuningConfig['configName'];