Зависание микшированного потока

Добрый день. С толкнулись с проблемой, что у зрителя зависает микшированный поток, если ведущий у себя перезагружает вкладку. После перезагрузки страницы у зрителя поток возобновляется
 

Max

Administrator
Staff member
Добрый день.
Прежде всего, обращаем Ваше внимание, что для указанных параметров микшера:
Code:
mixer_type=MULTI_THREADED_NATIVE
mixer_mcu_multithreaded_mix=true
mixer_audio_threads=10
mixer_video_threads=4
mixer_mcu_multithreaded_delivery=true
mixer_video_bitrate_kbps=4000
mixer_video_height=1080
mixer_video_width=1920
конфигурация оборудования выглядит слишком слабой: 2 виртуальных ядра CPU и 2 Gb Java heap недостаточно, что может приводить к фризам и артефактам в микшере.
Рекомендуем для микширования с такими параметрами минимум 4 ядра CPU и 8 Gb Java heap, при условии. что микшер будет всегда один на сервере.
По логам видно, что микшер останавливается по REST API /mixer/terminate и создается заново по /mixer/create при каждом входе ведущего. Также есть остановки микшера по /mixer/terminate при закрытии сессии (возможно, сессия ведущего).
В этом случае зрителю необходимо переподключиться к потоку микшера, даже если поток создается с тем же самым именем. Рекомендуем проверить Ваш flow и при необходимости скорректировать его.
 
По поводу конфигурации, это экземпляр, использующийся для разработки. В данном случае на нём просто воспроизводили проблему. А поведение такое появилось после обновления с версии 940 до 1002. То есть при прочих равных, на версии 1002 поток зависает при перезагрузке страницы ведущего, а на версии 940 -нет.
 

Max

Administrator
Staff member
По поводу конфигурации, это экземпляр, использующийся для разработки. В данном случае на нём просто воспроизводили проблему.
В таком случае нужно использовать сервер, идентичный по конфигурации тому, на котором воспроизводится проблема. Сейчас выглядит так, что микшер может давать фризы из-за нехватки процессора или памяти (полный цикл сборки мусора проходит каждые 10 секунд).
А поведение такое появилось после обновления с версии 940 до 1002. То есть при прочих равных, на версии 1002 поток зависает при перезагрузке страницы ведущего, а на версии 940 -нет.
В наших тестах проблема не воспроизводится на 5.2.1002 по следующему сценарию:
1) Создаем микшер по REST API /mixer/startup
2) Публикуем WebRTC поток в примере Two Way Streaming, добавляем его в микшер по /mixer/add
3) Играем выходной поток микшера в примере Player
4) Обновляем страницу примера Two Way Streaming
5) В примере Player видим черный экран
6) Повторяем п 2
7) В примере Player играет выходной поток микшера
Если между пп 5 и 6 пройдет более 60 секунд, в примере Player прекращается воспроизведение с ошибкой "Stopped by publisher stop"
В Ваших логах видно, что при перезагрузке страницы и последующей публикации потока, перед его добавлением в микшер микшер останавливается по /mixer/terminate и стартует заново по /mixer/startup.Скорее всего, запрос приходит с бэкенда. Пожалуйста, проверьте бэкенд.
Также просим проверить, воспроизводится ли проблема по описанному нами сценарию в примерах WebSDK, поставляемых c WCS. Если не воспроизводится, проблема может быть в Вашем сочетании фронта и бэкенда. В этом случае предоставьте доступы по SSH к серверу и доступы к фронтенду для публикации и просмотра потоков при помощи этой формы, чтобы мы могли воспроизвести проблему. Также необходима пошаговая инструкция воспроизведения проблемы.
 
Приложил инструкцию и доступы ssh
На самой платформе регистрация свободная
Шаги воспроизведения:
1)Ведущий и зритель регистрируются в системе
2)Ведущий создаёт сессию и начинает трансляцию
3)Зритель подключается и смотрит
4)Ведущий перезагружает у себя страницу
Ожидание:
После перезагрузки страницы ведущего у зрителя возобновляется трансляция (так это работает на версии 940 и как выяснили на версии 969)
Реальность:
Поток у зрителя зависает и приходится перезагружать страницу уже зрителю(так происходит на версии 1002)
 

Max

Administrator
Staff member
Проверили Ваш клиент с Вашими серверами.
Видно две проблемы:
1) Принудительный транскодинг в VP8 на Edge для проигрывания, даже если браузер поддерживает H264. Эта проблема больше относится к нагрузке на Edge, которую мы обсуждали в этом топике.
2) Последовательность событий при обновлении страницы ведущего выглядит так:
- публикация его потока останавливается, вебсокет сессия закрывается, микшер остается активным
- создается новая вебсокет сессиия, поток ведущего публикуется с тем же именем
- приходит запрос REST API /mixer/terminate, микшер останавливается
- приходит запрос REST API /mixer/startup, микшер создается с тем же именем
- бэкенд присылает запрос playStream на Edge, Edge забирает стрим с Origin
- вебсокет сессия с именем стрима остается активной на клиенте зрителя, но запрос playStream c клиента зрителя в эту сессию не уходит, video элемент остается активным (поэтому и кажется, что поток фризит)
На скриншоте пример начала вебсокет сессии клиента зрителя
1628048578623.png

После перезапуска микшера с клиента зрителя должен быть еще один запрос playStream, а его нет
Таким образом, проблема только во фронте. Посмотрите, пожалуйста, пример автоматического возобновления проигрывания стрима.
 
Top