...
Параметр | Допустимые значения | Описание |
---|---|---|
Параметры аудио | ||
codec | opus mpeg4-generic speex ulaw | Используемый кодек аудио |
bitrate | Зависит от требуемого качества и пропускной способности каналов | Битрейт звука, бит/с |
rate | 8000 11025 12000 16000 22050 24000 32000 44100 48000 | Частота дискретизации звука |
channels | 1 2 | Количество каналов |
Параметры видео | ||
codec | h264 mpv vp8 | Используемый кодек видео |
bitrate | Зависит от требуемого качества и пропускной способности каналов | Битрейт видео, кбит/с |
width | Зависит от требуемого качества и пропускной способности каналов | Ширина картинки |
height | Зависит от требуемого качества и пропускной способности каналов | Высота картинки |
codeImpl | FF OPENH264 | Используемый кодек видео, по умолчанию FF |
gop | Зависит от требуемого качества и пропускной способности каналов | Частота отправки ключевых кадров (GOP) |
fps | Зависит от требуемого качества и пропускной способности каналов | Частота кадров |
quality | Зависит от требуемого качества и пропускной способности каналов | Качество видео |
preset | ultrafast superfast veryfast faster fast medium slow slower veryslow placebo | Пресет FF, по умолчанию ultrafast |
profile | 66 (Baseline) 77 (Main) 88 (Extended) 100 (High) | Профиль кодирования FF, по умолчанию 66 (Baseline) |
level | Зависит от требуемого качества | Уровень кодирования FF, по умолчанию 3.1 |
...
Вышеописанные настройки указываются на Transcoder узлах.
Управление профилями транскодинга при помощи REST API
Для управление профилями транскодинга на лету, без перезапуска сервера, служит специальное REST API
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
...
Поддержка нескольких каналов звука
Начиная со сборки 5.2.773, поддерживается транскодирование звука по профилю с указанием количества каналов (1 - моно, 2 - стерео)
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
-240p:
audio:
codec : mpeg4-generic
rate : 48000
channels: 1
video:
height : 240
bitrate : 300
gop : 50
codec : h264 |
Для того, чтобы подписчик на Edge сервере мог играть стерео звук при публикации потока со стерео звуком, количество каналов в профиле должно соответствовать количеству каналов в оригинальном потоке, т.е.
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
-240p:
audio:
codec : mpeg4-generic
rate : 48000
channels: 2 |
Если кодек, частота дискретизации и количество каналов профиля совпадают с параметрами звуковой дорожки в оригинальном потоке, то звук будет передан на Edge сервер без транскодирования.
Управление профилями транскодинга при помощи REST API
Для управление профилями транскодинга на лету, без перезапуска сервера, служит специальное REST API
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
- HTTP: http://test.flashphoner.com:8081/rest-api/cdn/profile/print
- HTTPS: https://test.flashphoner.com:8444/rest-api/cdn/profile/print
...
Имя параметра | Описание | Пример |
---|---|---|
globalState | Статус узла: ACTIVE или PASSIVE | ACTIVE |
id | Адрес узла | 192.168.1.64 |
processingState, state | Участвует ли узел в выборе маршрута для воспроизведения потоков: NEW_STREAMS_ALLOWED - участвует CONNECTION_ALLOWED - позволяет только забирать уже транскодируемые потоки, в том числе по новым профилям GROUP_CONNECTION_ALLOWED - не участвует | NEW_STREAMS_ALLOWED |
role | Роль узла: ORIGIN, TRANSCODER или EDGE | ORIGIN |
...
Текущее состояние узла определяется следующим образом в порядке приоритета:
1. Если есть значение, заданное принудительно при помощи запроса /cdn/enforce_state, то выбирается это значение.
2. Если достигнуто ограничение по нагрузке процессора, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
3. Если достигнуто ограничение по кодировщикам видео, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
4. Если ограничения не достигнуты, то выбирается состояние NEW_STREAMS_ALLOWED.Узел рассылает свое состояние другим узлам с периодичностью, заданной в миллисекундах при помощи настройкиenforce_state, то выбирается это значение.
2. Если достигнуто ограничение по нагрузке процессора, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
3. Если достигнуто ограничение по кодировщикам видео, то выбирается состояние GROUP_CONNECTIONS_ALLOWED.
4. Если ограничения не достигнуты, то выбирается состояние NEW_STREAMS_ALLOWED.
Узел рассылает свое состояние другим узлам с периодичностью, заданной в миллисекундах при помощи настройки
Code Block | ||
---|---|---|
| ||
cdn_nodes_state_refresh_interval=60000 |
По умолчанию, периодичность рассылки составляет 60 секунд. Для Transcoder узлов рекомендуется уменьшить это значение до 1 секунды, чтобы своевременно распределять потоки на другие узлы.
Настройка состояния Transcoder узла при достижении ограничений по производительности
В сборке 5.2.640 добавлена настройка, позволяющая указать состояние, в которое перейдет Transcoder узел при достижении любого из ограничений, по умолчанию GROUP_CONNECTIONS_ALLOWED
Code Block | ||
---|---|---|
| ||
cdn_transcoder_threshold_state=GROUP_CONNECTIONS_ALLOWED |
При необходимости, чтобы предотвратить размазывание потока по CDN, можно переводить Transcoder в состояние CONNECTIONS_ALLOWED
Code Block | ||
---|---|---|
| ||
cdn_transcoder_nodesthreshold_state_refresh_interval=60000 |
...
=CONNECTIONS_ALLOWED |
В этом состоянии, Transcoder будет позволять забирать потоки, которые уже на нем декодируются, в том числе по новым профилям. Например, если на Transcoder узле транскодируется поток test по профилю 360p, и какой-либо Edge сервер запросит поток test240p, маршрут для воспроизведения будет построен через этот же Transcoder.
Данная настройка должна устанавливаться на Transcoder узлах.
Авторизация узлов в CDN
Авторизация узлов, которые пытаются подключиться к CDN, производится по IP-адресу. Адреса узлов, которые могут войти в CDN, должны быть указаны в следующей настройке
...
Code Block | ||||
---|---|---|---|---|
| ||||
profiles: -240p: audio: codec : opus rate : 48000 video: height : 240 bitrate : 400 gop : 50 fps : 25 codec : h264 codecImpl : OPENH264 |
2. Настройка качества кодирования не применяется при использовании OpenH264
Симптомы: качество картинки не изменяется при различных значениях quality
в профиле транскодирования
Решение: не использовать кодирование на базе OpenH264, поскольку управление CRF в нем не поддерживается
Code Block | ||||
---|---|---|---|---|
| ||||
profiles:
-240p:
audio:
...
video:
...
quality: 10
codecImpl : FF |