@vkontakte/videoplayer-core 2.0.180 → 2.0.181-dev.05b016920.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/es2015.cjs +17 -17
- package/es2015.esm.js +17 -17
- package/esnext.cjs +16 -16
- package/esnext.esm.js +16 -16
- package/evergreen.esm.js +16 -16
- package/package.json +2 -2
- package/types/index.d.ts +2 -2
- package/types/player/Player.d.ts +1 -2
- package/types/player/types.d.ts +6 -10
- package/types/providers/DashProvider/baseDashProvider.d.ts +1 -1
- package/types/providers/DashProvider/lib/buffer.d.ts +28 -3
- package/types/providers/DashProvider/lib/fetcher.d.ts +31 -6
- package/types/providers/DashProvider/lib/player.d.ts +2 -0
- package/types/providers/DashProviderVirtual/baseDashProvider.d.ts +1 -1
- package/types/providers/DashProviderVirtual/lib/buffer/types.d.ts +1 -0
- package/types/providers/DashProviderVirtual/lib/buffer/virtualBuffer/baseVirtualBufferManager.d.ts +7 -3
- package/types/providers/DashProviderVirtual/lib/fetcher.d.ts +30 -6
- package/types/providers/DashProviderVirtual/lib/player/basePlayer.d.ts +1 -0
- package/types/providers/DashProviderVirtual/lib/player/types.d.ts +2 -1
- package/types/providers/types.d.ts +1 -3
- package/types/providers/utils/Abr/rules/video/stallsRule.d.ts +9 -11
- package/types/providers/utils/StallsManager.d.ts +1 -8
- package/types/providers/utils/TextTrackManager.d.ts +16 -0
- package/types/utils/ThroughputEstimator.d.ts +20 -4
- package/types/utils/buffer/isPositionBuffered.d.ts +1 -0
- package/types/utils/tuningConfig.d.ts +47 -21
- package/types/providers/utils/HTMLVideoElement/TextTrackManager.d.ts +0 -32
- package/types/utils/setStateWithSubscribe.d.ts +0 -6
|
@@ -42,6 +42,15 @@ export type ITuningConfig = {
|
|
|
42
42
|
initialThroughput: Kbps;
|
|
43
43
|
measureNonSegmentRequests: boolean;
|
|
44
44
|
smallSampleMinDuration: Milliseconds;
|
|
45
|
+
/**
|
|
46
|
+
* Верхняя граница скорости одного замера (Кбпс), выше которой sanityCheck его
|
|
47
|
+
* отбрасывает: такую полосу не даёт пользовательский канал — это кэш CDN/браузера,
|
|
48
|
+
* отдавший объект практически мгновенно. Дефолт 1 000 000 Кбит/с унаследован из
|
|
49
|
+
* хардкода sanityCheck до этого поля. Поднимается в e2e (UVP-11954): CI-раннеры
|
|
50
|
+
* стоят в одном ДЦ с CDN и качают сегменты быстрее гигабита — с дефолтным лимитом
|
|
51
|
+
* все замеры режутся и хостовая запись кеша не появляется.
|
|
52
|
+
*/
|
|
53
|
+
maxSampleRate: Kbps;
|
|
45
54
|
cacheThresholdSize: Milliseconds;
|
|
46
55
|
/**
|
|
47
56
|
* UVP-11541: верхняя граница порога, ниже которого ответ считается кэш-хитом по TTFB.
|
|
@@ -71,7 +80,7 @@ export type ITuningConfig = {
|
|
|
71
80
|
* мелкий сегмент качается параллельно с аудио и другого замера не получает.
|
|
72
81
|
* Параллельной считается загрузка, отдававшая байты внутри окна замера: открытая,
|
|
73
82
|
* но молчащая (подвисла либо уже выкачала своё и ждёт done) полосу не занимает.
|
|
74
|
-
* Честный кэш (мгновенная отдача
|
|
83
|
+
* Честный кэш (мгновенная отдача — скорость замера выше maxSampleRate) по-прежнему режется.
|
|
75
84
|
*
|
|
76
85
|
* Пункты 3 и 4 добавлены после эксперимента 37621: без них включённые быстрые сэмплы
|
|
77
86
|
* систематически занижали оценку, ABR держал низкое качество и сегменты оставались
|
|
@@ -90,23 +99,41 @@ export type ITuningConfig = {
|
|
|
90
99
|
maxLastEvaluationTimeout: Milliseconds;
|
|
91
100
|
};
|
|
92
101
|
/**
|
|
93
|
-
*
|
|
94
|
-
* При включении: если сохранённое значение старше storedThroughputTtlMs
|
|
95
|
-
* или тип сети изменился (Wi-Fi→3G) — значение отбрасывается.
|
|
96
|
-
* Предотвращает старт в 4K при переходе с Wi-Fi на мобильную сеть.
|
|
102
|
+
* UVP-11954: кеш оценки сети с разрезом по хосту раздачи (CDN).
|
|
97
103
|
*
|
|
98
|
-
* При
|
|
99
|
-
*
|
|
100
|
-
*
|
|
104
|
+
* При включении: ключи vk_uvp_throughput / vk_uvp_rtt хранят JSON
|
|
105
|
+
* {"hosts":{"<host>":{"value","timestamp","networkType"?}}} — чтение только
|
|
106
|
+
* записи текущего хоста (TTL + совпадение networkType), промах = холодный старт
|
|
107
|
+
* (browser estimation, затем initialThroughput). Запись — hosts-only, без общей
|
|
108
|
+
* записи; набор хостов ограничен LRU по hostsLimit. Чтение отложено до
|
|
109
|
+
* первого события адаптации: определённая эмиссия hostname$ или первый замер.
|
|
101
110
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
111
|
+
cdnCache: {
|
|
112
|
+
/**
|
|
113
|
+
* Гейт всех изменений UVP-11954. При false (дефолт): бит-в-бит прежнее
|
|
114
|
+
* поведение — plain number в legacy-ключах one_video_*; ключи vk_uvp_*
|
|
115
|
+
* не читаются и не пишутся. Это даёт безопасный rollback JS-версии
|
|
116
|
+
* без потери свежих данных для старого кода.
|
|
117
|
+
*/
|
|
118
|
+
enabled: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Срок жизни каждой хостовой записи кеша (мс). По умолчанию 4 часа.
|
|
121
|
+
* Запись старше TTL при чтении отбрасывается — холодный старт.
|
|
122
|
+
* Применимо только при cdnCache.enabled=true.
|
|
123
|
+
*/
|
|
124
|
+
ttlMs: Milliseconds;
|
|
125
|
+
/**
|
|
126
|
+
* Предел числа хостовых записей в hosts (UVP-11954). При превышении при записи
|
|
127
|
+
* вытесняется запись с наименьшим timestamp (не считая текущего хоста).
|
|
128
|
+
* Протухшие по TTL записи уходят первыми — отдельной чистки нет.
|
|
129
|
+
* 10: ключ кеша — хост раздачи, а балансировщик video.get выдаёт хост
|
|
130
|
+
* при каждой загрузке видео и не гарантирует повтор предыдущего. За TTL
|
|
131
|
+
* активный пользователь может собрать записи по нескольким хостам —
|
|
132
|
+
* 10 покрывает это с запасом при ~100 Б на запись, ~1 КБ на набор из 10.
|
|
133
|
+
* Применимо только при cdnCache.enabled=true.
|
|
134
|
+
*/
|
|
135
|
+
hostsLimit: number;
|
|
136
|
+
};
|
|
110
137
|
};
|
|
111
138
|
autoTrackSelection: {
|
|
112
139
|
bitrateFactorAtEmptyBuffer: number;
|
|
@@ -143,7 +170,6 @@ export type ITuningConfig = {
|
|
|
143
170
|
enabled: boolean;
|
|
144
171
|
ignoreDynamicAbrForShortVideo: boolean;
|
|
145
172
|
stallDurationNoDataBeforeQualityDecrease: Milliseconds;
|
|
146
|
-
stallDurationToBeCount: Milliseconds;
|
|
147
173
|
stallCountBeforeQualityDecrease: Milliseconds;
|
|
148
174
|
resetQualityRestrictionTimeout: Milliseconds;
|
|
149
175
|
ignoreStallsOnSeek: boolean;
|
|
@@ -283,6 +309,7 @@ export type ITuningConfig = {
|
|
|
283
309
|
* дешевле замершего воспроизведения.
|
|
284
310
|
*/
|
|
285
311
|
recoverStuckSegmentLoading: boolean;
|
|
312
|
+
skipReloadOfFullyBufferedPartiallyEjectedSegments: boolean;
|
|
286
313
|
};
|
|
287
314
|
dashCmafLive: {
|
|
288
315
|
externalStopControl: boolean;
|
|
@@ -373,10 +400,10 @@ export type ITuningConfig = {
|
|
|
373
400
|
*/
|
|
374
401
|
stallIgnoreThreshold: Milliseconds;
|
|
375
402
|
/**
|
|
376
|
-
* Стратегия записи
|
|
403
|
+
* Стратегия записи stall
|
|
377
404
|
* verbose - записываем всё
|
|
378
|
-
* exclude-threshold - записываем
|
|
379
|
-
* include-threshold - записываем
|
|
405
|
+
* exclude-threshold - записываем stall длиннее stallIgnoreThreshold, но вычитаем длину stallIgnoreThreshold
|
|
406
|
+
* include-threshold - записываем stall длиннее stallIgnoreThreshold
|
|
380
407
|
*/
|
|
381
408
|
stallHandlingStrategy: "verbose" | "exclude-threshold" | "include-threshold";
|
|
382
409
|
stallIgnoreOnPause: boolean;
|
|
@@ -385,7 +412,6 @@ export type ITuningConfig = {
|
|
|
385
412
|
/** @deprecated HLS.js удалён, флаг ничего не делает */
|
|
386
413
|
useHlsJs: boolean;
|
|
387
414
|
disableHlsOnDesktop: boolean;
|
|
388
|
-
useNativeHLSTextTracks: boolean;
|
|
389
415
|
useNewSwitchTo: boolean;
|
|
390
416
|
alwaysAbortPreviousSwitch: boolean;
|
|
391
417
|
useDashProviderVirtual: boolean;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { IExternalTextTrack, IInternalTextTrack, ITextTrack } from "../../../player/types";
|
|
2
|
-
import type { IDesiredState, IProviderOutput } from "../../types";
|
|
3
|
-
/**
|
|
4
|
-
* TODO: сейчас externalTextTracks и internalTextTracks записываются в availableTextTracks отсюда
|
|
5
|
-
* нужно будет выпилить этот класс за исключением этой логики,
|
|
6
|
-
* когда перестанет быть необходима поддержка браузерных субтитров
|
|
7
|
-
*/
|
|
8
|
-
declare class TextTrackManager {
|
|
9
|
-
private available$;
|
|
10
|
-
private current$;
|
|
11
|
-
private error$;
|
|
12
|
-
private video;
|
|
13
|
-
private cueSettings;
|
|
14
|
-
private subscription;
|
|
15
|
-
private externalTracks;
|
|
16
|
-
private internalTracks;
|
|
17
|
-
private baseURL?;
|
|
18
|
-
constructor(baseURL?: string);
|
|
19
|
-
connect(video: HTMLVideoElement, desiredState: Pick<IDesiredState, "externalTextTracks" | "internalTextTracks" | "currentTextTrack" | "textTrackCuesSettings">, providerOutput: Pick<IProviderOutput, "availableTextTracks$" | "currentTextTrack$" | "error$">): void;
|
|
20
|
-
private subscribe;
|
|
21
|
-
private applyCueSettings;
|
|
22
|
-
private htmlTextTracksAsArray;
|
|
23
|
-
private htmlTextTrackToITextTrack;
|
|
24
|
-
private static isHealthyTrack;
|
|
25
|
-
setExternal(tracks: IExternalTextTrack[]): void;
|
|
26
|
-
setInternal(tracks: IInternalTextTrack[]): void;
|
|
27
|
-
select(selectedId: ITextTrack["id"] | undefined): void;
|
|
28
|
-
destroy(): void;
|
|
29
|
-
private attach;
|
|
30
|
-
private detach;
|
|
31
|
-
}
|
|
32
|
-
export default TextTrackManager;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { IValueSubject } from "@vkontakte/videoplayer-shared";
|
|
2
|
-
import type { IStateMachine } from "./StateMachine/types";
|
|
3
|
-
export declare const setStateWithSubscribe: <
|
|
4
|
-
State,
|
|
5
|
-
Value
|
|
6
|
-
>(nextState: State | undefined, currentState: IStateMachine<State | undefined>, availableValues: IValueSubject<Array<Value>> | undefined, predicate: (value: Value) => boolean) => void;
|