-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvideo_Bytes_sent_received.ts
75 lines (62 loc) · 3.39 KB
/
video_Bytes_sent_received.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Тут всё аналогично с аудио
// Это можно запустить в консоли для наглядности. Повключать/выключать камеру и посмотреть на сколько увеличивается значение
let localPC = janusPluginHandles[0].webrtcStuff.pc;
let remotePC = janusPluginHandles[1].webrtcStuff.pc;
let videoSender = localPC.getSenders().find(s => s.track.kind === 'video');
let audioSender = localPC.getSenders().find(s => s.track.kind === 'audio');
let videoReceiver = remotePC.getReceivers().find(s => s.track.kind === 'video');
let audioReceiver = remotePC.getReceivers().find(s => s.track.kind === 'audio');
let videoBytesSent = () =>
videoSender.getStats().then(stats => Array.from(stats.values())
.find(s => s.type === 'outbound-rtp')
.bytesSent)
let videoBytesReceived = () =>
videoReceiver.getStats().then(stats => Array.from(stats.values())
.find(s => s.type === 'inbound-rtp')
.bytesReceived)
let prevValue;
let f = setInterval(async () => {
let currentValue = await videoBytesSent();
let bytesInSec = currentValue - prevValue;
console.log("Всего байт отправлено: " + currentValue + "; Отправлено байт/сек: " + bytesInSec);
prevValue = currentValue;
}, 1000);
// И остановить
clearInterval(f);
// Примерный псевдокод теста
function test() {
// камера включена
browser1.cameraOn();
// собираем несколько значений из videoBytesSent, проверяем что разница текущего и предыдущего
// адекватная для видеопотока, например >10000
let videoBytesSentValues: number[];
setInterval(()=> {
videoBytesSentValues.push(videoBytesSent());
}, 1000);
browser1.isTrue(videoBytesSentValues[1] - videoBytesSentValues[0] > 10000);
browser1.isTrue(videoBytesSentValues[2] - videoBytesSentValues[1] > 10000);
// так же смотрим, что получает второй браузер
let videoBytesReceivedValues: number[];
setInterval(() => {
videoBytesReceivedValues.push(videoBytesReceived());
}, 1000);
browser2.isTrue(videoBytesReceivedValues[1] - videoBytesReceivedValues[0] > 10000);
browser2.isTrue(videoBytesReceivedValues[2] - videoBytesReceivedValues[1] > 10000);
// камера выключена
browser1.cameraOff();
// собираем несколько значений из videoBytesSent, проверяем что разница текущего и предыдущего
// очень маленькая, например <1000
let videoBytesSentValues: number[];
setInterval(() => {
videoBytesSentValues.push(videoBytesSent());
}, 1000);
browser1.isTrue(videoBytesSentValues[1] - videoBytesSentValues[0] < 1000);
browser1.isTrue(videoBytesSentValues[2] - videoBytesSentValues[1] < 1000);
// так же смотрим, что получает второй браузер
let videoBytesReceivedValues: number[];
setInterval(() => {
videoBytesReceivedValues.push(videoBytesReceived());
}, 1000);
browser2.isTrue(videoBytesReceivedValues[1] - videoBytesReceivedValues[0] < 1000);
browser2.isTrue(videoBytesReceivedValues[2] - videoBytesReceivedValues[1] < 1000);
}