Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ПараметрДопустимые значенияОписание
Параметры аудио
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
languageyml
themeRDark
profiles:
 -240p:
  audio:
    codec : mpeg4-generic
    rate : 48000
    channels: 1
  video:
    height : 240
    bitrate : 300
    gop : 50
    codec : h264

Для того, чтобы подписчик на Edge сервере мог играть стерео звук при публикации потока со стерео звуком, количество каналов в профиле должно соответствовать количеству каналов в оригинальном потоке, т.е.

Code Block
languageyml
themeRDark
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
themeRDark
cdn_nodes_state_refresh_interval=60000

По умолчанию, периодичность рассылки составляет 60 секунд. Для Transcoder узлов рекомендуется уменьшить это значение до 1 секунды, чтобы своевременно распределять потоки на другие узлы.

Настройка состояния Transcoder  узла при достижении ограничений по производительности

В сборке 5.2.640 добавлена настройка, позволяющая указать состояние, в которое перейдет Transcoder узел при достижении любого из ограничений, по умолчанию GROUP_CONNECTIONS_ALLOWED

Code Block
themeRDark
cdn_transcoder_threshold_state=GROUP_CONNECTIONS_ALLOWED

При необходимости, чтобы предотвратить размазывание потока по CDN, можно переводить Transcoder в состояние CONNECTIONS_ALLOWED

Code Block
themeRDark
cdn_transcoder_nodesthreshold_state_refresh_interval=60000

...

=CONNECTIONS_ALLOWED

В этом состоянии, Transcoder будет позволять забирать потоки, которые уже на нем декодируются, в том числе по новым профилям. Например, если на Transcoder узле транскодируется поток test по профилю 360p, и какой-либо Edge сервер запросит поток test240p, маршрут для воспроизведения будет построен через этот же Transcoder.

Данная настройка должна устанавливаться на Transcoder узлах.

Авторизация узлов в CDN

Авторизация узлов, которые пытаются подключиться к CDN, производится по IP-адресу. Адреса узлов, которые могут войти в CDN, должны быть указаны в следующей настройке

...

Code Block
languageyml
themeRDark
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
languageyml
themeRDark
profiles:
 -240p:
  audio:
    ...
  video:
    ...
    quality: 10
    codecImpl : FF