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

Max

Administrator
Staff member
подскажите пожалуйста, установил сертификаты на свое доменное имя сервера, воспользовался летс енкриптом
пытаюсь импортировать файлы - а найти их не могу. Где по умолчанию они могут быть?
По умолчанию certbot должен размещать файлы в каталоге /etc/letsencrypt/live/<domain>/, например /etc/letsencrypt/live/mydomain.com/
 

Max

Administrator
Staff member
Посмотрите пожалуйста этот раздел документации. Там такие же имена файлов.

4. На странице импорта загрузите файл сертификата fullchain.pem и файл ключа privkey.pem
Т.е. оба варианта импорта должны работать:

Вариант1
- cert.pem
- chain.pem
- privkey.pem

Вариант2
- fullchain.pem
- privkey.pem
 

Nikitos

Member
Спасибо вам за ответ и простите невежду за глупый сумбур
Я некорректно установил certbot - не с документации flashphonera, а как отдельный модуль на сервер апачи2
Переустановил сертбот согласно мануалу из файлика в папке tools и все заработало
 

Nikitos

Member
Подскажите пожалуйста, допустим у меня есть сервер с двумя сетевыми интерфейсами (с двумя сетевыми картами)
Провайдер объединит мне их и даст 1 IP адрес на 2 сетевых интерфейса
Возможно ли использовать два сетевых интерфейса на 1 wcs сервере?
 

Max

Administrator
Staff member
Подскажите пожалуйста, допустим у меня есть сервер с двумя сетевыми интерфейсами (с двумя сетевыми картами)
Провайдер объединит мне их и даст 1 IP адрес на 2 сетевых интерфейса
Возможно ли использовать два сетевых интерфейса на 1 wcs сервере?
Поясните, пожалуйста: Вы хотите подключаться к серверу из внешней сети и из локальной? В таком случае посмотрите, пожалуйста, эту тему
 

Nikitos

Member
Поясните, пожалуйста: Вы хотите подключаться к серверу из внешней сети и из локальной? В таком случае посмотрите, пожалуйста, эту тему
Не совсем, смысл в том, что бы расширить пропускной канал, по одной витой паре скорость максимально 700-800 мбит сек, получается, что самым слабым звеном является сетевой интерфейс, по скольку при тесте сервера на 250 зриетелей нагрузка была всего лишь 5%
Может wcs сервер например разделить, первые 600 зрителей через один сетевой интерфейс, а вторые 600 через другой?
 

Max

Administrator
Staff member
Нет, WCS сервер не управляет сетевыми картами, т.к. это задача операционной системы. Для раздачи трафика всегда используется один сетевой интерфейс. Навскидку, ваша задача решается объединением двух сетевых интерфейсов в один:
habr.com/ru/post/58218/
 

Nikitos

Member
Нет, WCS сервер не управляет сетевыми картами, т.к. это задача операционной системы. Для раздачи трафика всегда используется один сетевой интерфейс. Навскидку, ваша задача решается объединением двух сетевых интерфейсов в один:
habr.com/ru/post/58218/
А если не секрет, каким образом решаете эту задачу например вы?
 

Max

Administrator
Staff member
А если не секрет, каким образом решаете эту задачу например вы?
Обычно мы рекомендуем клиентам размещать сервер в датацентре или облачном хостинге, выбирая объем трафика в зависимости от задач, которые будет решать сервер. Посмотрите вот эти общие рекомендации (они касаются облачных серверов, но справедливы и для физических).
Если Вы размещаете сервер на собственной площадке, необходимо либо обеспечить канал, соответствующий планируемой нагрузке на сервер, либо планировать нагрузку, исходя из имеющихся ограничений.
 

Nikitos

Member
Хотелось бы вернуться к теме об ограничениях зрителей
Скажите пожалуйста, что конкретно нужно сделать, что бы ограничить число зрителей?
 

Nikitos

Member
А если я уменьшу диапазон портов - как считаете, поможет? ну например на то число, сколько мне нужно подписчиков
 

Max

Administrator
Staff member
Скажите пожалуйста, что конкретно нужно сделать, что бы ограничить число зрителей?
1. Поднять бэкенд сервер (Apache, Nginx + PHP + что еще Вам для бэкенда понадобится)
2. Разобраться с этим примером, научиться считать подключенные сессии при помощи REST хука /connect
3. Добавить в скрипт бэкенда обработку REST хука /playStream, например
Code:
switch($api_method) {
    case "connect":
         ...
    break;
    case "playStream":
         players++;
         if (players > 100) {
             ubnormalResponse(403);
         }
    break;
}
header('Content-Type: application/json');
echo json_encode($incoming_data);

function ubnormalResponse($code) {
    if ($code == 403) {
    header('HTTP/1.1 403 Forbidden', true, $code);
    } else {
    header(':', true, $code);
    }
    die();
}
Пример очень упрощен, скорее всего, Вы захотите считать подписчиков на поток, в этом случае понадобится база, где нужно хранить идентификаторы подключившихся сессий, список потоков и текущее количество зрителей для каждого из них. Кроме того, нужно отслеживать как остановку проигрывания по команде с клиента, обрабатывая хук /stopStream, так и событие /StreamStatusEvent, которое оповещает об изменении статуса потока, в том числе о переходе в статус FAILED и причине этого перехода.
А если я уменьшу диапазон портов - как считаете, поможет? ну например на то число, сколько мне нужно подписчиков
Порты расходуются не только на подписчиков, но и на публикации
 

