Отключать пустые трансляции

inpost

Member
Здравствуйте.
Редко и тяжело словить ситуацию, но жалобы есть от пользователей и я тоже подобное видел: просто пустое видео. Если включить воспроизведение, оно в итоге не включается, никак не реагирует, но при этом "rest-api/stream/find" показывает, что стрим идёт. Такое чувство, что там пустой поток, или как-то так.

Интуиция подсказывает, да и раньше, когда пользовался другим видео-сервером, проблема такая происходила, когда пользователь запускал трансляцию в одном браузере на одном сайте, а потом на другом сайте из другого браузера тоже запускал трансляцию. Происходил конфликт доступа к камере и в какой-то момент трансляция оставалась висеть, хотя просмотреть её нельзя.

Может быть можно как-то проверять работает ли трансляция, и если нет - просто отключать её? Чтобы не висели пустые трансляции.
Если нужно собрать какие-то логи дополнительно, то скажите. Я написал вам сразу, так как подумал, что, возможно, вы уже сталкивались с подобным ранее и, может быть, уже есть какой-то конфиг на этот случай.
 

pride

Member
Так же интересует решение этой проблемы.
из 60 ти публикующих 2 обязательно пустые. Хотя клиенты видят своё видео в браузере.
Корни данной проблемы так и не выявлены, так как не удается искусственно воспроизвести проблему.
 

Max

Administrator
Staff member
Если известен IP подключения, можно включить для него отладку.
Code:
/rest-api/logger/enable_client_log
В режиме отладки будет прологгировано данное конкретное подключение.
В WCS_HOME/logs/client_logs будет создана папка.
Пришлите пожалуйста архив с логами. Тогда сможем назавать точную причину почему нет видео.
Либо не приходит трафик, либо приходит, но битый. По логам должно быть видно в чем именно проблема.
 

Max

Administrator
Staff member
Относительно отключения пустых трансляций.
Сейчас есть:
Code:
rtp_activity_detecting=true,60
rtp_activity_video=true
Т.е. если нет видео трафика в течение 60 секунд, трансляция будет автоматически завершена.

Похоже в вашем случае видео трафик есть, но по каким-то причинам видео не играет.
Это можно выяснить если поставить подключение на отладку.
 

inpost

Member
Вызвал: /rest-api/logger/enable_client_log
Получил ответ: string(83) "HTTP/1.1 200 OK Access-Control-Allow-Origin: * Content-Type: application/json ". 200 - значит включен лог.

Доп. папки не было создано, есть стандартные папки на каждый день. Заглянул в 2018-11-28, там ого-го сколько файлов, может стоило как-то логирование переключить, настроить. В общем подождал минут 10 минут ДВУХ работающих битых трансляции и скинул вам логи.

Я пообщался с пользователями, как раз подтверждают они, что транслируют камеру с браузера на несколько сайтов (и разные браузеры) без всяких SplitCam для этих целей. Тут происходит конфликт между браузерами и сайтами, каждый тянет на себя, из-за этого потом или пустой, или не полный и начинаются проблемы.
 

Max

Administrator
Staff member
Сообщите, пожалуйста, mediaSessionId этих трансляций.
 

Max

Administrator
Staff member
Заглянул в 2018-11-28, там ого-го сколько файлов
1. В продакшене клиентские логи нужно отключать, т.к. они влияют на производительность и качество.
Code:
enable_extended_logging=false
В этом случае не должны создаваться папки в WCS_HOME/client_log
Тогда будет легче найти те сессии, которые поставили на отладку.

2. Этот метод вызывается через REST API и ему передается sessionId (IP адрес)
/rest-api/logger/enable_client_log
Сообщите пожалуйста sessionId, который вы поставили на отладку, чтобы мы могли найти именно эту сессию в логах.
 

inpost

Member
В письме я указал sessionId двух трансляций трансляций (в тексте письма).
Сегодня отключу клиентские логи, но более чистые логи смогу отправить уже только завтра, если повезёт, когда поймаю подобную трансляцию.
 

Max

Administrator
Staff member
Тут происходит конфликт между браузерами и сайтами, каждый тянет на себя, из-за этого потом или пустой, или не полный и начинаются проблемы.
Насколько нам известно, браузеры ведут себя по разному, в случае если камера занята другой программой.
Например, Firefox кидает ошибку и не дает продолжать.
Chrome не дает ошибку и ничего не показывает, может просто отдавать черный экран.
Обычно у пользователя есть превью, в котором он видит свое изображение и если бы оно было черным, пользователь остановил бы трансляцию.
Мы перепроверим как ведет себя хром и посмотрим что можно сделать чтобы определять такие случаи, если Chrome действительно шлет пустой видеотрафик.
WCS-1639
 

Max

Administrator
Staff member
Добрый день.
Действительно, Chrome может посылать пустой видеотрафик, если камера занята другим приложением. Периодически эту ошибку исправляют, затем она вновь возникает. Есть два варианта обхода этой ошибки:
1. Видеодорожка, созданная браузером Chrome для занятой камеры, останавливается в пределах первой секунды публикации, затем поток публикуется уже без видео. При этом состояние видеодорожки (переменная readyState) меняется на ended, и генерируется соответствующее событие onended, которое можно перехватить в скрипте. Мы описали в документации подробно, какие изменения нужно внести в код публикующего скрипта.
2. В сборке 5.1.3673 мы добавили настройку rtp_activity_video, чтобы контролировать активность видеодорожки в публикуемом потоке. Данную настройку нужно использовать совместно с rtp_activity_detecting
Code:
rtp_activity_detecting=true,60
rtp_activity_video=true
В этом случае, если в публикуемом потоке нет видео, публикация остановится через 60 секунд.
 
Top