хочу стать клиентом

Nikitos

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

У меня разрешение монитора HD Ready (1280x720) - в настройках "Screen Sharning"стоит настройка 640 на 480 пикселей - подскажите, каким образом мне тогда снизить качество картинки?
 

Nikitos

Member
Т.е. получается транскодинг вроде как увеличит количество смотрящих мою трансляцию, но в то же время создаст доп нагрузку на сервер, и уменьшит то же кол-во

Показатели скорости по стране
Mobile Speeds

Конечно, это очень грубая и примерная статистика, но все же ничего лучше нету
Исходя из ранее написаного вами сообщения
____________________________
Добрый день.
Мы проводили специальные тесты минимальной конфигурации на физическом и виртуальном серверах. Пожалуйста, ознакомьтесь с их результатами здесь. В статье приводятся данные по максимальному количеству зрителей на один поток с транскодированием этого потока и без. Там же приведены рекомендации по количеству ядер CPU памяти в зависимости от сценария использования.
Требования к пропускной способности канала зависят от разрешения и битрейта потока. Так, для хорошего качества проигрывания потока 240p желателен битрейт 500 кбит/с, 480p - 1 Мбит/с, 720p - 1,5 Мбит/с. Сколько потоков с определенными параметрами Вы собираетесь публиковать/проигрывать, такой ширины канал и потребуется.
_______________________________
Меня интересует качество 480 - 1 Мбит/



camphoto_33463914.jpg

Приложил скриншот с пропускной способностью своего сервера

Так все таки что во всем этом механизме будет слабым звеном?
 

Attachments

Nikitos

Member
Вопрос снимается
Прояснилось

Screen Sharing
Chrome extension Install Now

FPS
Width 640 px
Height 480 px

Эти параметры определяют не качество видео, а размер картинки, отображаемой в коде HTML, а сама картинка будет согласно качеству картинки на мониторе
 

Nikitos

Member
Скажите пожалуйста, в каких файлах это нужно указывать


Точно так же, указывая битрейт в constraints при публикации
Code:
constraints.audio.bitrate = 64000

-------------------------------------

Code:
opus_formats=maxaveragebitrate=64000
--------------------------------------
Code:
hls_player_width=0
hls_player_height=0
 

Max

Administrator
Staff member
Т.е. получается транскодинг вроде как увеличит количество смотрящих мою трансляцию, но в то же время создаст доп нагрузку на сервер, и уменьшит то же кол-во
Поэтому требуется подбирать сервер под задачу. Вы собираете раздавать потоки 480p, а публикуете HD и FullHD потоки с экрана. Одного ядра CPU достаточно для кодирования 3 потоков 480p, итого необходимо одно ядро на трех зрителей. Если Вы планируете несколько сотен зрителей, Вам неизбежно потребуется CDN с выделенными транскодерами.
Эти параметры определяют не качество видео, а размер картинки, отображаемой в коде HTML, а сама картинка будет согласно качеству картинки на мониторе
Неверно, эти параметры определяют размер картинки при публикации. Однако без расширения Chrome не применяет ограничения по размеру картинки и всегда публикует в полный размер того объекта, который захвачен (экран, вкладка, окно программы). Почитайте еще раз документацию по трансляции потока с экрана.
Скажите пожалуйста, в каких файлах это нужно указывать
constraints.audio.bitrate = 64000
Ограничения (constraints) необходимо указывать в JavaScript коде клиента. Посмотрите код примера Media Devices для работы с констрейнтами на GitHub, описание самого примера тут.
opus_formats=maxaveragebitrate=64000
hls_player_width=0
hls_player_height=0
Параметры настройки сервера необходимо указывать в файле /usr/local/FlashphonerWebCallServer/conf/flashphoner.properties
 

Nikitos

Member
после указания параметров hls плеера - он вообще перестал работать
 

Max

