Добрый день.
Возможная причина в Вашей последовательности операций (flow). По логам (в том числе и предоставленным ранее) она выглядит так:
1. Ведущий публикует поток
2. По REST API /mixer/startup создается микшер
3. По REST API /mixer/add поток ведущего добавляется в микшер
4. К потоку микшера подключаются зрители
5. Ведущий останавливает поток
6. Микшер останавливается по REST API /mixer/terminate
7. Зрители отключаются от потока микшера в связи с остановкой его публикации
При разрыве соединения по Websocket timeout с клиентом ведущего (это может быть при обновлении страницы, но чаще при плохом канале), микшер не останавливается по REST API, но останавливается по таймауту mixer_idle_timeout
, который выставлен в 60 секунд. Все это время зрители видят черный экран, т.к. других потоков в микшере нет.
Еще один часто встречающийся вариант: при разрыве Websocket соединения клиентом ведущего (это может быть при обновлении страницы), поток ведущего выпадает из микшера в связи с остановкой публикации, но запрос /mixer/terminate для этого микшера приходит позднее (задержка по логам составляет около 20 секунд). Все это время зрители не отключаются от потока микшера и видят черный экран, хотя ведущий опубликовал новый поток.
Также отметим, что для каждого нового потока ведущего создается новый микшер, и зрители каким-то образом получают имя потока микшера для подключения. Возможно, здесь также присутствует задержка.
Рекомендуем обратить внимание на работу бэкенда, который управляет REST API и обеспечивает сигналинг для зрителей.