...
Code Block |
---|
|
session.createStream({
name: streamName,
display: remoteVideo
...
}).on(STREAM_EVENT, function(streamEvent) {
switch (streamEvent.type) {
case STREAM_EVENT_TYPE.DATA:
console.log(JSON.stringify(streamEvent.payload));
break;
}
}).play(); |
Получение события, связанного со входящим потоком микшера
Начиная со сборки 5.2.966, подписчик, играющий выходной поток микшера, получает события, связанные с одним из входящих потоков микшера. При этом в объект payload
добавляется поле streamName
, чтобы показать, к какому именно потоку относится событие
Code Block |
---|
|
session.createStream({
name: streamName,
display: remoteVideo,
...
}).on(STREAM_EVENT, function(streamEvent) {
let mutedName="";
if(streamEvent.payload !== undefined) {
mutedName=streamEvent.payload.streamName;
}
switch (streamEvent.type) {
case STREAM_EVENT_TYPE.AUDIO_MUTED:
$("#audioMuted").text(true + " " + mutedName);
break;
case STREAM_EVENT_TYPE.AUDIO_UNMUTED:
$("#audioMuted").text(false + " " + mutedName);
break;
case STREAM_EVENT_TYPE.VIDEO_MUTED:
$("#videoMuted").text(true + " " + mutedName);
break;
case STREAM_EVENT_TYPE.VIDEO_UNMUTED:
$("#videoMuted").text(false + " " + mutedName);
break;
}
console.log("Received streamEvent ", streamEvent.type);
}).play(); |
Определение статуса потока при подключении к потоку
При подключении к потоку, подписчик может определить, заглушена аудио/видео дорожка в потоке или нет, при помощи методов Stream.getAudioState() и Stream.getVideoState() в обработчике события STREAM_STATUS.PLAYING:
Code Block |
---|
|
session.createStream({
name: streamName,
display: remoteVideo,
...
}).on(STREAM_STATUS.PLAYING, function (stream) {
if (stream.getAudioState()) {
$("#audioMuted").text(stream.getAudioState().muted);
}
if (stream.getVideoState()) {
$("#videoMuted").text(stream.getVideoState().muted);
}
...
}).play; |
Определение статусов входящих потоков при подключении к выходному потоку микшера
Начиная со сборки WCS 5.2.1011, при подключении подписчика к выходному потоку микшера, он получает набор событий STREAM_EVENT на каждый входящий поток микшера, если хотя бы в одном из них аудио или видео было заглушено. При этом порядок получения этих событий не гарантируется и не зависит от порядка добавления потоков в микшер.
Обработка события на бэкенде
Для того, чтобы обработать событие об изменении состояния потока на бэкенде, к приложению должны быть добавлены методы sendStreamEvent и SreamEventStreamEvent
Code Block |
---|
|
add app-rest-method MyAppKey sendStreamEvent
add app-rest-method MyAppKey StreamEvent |
...
Оповещение о заглушенном аудио/видео
Если аудио или видео было заглушено, бэкенд-сервер получит событие sendStreamEvent
Code Block |
---|
|
URL:http://localhost:8081/apps/EchoApp/sendStreamEvent
OBJECT:
{
"nodeId" : "qg4BeHzYSAtkhUkXgnSMEUZpsshaLPL5@192.168.0.39",
"appKey" : "defaultApp",
"sessionId" : "/192.168.0.83:64573/192.168.0.39:8443-a98bb891-aeaf-46a8-8fba-772e07ac035b",
"mediaSessionId" : "9906b2b0-9c28-11eb-8d20-75f877676678",
"type" : "audioMuted",
"origin" : "https://wcs:8888"
} |
Также бэкенд-сервер получит событие StreamEvent для каждого подписчика этого потока
Code Block |
---|
|
URL:http://localhost:8081/apps/EchoApp/StreamEvent
OBJECT:
{
"nodeId" : "qg4BeHzYSAtkhUkXgnSMEUZpsshaLPL5@192.168.0.39",
"appKey" : "defaultApp",
"sessionId" : "/192.168.0.83:64573/192.168.0.39:8443-a98bb891-aeaf-46a8-8fba-772e07ac035b",
"mediaSessionId" : "9fed5c50-9c28-11eb-8d20-75f877676678",
"type" : "audioMuted"
} |
Оповещение о данных, переданных подписчикам
Если подписчикам потока были отправлены данные со стороны публикующего клиента или с сервера, бэкенд-сервер получит событие sendStreamEvent
Code Block |
---|
|
URL:http://localhost:8081/apps/EchoApp/sendStreamEvent
OBJECT:
"info" : ""{
"nodeId" : "qg4BeHzYSAtkhUkXgnSMEUZpsshaLPL5@192.168.0.39",
"appKey" : "defaultApp",
"sessionId" : "/192.168.0.83:64573/192.168.0.39:8443-a98bb891-aeaf-46a8-8fba-772e07ac035b",
"mediaSessionId" : "9906b2b0-9c28-11eb-8d20-75f877676678",
"type" : "data",
"payload" : {
"count" : 23
},
"origin" : "https://wcs:8888"
} |
...
Также бэкенд-сервер получит событие StreamEvent для каждого подписчика этого потока
Code Block |
---|
|
URL:http://localhost:8081/apps/EchoApp/StreamEvent
OBJECT:
{
"nodeId" : "qg4BeHzYSAtkhUkXgnSMEUZpsshaLPL5@192.168.0.39",
"appKey" : "defaultApp",
"sessionId" : "/192.168.0.83:64573/192.168.0.39:8443-a98bb891-aeaf-46a8-8fba-772e07ac035b",
"mediaSessionId" : "9fed5c50-9c28-11eb-8d20-75f877676678",
"type" : "audioMuteddata",
"infopayload" : {
"count" : 23
}
} |