Administrator
Staff member
после указания параметров hls плеера - он вообще перестал работать
Вы отключили транскодинг для HLS. Теперь, как мы писали ранее, необходимо обеспечить стабильное поступление ключевых кадров в потоке и стабильный FPS.
Для того, чтобы браузер при публикации WebRTC высылал ключевые фреймы с заданной периодичностью, необходимо добавить настройку в файл flashphoner.properties
Code:
periodic_fir_request=true
При этом сервер будет отсылать браузеру запрос ключевых фреймов (FIR request) каждые 5 секунд
FPS можно установить через constraints в коде клиента (пример Screen Sharing)
JavaScript:
    var constraints = {
        video: {
            width: parseInt($('#width').val()),
            height: parseInt($('#height').val()),
            frameRate: parseInt($('#fps').val())  /// Здесь устанавливается FPS
        }
    };
    ...
    constraints.video.type = "screen";
    if ($("#woChromeExtension").prop('checked')) {
        constraints.video.withoutExtension = true;
    }
    ...
    session.createStream({
        name: streamName,
        display: localVideo,
        constraints: constraints
        ...
    }).publish();
Однако, при публикации экрана без расширения constraints.video.withoutExtension = true Chrome не обрабатывает video constraints, и публикация пойдет с реальным FPS. Если речь идет об экране, значение FPS может сильно снижаться при статичной или редко изменяющейся картинке.
Поэтому при публикации экрана, если Вы играете поток по HLS, необходимо либо включать транскодинг на сервере, либо адаптировать расширение под свой домен и устанавливать его в Chrome на ПК клиента для публикации потока с заданными параметрами. В этом случае можно регулировать и разрешение.
 

Nikitos

Member
здравствуйте. Возникла проблема, складывается ощущение что подключиться может определенное кол-во пользователей, а на остальных чего-то не хватает. Как можно определить, в чем была причина?
Использую интеграцию плеера HLS MIN на свой сайт
Интернет 700 мбит, на Московских серверах проверял - 500-600
Звонил провайдеру, говорит со скоростью все впорядке, тестировали нагрузку
В чем может быть причина? У меня демо версия, может она ограничивает кол-во пользователей?
 

Max

Administrator
Staff member
Добрый день.
У меня демо версия, может она ограничивает кол-во пользователей?
Единственное ограничение триальной лицензии - это срок использования, он предусматривает продление, но не бесконечен.
Кроме того, во всех потоках присутствует звуковой водяной знак.
Возникла проблема, складывается ощущение что подключиться может определенное кол-во пользователей, а на остальных чего-то не хватает. Как можно определить, в чем была причина?
Необходимо собрать отчет, как описано здесь, при максимальном количестве подключенных пользователей. Также необходимо приложить данные со страницы статистики, там будет показано точное число подписчиков в моменте, наличие транскодинга и нагрузка на процессор сервера. Эти данные необходимо выслать нам, используя эту ссылку
Скорее всего, не хватает ресурсов сервера. Проверьте, что Вы выполнили шаги 3, 4, 11 из данной инструкции перед нагрузочным тестом.
Если у Вас включен транскодинг для выравнивания FPS при проигрывании по HLS, учтите, что для кодирования 2 потоков 720p или 3 потоков 480p требуется одно ядро CPU. Следовательно, максимальное число публикаций и подписчиков в различных разрешениях будет ограничено количеством ядер CPU на сервере.
 

Nikitos

Member
у меня кодируется 1 поток 720
исходя из https://docs.flashphoner.com/pages/viewpage.action?pageId=14256260#id-Тестированиепроизводительностисервера-Рекомендации у меня должно быть побольше зрителей,на одно ядро

3. Используем пример нагрузочного тестирования с захватом потоков по WebRTC на другом сервере WCS. Этим примером мы эмулируем зрителей (подписчиков) трансляции, воспроизводящих поток в разных разрешениях (720p, 480p, 360p). При заданном числе зрителей (около 100) нагрузка процессора на WCS сервере приближается к 80%, это рекомендуемая максимальная нагрузка на CPU, при которой сервер выполняет свой функционал корректно.

нагрузка на мой процессор составляла макс 20%
и еще подскажите пожалуйста, в каком файле указывать настройки:
media_port_from


