...
Следует учесть, что файл настроек flashphoner.properties будет перезаписан после этой команды.
Поддержка Low Latency HLS
Начиная со сборки 5.2.1181, поддерживается Low Latency HLS (LL HLS). Эта возможность включается при помощи настройки
Code Block | ||
---|---|---|
| ||
hls_ll_enabled=true
hls_new_http_stack=true |
В этом случае плееры, которые поддерживают LL HLS (например, HLS.JS), будут играть дополнительные HLS сегменты и давать меньшую задержку по сравнению с плеерами, которые их не играют (например, VideoJS).
Для того, чтобы LL HLS проигрывался корректно, необходимо, как и для обычного HLS, обеспечить стабильный FPS публикуемого потока и стабильный интервал между ключевыми кадрами. Таким образом, исходный поток рекомендуется публиковать как RTMP с параметрами
При публикации WebRTC потока рекомендуется включать транскодинг для HLS, например
Code Block | ||
---|---|---|
| ||
hls_player_width=848
hls_player_height=480
video_filter_enable_fps=true |
Каталог для нарезки сегментов LL HLS
По умолчанию, сегменты LL HLS помещаются в подкаталоги с именами потоков в каталог
Code Block | ||
---|---|---|
| ||
ll_hls_dir=/usr/local/FlashphonerWebCallServer/ll-hls |
При изменении местоположения, например
Code Block | ||
---|---|---|
| ||
ll_hls_dir=/opt/ll-hls |
необходимо назначить права доступа командой
Code Block | ||||
---|---|---|---|---|
| ||||
/usr/local/FlashphonerWebCallServer/bin/webcallserver set-permissions |
и перезапустить WCS, чтобы применить изменения.
Прелоадер для LL HLS
Как и для обычного HLS, для LL HLS может использоваться прелоадер. Сегменты прелоадера LL HLS по умолчанию помещаются в каталог
Code Block | ||
---|---|---|
| ||
ll_hls_preloader_dir=/usr/local/FlashphonerWebCallServer/ll-hls/.preloader |
Расположение может быть изменено, например
Code Block | ||
---|---|---|
| ||
ll_hls_preloader_dir=/opt/preloader |
Настройка собственного прелоадера
При необходимости, для LL HLS может быть настроен собственный прелоадер. Для этого рекомендуется использовать экземпляр WCS сервер, предназначенный для тестирования. Прелоадер создается следующим образом:
1. Установить следующие настройки сервера
Code Block | ||
---|---|---|
| ||
hls_preloader_enabled=false
ll_hls_create_preloader=true
hls_auto_start=true |
и перезапустить WCS
2. Опубликовать RTMP поток из OBS на сервер, используя в качестве источника видео с соотношением сторон 16:9, указав имя потока index
Code Block | ||
---|---|---|
| ||
rtmp://wcs:1935/live/index |
При этом необходимо указать Resize output (source size)
3. По умолчанию, сегменты прелоадера будут записаны в каталог
Code Block | ||
---|---|---|
| ||
ll_hls_custom_preloader_dir=/usr/local/FlashphonerWebCallServer/custom-preloader/created-segments |
Достаточно записать до 20 основных сегментов index0.ts
- index20.ts
4. После остановки публикации переместить сегменты прелоадера в каталог, где будет располагаться прелоадер
Code Block | ||||
---|---|---|---|---|
| ||||
cd /usr/local/FlashphonerWebCallServer/custom-preloader/created-segments
cp index*.ts /opt/preloader/16x9
rm -rf index*.ts |
5. Повторить шаги 2-4 с источниками с соотношением сторон 4:3 и 2:1
6. Восстановить настройки сервера и указать расположение прелоадера
Code Block | ||
---|---|---|
| ||
ll_hls_preloader_dir=/opt/preloader |
затем перезапустить сервер
Известные проблемы
1. Невосстанавливаемый фриз HLS потока при воспроизведении в iOS Safari через CDN
...
Решение: обновить WCS до сборки 5.2.863, в которой решена данная проблема
7. При проигрывании LL HLS в браузере Safari, при первом подключении к потоку может пропадать звук
Симптомы: поток играет по LL HLS, но нет звука
Решение: нажать кнопку Pause, затем Play в окне плеера