@vkontakte/videoplayer-core 2.0.172-dev.c95ba2d10.0 → 2.0.172

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.172-dev.c95ba2d10.0",
3
+ "version": "2.0.172",
4
4
  "author": "vk.ru",
5
5
  "description": "Videoplayer core library based on the vk.ru platform",
6
6
  "homepage": "https://vk.ru",
@@ -42,6 +42,6 @@
42
42
  "**/*.d.ts"
43
43
  ],
44
44
  "dependencies": {
45
- "@vkontakte/videoplayer-shared": "1.0.101-dev.c95ba2d10.0"
45
+ "@vkontakte/videoplayer-shared": "1.0.101"
46
46
  }
47
47
  }
@@ -331,6 +331,10 @@ export interface PlayerInfoValues {
331
331
  /**
332
332
  * Текущий браузерный аудио-буффер (тот; который содержит текущую позицию воспроизведения)
333
333
  *
334
+ * Семантика: для большинства провайдеров источник один — HTMLMediaElement, у которого `buffered` общий на audio- и video-данные
335
+ * (по спеке HTML audio data = mix всех enabled audio tracks, video data = currently selected video track — https://html.spec.whatwg.org/multipage/media.html#media-resource).
336
+ * В таких случаях значение совпадает с `currentNativeVideoBuffer$`.
337
+ *
334
338
  * default value: `undefined`
335
339
  */
336
340
  currentNativeAudioBuffer$: StartEnd<Seconds> | undefined;
@@ -3,7 +3,7 @@ import type { IProviderSubscriptionInfo } from "./lib/types";
3
3
  import { ProviderState } from "./lib/types";
4
4
  import type { Representation, Stream } from "../utils/parsers/types";
5
5
  import type { IProvider, IProviderAllocationResolution, IProviderParams } from "../types";
6
- import type { IObservableVideo } from "../utils/HTMLVideoElement/observable";
6
+ import type { IObservableMediaElement } from "../utils/HTMLVideoElement/observable";
7
7
  import type { IStateMachine } from "../../utils/StateMachine/types";
8
8
  import type { ExactVideoQuality, ISubscription, ITracer, Milliseconds, Nullable } from "@vkontakte/videoplayer-shared";
9
9
  import { Player } from "./lib/player";
@@ -23,7 +23,7 @@ export default abstract class BaseDashProvider implements IProvider {
23
23
  protected volumeSubscription: ISubscription;
24
24
  protected videoState: IStateMachine<ProviderState>;
25
25
  protected readonly allocation: IProviderAllocationResolution;
26
- protected observableVideo: IObservableVideo | null;
26
+ protected observableVideo: IObservableMediaElement | null;
27
27
  protected player: Player;
28
28
  protected params: IParams;
29
29
  protected tracer: ITracer;
@@ -1,6 +1,6 @@
1
1
  import type { IObservable, ISubject, IValueSubject } from "@vkontakte/videoplayer-shared";
2
2
  import type { IDesiredState, IProviderOutput, IProviderParams } from "../../types";
3
- import type { IObservableVideo } from "../../utils/HTMLVideoElement/observable";
3
+ import type { IObservableMediaElement } from "../../utils/HTMLVideoElement/observable";
4
4
  import type { IDashURLSource } from "../../../player/types";
5
5
  export declare enum LiveStatus {
6
6
  ActiveLowLatency = "active_low_latency",
@@ -16,7 +16,7 @@ export declare enum LiveStreamStatus {
16
16
  export interface IProviderSubscriptionInfo {
17
17
  output: IProviderOutput;
18
18
  desiredState: IDesiredState;
19
- observableVideo: IObservableVideo;
19
+ observableVideo: IObservableMediaElement;
20
20
  genericErrorListener: (error: Error | unknown) => void;
21
21
  connect: <Value>(from: IObservable<Value>, to: ISubject<Value> | IValueSubject<Value> | ((v: Value) => void)) => void;
22
22
  }
@@ -3,7 +3,7 @@ import type { IProviderSubscriptionInfo } from "./lib/types";
3
3
  import { ProviderState } from "./lib/types";
4
4
  import type { Representation, Stream } from "../utils/parsers/types";
5
5
  import type { IProvider, IProviderAllocationResolution, IProviderParams } from "../types";
6
- import type { IObservableVideo } from "../utils/HTMLVideoElement/observable";
6
+ import type { IObservableMediaElement } from "../utils/HTMLVideoElement/observable";
7
7
  import type { IStateMachine } from "../../utils/StateMachine/types";
8
8
  import type { ExactVideoQuality, ISubscription, ITracer, Milliseconds, Nullable } from "@vkontakte/videoplayer-shared";
9
9
  import DroppedFramesManager from "../utils/HTMLVideoElement/DroppedFramesManager";
@@ -23,7 +23,7 @@ export default abstract class BaseDashProvider implements IProvider {
23
23
  protected volumeSubscription: ISubscription;
24
24
  protected videoState: IStateMachine<ProviderState>;
25
25
  protected readonly allocation: IProviderAllocationResolution;
26
- protected observableVideo: IObservableVideo | null;
26
+ protected observableVideo: IObservableMediaElement | null;
27
27
  protected player: BasePlayer;
28
28
  protected params: IParams;
29
29
  protected tracer: ITracer;
@@ -1,6 +1,6 @@
1
1
  import type { IObservable, ISubject, IValueSubject } from "@vkontakte/videoplayer-shared";
2
2
  import type { IDesiredState, IProviderOutput, IProviderParams } from "../../types";
3
- import type { IObservableVideo } from "../../utils/HTMLVideoElement/observable";
3
+ import type { IObservableMediaElement } from "../../utils/HTMLVideoElement/observable";
4
4
  import type { IDashURLSource } from "../../../player/types";
5
5
  export declare enum LiveStatus {
6
6
  ActiveLowLatency = "active_low_latency",
@@ -16,7 +16,7 @@ export declare enum LiveStreamStatus {
16
16
  export interface IProviderSubscriptionInfo {
17
17
  output: IProviderOutput;
18
18
  desiredState: IDesiredState;
19
- observableVideo: IObservableVideo;
19
+ observableVideo: IObservableMediaElement;
20
20
  genericErrorListener: (error: Error | unknown) => void;
21
21
  connect: <Value>(from: IObservable<Value>, to: ISubject<Value> | IValueSubject<Value> | ((v: Value) => void)) => void;
22
22
  }
@@ -12,8 +12,6 @@ export type ManifestUrl = {
12
12
  bandwidth?: Kbps;
13
13
  size?: IRectangle;
14
14
  fps?: number;
15
- /** HLS fMP4: идентификатор аудио-группы (EXT-X-MEDIA GROUP-ID), к которой привязан вариант через STREAM-INF AUDIO= */
16
- audioGroupId?: string;
17
15
  };
18
16
  export type HLSManifestData = {
19
17
  qualityManifests: ManifestUrl[];
@@ -1,13 +1,13 @@
1
1
  import type { IObservable, ITracer, IValueSubject, Milliseconds } from "@vkontakte/videoplayer-shared";
2
2
  import type { ITuningConfig } from "../../../../utils/tuningConfig";
3
3
  import type { IVideoTrack } from "../../../../player/types";
4
- import type { IObservableVideo } from "../../HTMLVideoElement/observable";
4
+ import type { IObservableMediaElement } from "../../HTMLVideoElement/observable";
5
5
  interface IConnectData {
6
6
  videoLastDataObtainedTimestamp$: IValueSubject<Milliseconds>;
7
7
  lastVideoTrackSelected$: IValueSubject<IVideoTrack | undefined>;
8
8
  rtt$: IValueSubject<Milliseconds>;
9
9
  isSeeked$: IObservable<boolean>;
10
- observableVideo: IObservableVideo;
10
+ observableVideo: IObservableMediaElement;
11
11
  currentStallDuration$: IValueSubject<Milliseconds>;
12
12
  tuning: ITuningConfig["stallsManager"];
13
13
  tracer: ITracer;
@@ -3,7 +3,7 @@ import type { Byte, IComponentLogger, IObservable, IRectangle, ITracer, IValueSu
3
3
  import type { ITuningConfig } from "../../../utils/tuningConfig";
4
4
  import type { Representation, Segment } from "../parsers/types";
5
5
  import type { ElementSizeManager } from "../HTMLVideoElement/ElementSizeManager";
6
- import type { IObservableVideo } from "../HTMLVideoElement/observable";
6
+ import type { IObservableMediaElement } from "../HTMLVideoElement/observable";
7
7
  import type { AbrPhase } from "./controllers/abrPhaseController";
8
8
  export declare enum RuleConfidence {
9
9
  Low = 0,
@@ -61,7 +61,7 @@ export interface IInitAbrManagerContext {
61
61
  panelSize?: IRectangle;
62
62
  }
63
63
  export interface IVideoElementAbrManagerContext {
64
- observableVideo: IObservableVideo;
64
+ observableVideo: IObservableMediaElement;
65
65
  elementVisible$: IValueSubject<boolean>;
66
66
  elementSizeManager?: ElementSizeManager;
67
67
  }
@@ -1,8 +1,8 @@
1
- import type { IObservableVideo } from "./observable";
1
+ import type { IObservableMediaElement } from "./observable";
2
2
  import type { IListener, IRectangle, ISubscription, IValueSubject } from "@vkontakte/videoplayer-shared";
3
3
  interface ConnectParams {
4
4
  video: HTMLVideoElement;
5
- observableVideo: IObservableVideo;
5
+ observableVideo: IObservableMediaElement;
6
6
  }
7
7
  export declare class ElementSizeManager {
8
8
  private readonly subscription;
@@ -1,6 +1,6 @@
1
1
  import type { Seconds, IRange, IObservable, IError, IValueObservable, Milliseconds } from "@vkontakte/videoplayer-shared";
2
2
  import type { IVolumeState, PlaybackRate } from "../../../player/types";
3
- export interface IObservableVideo {
3
+ export interface IObservableMediaElement {
4
4
  playing$: IObservable<undefined>;
5
5
  pause$: IObservable<undefined>;
6
6
  canplay$: IObservable<undefined>;
@@ -17,7 +17,7 @@ export interface IObservableVideo {
17
17
  loadedMetadata$: IObservable<undefined>;
18
18
  loadedData$: IObservable<undefined>;
19
19
  isBuffering$: IObservable<boolean>;
20
- currentVideoBuffer$: IObservable<IRange<Seconds>>;
20
+ currentBuffer$: IObservable<IRange<Seconds>>;
21
21
  totalBufferDuration$: IObservable<Milliseconds>;
22
22
  bufferRangeCount$: IObservable<number>;
23
23
  volumeState$: IObservable<IVolumeState>;
@@ -28,4 +28,4 @@ export interface IObservableVideo {
28
28
  leavePip$: IObservable<PictureInPictureEvent>;
29
29
  destroy: () => void;
30
30
  }
31
- export declare const observe: (video: HTMLMediaElement) => IObservableVideo;
31
+ export declare const observe: (video: HTMLMediaElement) => IObservableMediaElement;
@@ -1,11 +1,11 @@
1
1
  import type { ISubscription, IValueSubject } from "@vkontakte/videoplayer-shared";
2
2
  import type { IDesiredState } from "../types";
3
- import type { IObservableVideo } from "./HTMLVideoElement/observable";
3
+ import type { IObservableMediaElement } from "./HTMLVideoElement/observable";
4
4
  type Params = {
5
5
  subscription: ISubscription;
6
6
  desiredState: IDesiredState;
7
7
  videoElement$: IValueSubject<HTMLVideoElement | undefined>;
8
- observableVideo: IObservableVideo;
8
+ observableVideo: IObservableMediaElement;
9
9
  };
10
10
  /**
11
11
  * Когда сафари из за медиа политик отключает звук у видео, и пользователь возвращает звук
@@ -1,12 +0,0 @@
1
- import type { ManifestUrl } from "../HlsProvider/manifestDataExtractor";
2
- export declare const FMP4_QUALITY_QUERY_PARAMS: readonly ["mq", "lq"];
3
- /**
4
- * HLS fMP4: дочерний плейлист варианта не содержит EXT-X-MEDIA групп, поэтому нативный HLS
5
- * не знает какую аудио-группу подцепить и продолжает держать предыдущую — звук пропадает при
6
- * смене качества. Решение — грузить мастер-плейлист с зафиксированным качеством через
7
- * mq=lq=<height>, тогда бэк сам отдаст нужный вариант с правильной аудио-группой.
8
- *
9
- * Возвращает undefined, если у варианта нельзя надёжно определить высоту — в этом случае
10
- * лучше оставить дефолтное поведение провайдера, чем отправлять мусор в URL.
11
- */
12
- export declare const buildFmp4MasterUrl: (masterUrl: string, qualityManifest: ManifestUrl) => URL | undefined;