Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Описание

Новая реализация CDN 2.1 отличается от CDN 2.0 дополнительными возможностями:

  • разделение узлов CDN по географическому (EU, US) или другому признаку при помощи групп
  • выделение узлов под задачи транскодинга, назначая таким узлам роль Transcoder

Группировка узлов CDN

Серверы в CDN могут быть объединены в группу по географическому (расположение), аппаратному (использование GPU для транскодинга) и другим признакам. Группа указывается в файле настроек flashphoner.properties при помощи параметра

cdn_groups=group1

 Один и тот же сервер может входить в несколько групп. Допустим, сервер находится в Европе и используется для транскодинга при помощи GPU:

cdn_groups=EU,GPU

Группы узлов используются при выборе маршрута для воспроизведения потока

Выделение узлов под задачи транскодинга

Чтобы не загружать серверы, используемые для публикации и просмотра видео в крупной разветвленной CDN, задачами транскодинга, целесообразно выделить под эти задачи узлы с повышенной вычислительной мощностью. Для таких узлов,, кроме Origin и Edge, добавлена роль Transcoder.

cdn_role=transcoder

Узел Transcoder не должен использоваться для публикации или воспроизведения потока. Он взаимодействует с Origin и Edge серверами следующим образом:

1. Transcoder забирает с Origin поток по запросу Edge сервера.

2. Transcoder транскодирует поток в соответствии с настройками, указанными Edge сервером.

3. Edge забирает с Transcoder поток для воспроизведения.

Конкретный узел для транскодирования выбирается при выборе маршрута для воспроизведения потока.

Профили транскодинга

Для настройки транскодинга на Edge сервере используются профили. Файл профилей транскодинга cdn_profiles.yml должен располагаться в каталоге /usr/local/FlashphonerWebCallServer/conf:

profiles:
 
 -webrtc-144:
  audio:
    type : AudioStreamProfile
    codec : opus
    rate : 48000
    channels : 2
  #this part forces transcoding
  video:
    type : VideoStreamProfile
    width : 256
    height : 144
    codecImpl : OPENH264

При запросе на воспроизведение потока, транскодированного по указанному профилю, имя профиля должно быть добавлено к имени потока, например

test-webrtc-144

Рекомендуется для удобства задавать имена профилей, начинающиеся с дефиса.

Параметры профиля

ПараметрДопустимые значенияОписание
Параметры аудио
typeAudioStreamProfileТип профиля (аудио или видео)
codec

opus

mpeg4-generic

Используемый кодек аудио: Opus или AAC
rate

8000

11025

12000

16000

22050

24000

32000

44100

48000

Частота дискретизации звука
channels

1

2

Количество каналов: моно или стерео
Параметры видео
typeVideoStreamProfileТип профиля (аудио или видео)
widthЗависит от требуемого качества и пропускной способности каналовШирина картинки
heightЗависит от требуемого качества и пропускной способности каналовВысота картинки
codeImpl

FF

OPENH264

Используемый кодек видео: на основе FFmpeg или OpenH.264

Выбор маршрута для воспроизведения потока

Маршруты в CDN строятся на основе периодических рассылок следующих данных:

  • Origin рассылает узлам с ролью Transcoder и Edge информацию об опубликованных потоках;
  • Transcoder рассылает узлам с ролью Edge  в пределах той же группы информацию о потоках, которые уже захвачены им с Origin;
  • Edge не рассылает ничего и всегда является конечной точкой маршрута.

Маршрут для воспроизведения потока на Edge сервере выбирается следующим образом:

1. Если на Edge сервере настроен профиль транскодирования:

1.1. Если на Transcoder в одной группе с Edge есть поток с таким именем:

1.1.1. Если поток уже транскодируется по указанному профилю, Edge забирает поток с Transcoder

1.1.2. Если поток транскодируется по другому профилю:

1.1.2.1. Поток транскодируется по указанному профилю

1.1.2.2. Edge забирает поток с Transcoder

1.2. Если Transcoder в одной группе с Edge может забрать запрошенный поток с Origin:

1.2.1. Transcoder забирает поток с Origin

1.2.2. Поток транскодируется по указанному профилю

1.2.3. Edge забирает поток с Transcoder

1.3. В остальных случаях Edge забирает поток с Origin

2. Если на Edge сервере не настроен профиль транскодирования, Edge забирает поток с Origin

Пример распределения потоков в CDN с использованием Transcoder узлов

Здесь

  • stream1, stream2, stream3 - потоки. опубликованные на Origin
  • stream1-P1 - поток stream1, транскодированный по профилю P1
  • stream2-P1 - поток stream1, транскодированный по профилю P2

Получение информации о маршрутах с помощью REST API

Для получения информации о маршрутах используется REST API запрос /cdn/show_stream_routes

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

  • HTTP: http://test.flashphoner.com:8081/rest-api/cdn/show_stream_routes
  • HTTPS: https://test.flashphoner.com:8444/rest-api/cdn/show_stream_routes

Здесь:

  • test.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /cdn/show_stream_routes - используемый REST-метод

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/cdn/show_stream_routes

{
 "streamName":"test-webrtc-144"
}
{
    "1-PROFILE-192.168.1.220": [
        "AudioStreamProfile{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VideoStreamProfile{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='null', quality=null}",
        "VideoStreamProfile{width=320, height=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}",
        "VideoStreamProfile{width=256, height=144, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264', quality=null}"
],
    "2-STREAM-192.168.1.220": [
        "AudioStreamProfile{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VideoStreamProfile{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}",
        "VideoStreamProfile{width=320, height=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}",
        "VideoStreamProfile{width=256, height=144, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264', quality=null}"
    ],
    "3-NEW-TRANSCODER-192.168.1.220": [],
    "4-PROXY-192.168.1.219": [
        "AudioStreamProfile{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VideoStreamProfile{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}"
    ]
}

200 – OK

500 – Internal Server Error

Показать активные маршруты CDN

Параметры

Описание

Пример

Имя потока (c указанием профиля, при необходимости)

test-webrtc-144
Параметры потока на Transcoder
Параметры профилей транскодирования, используемых в данный момент на Transcoder
1-PROFILE-192.168.1.220
Параметры потока, который Transcoder забрал с Edge
2-STREAM-192.168.1.220
Параметры профиля аудио
AudioStreamProfile{bitrate=0, codec='opus', rate=48000, channels=2}
Параметры профиля видео (в соответствии с работающими в данный момент профилями транскодирования)
VideoStreamProfile{width=320, height=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}
Параметры потока, который Trancoder может забрать с Edge
3-NEW-TRANSCODER-192.168.1.220
Параметры потока на Origin
Параметры потока, который опубликован на Origin
4-PROXY-192.168.1.219
Параметры аудио
AudioStreamProfile{bitrate=0, codec='opus', rate=48000, channels=2}
Параметры видео
VideoStreamProfile{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}



  • No labels