этот пример подходит под мой?
1597106119554.png
 
Last edited:

Nikitos

Member
Изменение диапазона динамических портов в Linux
Динамический или эфемерный порт, — временный порт, открываемый при установке IP-соединения из определённого диапазона программного стека TCP/IP. Многие версии ядра Linux используют в качестве динамических порты 32768 — 61000. Проверить, какой именно диапазон используется на сервере, можно при помощи команды

sysctl net.ipv4.ip_local_port_range
Если этот диапазон пересекается со стандартными портами, используемыми WCS, его необходимо изменить при помощи команды

sysctl -w net.ipv4.ip_local_port_range="59999 63000"
после того, как прописал вот эту команду, количество зрителей уменьшилось до 25
 

Max

Administrator
Staff member
у меня должно быть побольше зрителей,на одно ядро
можете уточнить, сколько максимально пользователей у вас смогло подключиться?

Для диагностики вашей проблемы, пожалуйста, пришлите данные для ssh доступа к вашему серверу с помощью этой приватной формы
 

Nikitos

Member
можете уточнить, сколько максимально пользователей у вас смогло подключиться?

Для диагностики вашей проблемы, пожалуйста, пришлите данные для ssh доступа к вашему серверу с помощью этой приватной формы
50 пользователей при разрешении 720

50 раз перечитывал https://docs.flashphoner.com/pages/viewpage.action?pageId=14256260#id-Тестированиепроизводительностисервера-Результатытестирования вот эту тему, к сожалению, так и не могу понять...

что такое потоки? что такое зрители? что такое публикации?

если у меня

физический сервер с памятью 64 ГБ
процессор 8 ядер 16 потоков ( убунта видит как 16 ядер),
к тому же видео стоит дискретное 2 GB ddr4

При запуске трансляции хоть с транскодинком хоть без, подключается максимум 40-50 зрителей, при этом нагрузка на мой процессор составляет 14% и памяти выделяется 22 GB ( доступно для webcallservera 50G, прописал в настройках ядра Xmx50G )

Неужели это весь потенциал?
Даже если открыть вашу инструкцию, где в качестве теста используется Xeon 1 CPU 1 GB RAM - в вашем тесте с транскодинком у вас получается 100 зрителей!

ну не как не состыковывается 16 ядер и 64 GB памяти против 1 ядра и 1 GB памяти ( пусть даже у Xeona производительность выше на одно ядро, чем у AMD)

помогите пожалуйста разобраться, спасибо!
 
Last edited:

Max

Administrator
Staff member
Подскажите, вы не отправляли доступы по ssh?
Отправьте, мы посмотрим и попробуем найти проблему.

Еще раз дублирую ссылку на форму:
приватная форма
 

Max

Administrator
Staff member
Доступы получили. Проверьте файрволл на вашем сервере или хостинге, похоже не разрешает внешние подключения по 22 порту.
1597311064768.png
 

Nikitos

Member
не был установлен SSH сервер
я его установил, фаервол у меня отсутствует, подключение интернет напрямую от провайдера без коммутаторов и роутеров
 

Max

Administrator
Staff member
Подключились, тестируем.
Отпишу по результату
 

Max

Administrator
Staff member
По результатам тестирования:

Тестирование Screensharing WebRTC to HLS 1 поток 1280р с транскодированием
Результат:
1300 подключений при низкой загруженности сервера.
1597633558507.png


Тестирование Screensharing WebRTC to HLS 1 поток 1280р без транскодирования
Результат:
892 подключения при средней загруженности сервера
1597633588018.png


Стриминг WebRTC, даже без транскодирования, процесс более затратный по ресурсам, чем стриминг HLS с транскодированием.
Результаты обоих тестирований находятся в пределах нормы для вашего сервера.
Для дальнейшей работы рекомендуем включить ZGC.
.
п.8 (настройка hugepages) в этой инструкции можно пропустить.

А еще у вас занято 100% диска на системном разделе. Из-за этого тоже могут быть сложности в работе.
 
Top