Рассыпается видео

Warmor

New Member
Добрый день, используем Flashphoner для организаций вебинаров. Но у некоторых пользователей видео рассыпается. Сделали настройки кач-ва стрима, но это не помогло. Воспроизводить локально проблему не получается.

функция публикации стрима
1587569820861.png


функция получения constraints
1587569839491.png


Варианты настроек
1587569857900.png

так же прикрепляю файл настроек сервера
(логи прикрепить не получилось) слишком много весят
 

Attachments

Max

Administrator
Staff member
Добрый день.

Видео рассыпается от пользователя, публикующего поток либо у отдельных зрителей, которые этот поток смотрят?

Если видео портит публикующий, то все зрители будут получать рассыпающуюся картинку.
Если видео портится при доставке зрителю, будут проблемы только у отдельных пользователей. У других зрителей картинка будет нормальной.

Если версия сервера позволяет, можно записать метрики как публикующего пользователя, так и отдельного зрителя.
Это можно сделать с помощью CLIv2

1. Зайти в CLI
Code:
ssh -p 2002 localhost
username: admin
password: admin
2. Найти mediaSessionId стрима. Это уникальный идентификатор стрима.
Code:
stream find-all
3. Включить запись метрик.
Code:
stream record-metrics-start --rate 5000 6c5c6130-43d5-11ea-a6d3-6d75c77a1030
В итоге должны записаться метрики качества стрима, потеряенные пакеты, битрейт, и т.д.
Запишите пожалуйста эти данные для проблемного публкующего стрима или зрителя и дайте текстовый файл.

Картинка может рассыпаться из-за потери UDP пакетов, из-за перегрузки сервера, и т.д. Как вариант, можете попробовать переключить стримы на TCP чтобы исключить потери. Документация по TCP здесь:

Кроме этого необходимо мониторить нагрузку на сервер и убедиться, что Garbage Collector работает нормально. Если снова будут проблемы с рассыпанием видео, пришлите пожалуйста лог logs/gc-core-log

Также можете отправить запрос на support@flashphoner.com с SSH доступом к серверу. Мы проверим конфигурацию и базовый тюнинг.
 
Last edited:

Warmor

New Member
Как мы поняли видео рассыпается именно при публикации, сервер в этот момент был нагружен примерно на 25%. Если проблемный поток снова обнаружится то логи запишем. По поводу ssh попробую решить в ближайшее время. А что на счёт настроек качества стрима за счёт уменьшения битрейта и фпс на клиенте? Это имеет смысл или принесет больше проблем?
 

Max

Administrator
Staff member
При публикации стрим может рассыпаться из-за резкого падения битрейта.

Например, Chrome браузер может решить, что не хватает полосы и опустить битрейт.
В результате, качество резко падает.

Другая причина - выпадение UDP пакетов из-за ограничений на канале.

И то и другое должно быть видно в записанных метриках или в сhrome://webrtc-internals

Если падает битрейт, можно выставить жесткую нижнюю и верхнюю планку:

Code:
webrtc_sdp_min_bitrate_bps=350000
webrtc_sdp_max_bitrate_bps=400000

Если большие потери на канале, то переключить на TCP.

А что на счёт настроек качества стрима за счёт уменьшения битрейта и фпс на клиенте? Это имеет смысл или принесет больше проблем?
Если проблема в падении битрейта, это не поможет. Наоборот, надо увеличивать битрейт и держать его стабильным.
Если проблема в потерях UDP, то да, уменьшение битрейта, FPS и разрешения может помочь снизить нагрузку на канал.
 

Max

