hls переключение качества

DamirIlyasov

New Member
Здравствуйте, подскажите, пожалуйста
Подаём RTMP поток во флешфонер, на фронте достаём .m3u8 стрим и отображаем с помощью plyr+hls.


Встал вопрос качества. Нужно иметь возможность переключать качество на клиенте.
Вопрос: как через флешфонер вещать мультикачественный .m3u8 стрим? Сейчас .m3u8 файл выглядит так (нету информации о разном качестве. То есть на фронте нету возможных качеств, когда пытаемся их достать через hls.levels):
photo_2021-07-21_17-52-09.jpg


Заранее спасибо за ответ!
 
Last edited:

Max

Administrator
Staff member
Добрый день.
Вопрос: как через флешфонер вещать мультикачественный .m3u8 стрим?
В настоящее время WCS поддерживает функцию HLS ABR, но эта функция работает только в CDN Origin + Transcoder + Edge, на отдельно стоящем сервере получить поток в различных качествах нельзя.
 

DamirIlyasov

New Member
Добрый день.

В настоящее время WCS поддерживает функцию HLS ABR, но эта функция работает только в CDN Origin + Transcoder + Edge, на отдельно стоящем сервере получить поток в различных качествах нельзя.
Спасибо за ответ. Получается, нужно ставить origin сервер, который будет принимать rtmp, потом ставить edge сервер, в котором настроен транскодинг (указаны варианты качеств) и запрашивать .m3u8 с edge сервера. Я правильно понял?

И ещё момент: для нас очень важно записывать трансляции, прочитал, что при таком подходе функция записи отключается. Есть ли вариант как-то и переключать качества, и оставить возможным запись трансляции?
Заранее спасибо
 
Last edited:

Max

Administrator
Staff member
Получается, нужно ставить origin сервер, который будет принимать rtmp, потом ставить edge сервер, в котором настроен транскодинг (указаны варианты качеств) и запрашивать .m3u8 с edge сервера. Я правильно понял?
Нужны три сервера: origin, transcoder, HLS edge

origin - принимает поток
transcoder - транскодирует например в 2 разрешения 720p и 360p
edge - забирает результаты у транскодера и раздает по HLS ABR

Да, верно .m3u8 запрашивается с Edge сервера и получает варианты качеств.

И ещё момент: для нас очень важно записывать трансляции, прочитал, что при таком подходе функция записи отключается. Есть ли вариант как-то и переключать качества, и оставить возможным запись трансляции?
Ничего не мешает вести запись трансляции на Origin - сервере. Подскажите, где написано что запись нельзя делать. Проверим документацию.
 

DamirIlyasov

New Member
Подскажите, пожалуйста, не совсем до конца понимаю, как правильно поставить transcoder сервер.
Вижу, как настраиваются origin и edge сервера (как они между собой соединяются) вот тут https://docs.flashphoner.com/display/WCS52RU/CDN+2.0#CDN2.0-Описание
1626960032608.png

Но не вижу, как настраивать transcoder сервер. То есть не понимаю, как он будет знать, где находится origin и как будет запускать транскодинг. Мы это должны делать через апи?
Вот конфиг по transcoding серверу, который нашел
1626960104778.png


Про ограничение записи: это было написано про edge узел. Когда в первый раз читал, ещё не было совсем понимания, спасибо, что объясняете. (вот тут https://docs.flashphoner.com/pages/viewpage.action?pageId=9241482#id-ВбраузерепоHLS-НастройкиTranscoderузлов)


Ещё вопрос:
Планируется мероприятие на 30 потоков, каждый в трёх качествах (240, 480, 720) и 5000 пользователей. Подскажите, пожалуйста, какие характеристики(железо) должны быть на origin, transcoder и edge серверах (всего 3 сервера получается).

Заранее спасибо.
 

Max

Administrator
Staff member
Основная документация по транскодингу находится здесь:

Пример настройки здесь:

1626964893647.png


То есть не понимаю, как он будет знать, где находится origin и как будет запускать транскодинг.
1. Транскодер сервер после запуска подключится к серверу cdn_point_of_entry
2. После этого, Транскодер получит все маршруты CDN и узнает о стримах, которые есть на Origin-сервере.
3. К Edge серверу обратится пользователь и запросит Мастер playlist .m3u8.
4. Edge сервер запросит 3 потока (240 480 720) у Транскодера и раздаст их пользователям.

Мы это должны делать через апи?
Нет, не должны. Транскодер сам обнаружит стримы.

Вот конфиг по transcoding серверу, который нашел
Это отдельные настройки, рекомендуемые для нарезки под HLS ABR
Больше настроек можно найти в документации по Транскодеру
Все настройки можно найти поиском по словам transcoder, encoder, cdn_transcoder здесь.

Планируется мероприятие на 30 потоков, каждый в трёх качествах (240, 480, 720) и 5000 пользователей. Подскажите, пожалуйста, какие характеристики(железо) должны быть на origin, transcoder и edge серверах (всего 3 сервера получается).
Разрешения желательно сократить до двух: 360p 720p.
Общая емкость энкодеров в этом случае будет 30 (кол-во потоков) * 2 = 60
Это близко к максимальному числу энкодеров, которые сможет обслужить сервер 2 x CPU Xeon Gold 24 cores per CPU, 128 GB RAM.

Второй по мощности будет Edge, 2 x CPU Xeon 12-24 cores per CPU, 64-128 GB RAM.
Может понадобиться 2 таких сервера. Кроме того, если сервер раздает 5000 потоков по 1 мегабит/сек каждый, то у этого сервера должна быть выделенная сеть 5 гигабит/сек.

Третим по мощности будет Origin, задача которого принять 30 потоков и записать. 2 x CPU Xeon 10-14 cores per CPU, 64-96 GB RAM.
При записи потоки могут транскодироваться в AAC по аудио части. Это может дать дополнительную нагрузку. Запись в реальном времени может дать доп. нагрузку на память, CPU и диск. Поэтому требования высокие, несмотря на небольшое кол-во потоков. Посмотрите также одну из последних статей в нашем блоге по нагрузочному тестированию записи: https://flashphoner.com/nagruzochnyy-test-zapisi-webrtc-potokov/?lang=ru
 
Top