Nikitos

Member
подскажите пожалуйста, можно ли поднять уровень битрейда звука, очень плохое качество
Если можно то в каком файле, что изменит /прописать
И если в файле то где он находится, спасибо
 

Nikitos

Member
еще симптом - видео начинает тормозить с переодично , нагрузка на процессор при этом минимальна
Подскажите, в чем может быть проблема? На что обратить внимание?
 

Max

Administrator
Staff member
подскажите пожалуйста, можно ли поднять уровень битрейда звука, очень плохое качество
Управление битрейтом звука при публикации описано здесь (п 6). Битрейт необходимо задавать в битах в секунду, например 64000.
еще симптом - видео начинает тормозить с переодично , нагрузка на процессор при этом минимальна
Вероятно, проблема в канале. Почитайте, пожалуйста, здесь, как проверить канал публикации/воспроизведения. Если по результатам тестирования необходимо настраивать битрейт видео, почитайте, как это можно сделать, здесь.
 

Nikitos

Member
Управление битрейтом звука при публикации описано здесь (п 6). Битрейт необходимо задавать в битах в секунду, например 64000.
При проведении трансляции я не пользуюсь микрофоном или веб-камерой, источник звука - вкладка браузера, как в таком случае менять битрейт звука?
 

Max

Administrator
Staff member
При проведении трансляции я не пользуюсь микрофоном или веб-камерой, источник звука - вкладка браузера, как в таком случае менять битрейт звука?
Точно так же, указывая битрейт в constraints при публикации
Code:
constraints.audio.bitrate = 64000
Если на стороне клиента это не заработает (при публикации потока с экрана без расширения Chrome поддерживает constraints не в полном объеме), на стороне сервера можно выставить настройку
Code:
opus_formats=maxaveragebitrate=64000
 

Nikitos

Member
Большое спасибо за помощь
Возник еще вопрос
Проблема с зависаниями видео затронула только телефоны, на стационарных компьютерах вроде как все работает без косяков
Решил воспользоваться плеером HLS -отчасти он решил проблему, ведь сама технология плеера как раз нацелена на воспроизведение видео без задержек с любой пропускной способностью
Но вот нагрузка на процессор возрасла в разы

Вопрос: вы проводили нагрузочные тесты для воспроизведения плеером HLS? у него больше ресурсопотребление? есть ли внем технология транскодинга?

Вопрос: Допустим, у меня 400 зрителей, из них 70% смотрят на смартфонах т.е. 280, остальные 120 на ПК. Мне выгоднее будет всех подключить к HLS? или например разделить: смартфоны на HLS а пк на Embed. Есть подозрение, что Embed потребляет меньше ресурсов
 

Max

Administrator
Staff member
Проблема с зависаниями видео затронула только телефоны
Если публикуется, например, экран или вкладка браузера, развернутая на весь экран, получается FullHD поток. Если при этом мобильные устройства используют мобильную связь, скорее всего пропускной способности канала не хватает под этот поток. Поможет либо снижение разрешения публикации, либо транскодинг на сервере к меньшему разрешению.
Вопрос: вы проводили нагрузочные тесты для воспроизведения плеером HLS? у него больше ресурсопотребление? есть ли внем технология транскодинга?
По умолчанию, для HLS включается транскодинг к разрешению 640x480, для снижения нагрузки на канал с одной стороны и для совместимости с квадратными iPad с другой. Отключите транскодинг
Code:
hls_player_width=0
hls_player_height=0
и нагрузка на сервер уменьшится. В этом случае будет транскодироваться только звук, если Вы публикуете WebRTC поток из браузера H264+Opus, поскольку в HLS идет H264+AAC.
Мне выгоднее будет всех подключить к HLS? или например разделить: смартфоны на HLS а пк на Embed.
HLS дает задержку при трансляции, WebRTC задержку минимизирует. Поэтому имеет смысл там, где возможно, использовать WebRTC, если задержка критична. Кроме того, для плавного проигрывания по HLS необходим стабильный FPS публикации, а также регулярное поступление ключевых фреймов. Если публикация не обеспечивает ни того, ни другого, необходим транскодинг, который выровняет FPS и добавить регулярную отсылку ключевых фреймов.
Таким образом, Вы всегда вынуждены выбирать: либо повышение нагрузки на сервер (за счет транскодинга для адаптации к каналу пользователя и используемому протоколу трансляции), либо снижение качества картинки для того, чтобы пропихнуть поток в каналы всех пользователей.
Поэтому при большом количестве зрителей с разными каналами рекомендуется либо держать мощный сервер, либо разворачивать CDN и выносить задачу транскодинга на выделенные серверы. Подробнее об этом читайте здесь.
 
Top