Administrator
Staff member
Code:
2020-04-16T08:48:50.003+0300: 215072.798: [GC (CMS Final Remark) [YG occupancy: 1225463 K (2146944 K)]2020-04-16T08:48:50.003+0300: 215072.798: [Rescan (parallel) , 0.0476112 secs]2020-04-16T08:48:50.051+0300: 215072.846: [weak refs processing, 0.7326462 secs]2020-04-16T08:48:50.783+0300: 215073.578: [class unloading, 0.0381979 secs]2020-04-16T08:48:50.821+0300: 215073.617: [scrub symbol table, 0.0089288 secs]2020-04-16T08:48:50.830+0300: 215073.626: [scrub string table, 0.0011554 secs][1 CMS-remark: 45336616K(64723392K)] 46562080K(66870336K), 0.8418117 secs] [Times: user=1.69 sys=0.39, real=0.84 secs]
По логам "CMS Final Remark" видно как останавливается сервер.
Этот лог показывает остановку 0.84 сек. В о время остановки может падать качество и рассыпаться видео.

В рекомендациях по тюнингу из основных:
1. Выставить heap
2. Установить Java 12
3. Настроить ZGC сборщик мусора, который работает без пауз.

 

Warmor

New Member
Если бы были существенные проблемы из за сборщика мусора, то были бы постоянные жалобы. У нас одновременно запускаются около 100-150 стримов и 1000-1200 зрителей, и проблемы только у некоторых
 

Max

Administrator
Staff member
Добрый день.
Давайте подведем итоги по рекомендациям, которые следует выполнить.
Если артефакты наблюдаются у всех зрителей одного и того же потока, это означает проблемы с публикацией. Это можно проверить, если записать метрики потока, как Вам советовали в этом посте, или записать сам поток, как описано здесь
Если запись метрик показывает большие значения VIDEO_LOST, это означает потери на канале, поможет переключение клиента на TCP, снижение разрешения/битрейта трансляции.
Если запись метрик показывает падение битрейта видео (VIDEO_RATE), нужно установить жесткие границы битрейта для этого клиента, как описано здесь.
Пожалуйста, при следующем появлении проблемного потока включите для него вывод отладочных логов, как описано здесь, соберите отчет, как описано здесь, и отправьте на support@flashphoner.com
Если же проблемы наблюдаются у некоторых (но не у всех) зрителей, с разными потоками, можно переключить на TCP этих зрителей, либо снижать для них разрешение/битрейт, но это потребует транскодинга на сервере и соответствующих ресурсов. Пожалуйста, соберите отчет, как описано здесь, и отправьте на support@flashphoner.com, это поможет понять возможности сервера. Возможно, при таком количестве подписчиков целесообразно рассмотреть минимальную CDN 1 Origin + 2 Edge сервера.
 

Warmor

New Member
Хорошо, соберём логи и отправим на почту, как появится проблемный поток
 

Warmor

New Member
Экспериментировали с битретом, и получилось вот что: если совсем убрать ограничения на битрейт то видео перестаёт рассыпаться, но появляются зависания (если у публикующей стороны плохой интернет), если поставить настройки битрейта на минимум то потребление трафика снижается но переодически сыпется картинка (пробовали на 5-10 и 50-100)

размер видео в обоих случаях 360х240

Есть ли лучший способ влиять на загрузку канала для публикующей стороны (есть ли параметр кач-ва видео?), и можно ли управление битрейтом отдать на откуп браузеру ив коде не выставлять ограничения.

Управлять битрейтом на стороне сервера нет возможности, так как у нас в 1 приложении есть функционал демонстрации экрана, где битрейт требуется значительно выше.
 

Max

Administrator
Staff member
Добрый день.
если поставить настройки битрейта на минимум то потребление трафика снижается но переодически сыпется картинка (пробовали на 5-10 и 50-100)
размер видео в обоих случаях 360х240
Для этого разрешения данный битрейт слишком низкий. Попробуйте выставить для 240p битрейт 200-400, качество изображения должно быть приемлемым, и при этом хватит любого канала (не 2G, конечно).
Есть ли лучший способ влиять на загрузку канала для публикующей стороны (есть ли параметр кач-ва видео?), и можно ли управление битрейтом отдать на откуп браузеру ив коде не выставлять ограничения.
Влиять на загрузку канала можно либо разрешением, либо битрейтом. Разрешение ниже крутить уже некуда, остается только битрейт.
 
Top