cacheLocalResources и несколько screen sharing

Здравствуйте,
Используем Flashphoner web sdk 0.5.28.2747-aa2ef6a80231cf173f08a39aef5f1e298a7b3078 для веб-конференций. Для каждого нового стрима создается новая сессия Flashphoner.createSession, в которой затем создается стрим session.createStream. При создании таким образом нескольких screen sharing стримов одного и того же экрана/окна/вкладки chrome(обычно с разными разрешениями/fps) и cacheLocalResources: false наблюдаем отключение всех стримов при отключении только одного из них. Если создавать несколько screen sharing всегда разных экранов/окон/вкладок chrome, то проблемы при остановке не наблюдается. Это ожидаемое поведение web sdk ?
cacheLocalResources: false используем для того, чтобы выключалась камера после окончания стрима.
 

Max

Administrator
Staff member
Здравствуйте.
Это ожидаемое поведение web sdk ?
Это скорее поведение, которое не приходилось тестировать, т.к. изначально предполагался только один стрим экрана.
При создании таким образом нескольких screen sharing стримов одного и того же экрана/окна/вкладки chrome(обычно с разными разрешениями/fps)
Какая цель создания нескольких стримов с одного окна? Дать зрителям разные битрейты?
cacheLocalResources: false используем для того, чтобы выключалась камера после окончания стрима.
Для этого можно использовать метод releaseLocalMedia
https://github.com/flashphoner/flashphoner_client/blob/wcs_api-2.0/src/flashphoner-core.js#L326
Пример
Code:
Flashphoner.releaseLocalMedia(localVideoElement,'WebRTC');
Проверим этот кейс у себя. После этого возможно получится что-то посоветовать.
 
Здравствуйте.
Какая цель создания нескольких стримов с одного окна? Дать зрителям разные битрейты?
Дать спикеру независимые с точки зрения веб-приложения потоки для скриншаринга зрителям, стриминга на FB и/или YT и записи экрана/окна/вкладки.
 
Для этого можно использовать метод releaseLocalMedia
https://github.com/flashphoner/flashphoner_client/blob/wcs_api-2.0/src/flashphoner-core.js#L326
Пример
Code:
Flashphoner.releaseLocalMedia(localVideoElement,'WebRTC');
Я так понимаю, releaseLocalMedia нужен только для потоков с камеры и/или микрофона, которые были созданы с cacheLocalResources: true , а для screen sharing releaseLocalMedia не нужен независимо от cacheLocalResources?
 

Max

Administrator
Staff member
Chrome при остановке видео дорожки останавливает все остальные видео дорожки у которых источник один и тот же (экран/окно/вкладка). Внутри WebSDK дорожка при cacheLocalResources=false автоматически останавливается. Поэтому наблюдается такое поведение.

Flashphoner.releaseLocalMedia() - метод созданный для "ручного" освобождения дорожек и используется с cacheLocalResources=true. Останавливает камеру/микрофон/экран.

Подготовили пример в котором проблема отработана путем кеширования дорожек по источнику видео и последующей их остановке с последним стримом использующим этот источник.

Code:
//see if someone using this source
                if (countDisplaysWithVideoLabel(label) > 1) {
                    //save track to stop it later
                    pushTrack(track);
                    //remove srcObject
                    video.srcObject = null;
                } else {
                    //last active track with this label, get tracks from cache and stop
                    var tracks = popTracks(track);
                    for (var i = 0; i < tracks.length; i++) {
                        tracks[i].stop();
                    }
                }
                //release resources
                Flashphoner.releaseLocalMedia(streamVideoDisplay);
https://wcs5-eu.flashphoner.com/cli...creen-sharing/screen-sharing-same-source.html
 

Attachments

Top