...
При подключении первого HLS-подписчика к потоку, в особенности к потоку из CDN, необходимо определенное время, чтобы началась нарезка потока на HLS-сегменты, и был сформирован плейлист. В результате, браузер Safari на устройствах iOS может не подключиться к потоку по HLS с первой попытки. Чтобы подключение всегда проходило успешно, в сборке 5.2.371 добавлено воспроизведение прелоадера. Прелоадер по умолчанию выглядит следующим образом
В сборке 5.2.408 прелоадеры разделены по соотношениям сторон картинки потока: 16:9, 4:3, 2:1
Сегменты прелоадера по умолчанию записываются в каталог /usr/local/FlashphonerWebCallserver/hls/.preloader
при запуске сервера
Code Block | ||
---|---|---|
| ||
ls /tree /usr/local/FlashphonerWebCallServer/hls/.preloader /usr/local/FlashphonerWebCallserverFlashphonerWebCallServer/hls/.preloader -rw-r--r-- 1 root root 51888 Oct 13 04:47 ├── 16x9 │ ├── index0.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index10.ts -rw-r--r-- 1 root root 54332 Oct 13 04:47 index11.ts -rw-r--r-- 1 root root 53392 Oct 13 04:47 index12.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index13.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index14.ts -rw-r--r-- 1 root root 53956 Oct 13 04:47 index15.ts -rw-r--r-- 1 root root 54144 Oct 13 04:47 index16.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index17.ts -rw-r--r-- 1 root root 52640 Oct 13 04:47 index18.ts -rw-r--r-- 1 root root 53580 Oct 13 04:47 index19.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index1.ts -rw-r--r-- 1 root root 53580 Oct 13 04:47 index2.ts -rw-r--r-- 1 root root 54520 Oct 13 04:47 index3.ts -rw-r--r-- 1 root root 52452 Oct 13 04:47 index4.ts -rw-r--r-- 1 root root 52640 Oct 13 04:47 index5.ts -rw-r--r-- 1 root root 53204 Oct 13 04:47 index6.ts -rw-r--r-- 1 root root 54708 Oct 13 04:47 index7.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index8.ts -rw-r--r-- 1 root root 52828 Oct 13 04:47 index9.ts |
Минимальная длительность одного сегмента прелоадера по умолчанию составляет 2 секунды, и может быть задана в миллисекундах при помощи настройки
Code Block | ||
---|---|---|
| ||
hls_preloader_time_min=2000 |
Отключение прелоадера
При необходимости, прелоадер может быть отключен, эта возможность доступна, начиная со сборки 5.2.396. Для отключения HLS прелоадера используется параметр
Code Block | ||
---|---|---|
| ||
hls_preloader_enabled=false |
Настройка собственного прелоадера
Чтобы заменить прелоадер по умолчанию на собственный, необходимо сделать следующее:
1. Выбрать видеоклип (например, логотип)
2. С помощью ffmpeg закодировать видео в H264, добавить к видеоклипу аудиодорожку, задать периодичность ключевых кадров и убрать B-фреймы
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -i clip│ ├── index10.ts │ ├── index11.ts │ ├── index12.ts │ ├── index13.ts │ ├── index14.ts │ ├── index15.ts │ ├── index16.ts │ ├── index17.ts │ ├── index18.ts │ ├── index19.ts │ ├── index1.ts │ ├── index2.ts │ ├── index3.ts │ ├── index4.ts │ ├── index5.ts │ ├── index6.ts │ ├── index7.ts │ ├── index8.ts │ └── index9.ts ├── 2x1 │ ├── index0.ts │ ├── index10.ts │ ├── index11.ts │ ├── index12.ts │ ├── index13.ts │ ├── index14.ts │ ├── index15.ts │ ├── index16.ts │ ├── index17.ts │ ├── index18.ts │ ├── index19.ts │ ├── index1.ts │ ├── index2.ts │ ├── index3.ts │ ├── index4.ts │ ├── index5.ts │ ├── index6.ts │ ├── index7.ts │ ├── index8.ts │ └── index9.ts └── 4x3 ├── index0.ts ├── index10.ts ├── index11.ts ├── index12.ts ├── index13.ts ├── index14.ts ├── index15.ts ├── index16.ts ├── index17.ts ├── index18.ts ├── index19.ts ├── index1.ts ├── index2.ts ├── index3.ts ├── index4.ts ├── index5.ts ├── index6.ts ├── index7.ts ├── index8.ts └── index9.ts |
Минимальная длительность одного сегмента прелоадера по умолчанию составляет 2 секунды, и может быть задана в миллисекундах при помощи настройки
Code Block | ||
---|---|---|
| ||
hls_preloader_time_min=2000 |
Отключение прелоадера
При необходимости, прелоадер может быть отключен, эта возможность доступна, начиная со сборки 5.2.396. Для отключения HLS прелоадера используется параметр
Code Block | ||
---|---|---|
| ||
hls_preloader_enabled=false |
Настройка собственного прелоадера
Чтобы заменить прелоадер по умолчанию на собственный, необходимо сделать следующее:
1. Выбрать видеоклип (например, логотип) в трех соотношениях сторон: 16:9, 4:3, 2:1
2. С помощью ffmpeg закодировать видео в H264, добавить к видеоклипу аудиодорожку, задать периодичность ключевых кадров и убрать B-фреймы
Code Block | ||||
---|---|---|---|---|
| ||||
ffmpeg -i clip16x9.mp4 -f lavfi -i anullsrc=channel_layout=mono:sample_rate=44100 -c:v h264 -g 30 -bf 0 -shortest 16x9/preloader16x9.mp4 ffmpeg -i clip4x3.mp4 -f lavfi -i anullsrc=channel_layout=mono:sample_rate=44100 -c:v h264 -g 30 -bf 0 -shortest 4x3/preloader4x3.mp4 ffmpeg -i clip2x1.mp4 -f lavfi -i anullsrc=channel_layout=mono:sample_rate=44100 -c:v h264 -g 30 -bf 0 -shortest preloader2x1/preloader2x1.mp4 |
3. Загрузить и установить инструменты для подготовки HLS сегментов с сайта Apple
...
Code Block | ||||
---|---|---|---|---|
| ||||
cd 16x9 mediafilesegmenter -t 2 -B index -start-segments-with-iframe preloaderpreloader16x9.mp4 tar -cvzf preloader.tar.gz index*.ts |
Этот шаг необходимо повторить для всех соотношений сторон.
5. На сервере создать каталог для прелоадера
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
mkdir /opt/custom_preloader mkdir /opt/custom_preloader/16x9 mkdir /opt/custom_preloader/4x3 mkdir /opt/custom_preloader/2x1 |
6. Распаковать прелоадер из архива, подготовленного на шаге 4
Code Block | ||||
---|---|---|---|---|
| ||||
cd /opt/custom_preloader/16x9 tar -xvzf ~/preloaderpreloader16x9.tar.gz |
Этот шаг также необходимо повторить для всех соотношений сторон
7. Указать в настройках сервера расположение прелоадера и длительность одного сегмента
Code Block | ||
---|---|---|
| ||
hls_preloader_time_min=2000 hls_preloader_dir=/opt/custom_preloader |
Известные ограничения
...
Управление HLS подписками при помощи REST API
...