Versions Compared

Key

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

...

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

1. Поток буликуется на Origin сервер.

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

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

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

...

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

...

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

opus

mpeg4-generic

speex

Используемый кодек аудио: Opus или AAC
bitrateЗависит от требуемого качества и пропускной способности каналовБитрейт звука
rate

8000

11025

12000

16000

22050

24000

32000

44100

48000

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

1

2

Количество каналов: моно или стерео
Параметры видеоtypeVideoStreamProfile
codec

h264

vp8

Используемый кодек видео
bitrateЗависит от требуемого качества и пропускной способности каналовБитрейт видео
widthЗависит от требуемого качества и пропускной способности каналовШирина картинки
heightЗависит от требуемого качества и пропускной способности каналовВысота картинки
codeImpl

FF

OPENH264

Используемый кодек видео: на основе FFmpeg или OpenH.264
gopЗависит от требуемого качества и пропускной способности каналовЧастота отправки ключевых кадров (GOP)
fpsЗависит от требуемого качества и пропускной способности каналовЧастота кадров
qualityЗависит от требуемого качества и пропускной способности каналовКачество видео

В каких случаях поток транскодируется на Edge сервере

...

Code Block
languageyml
themeRDark
 -opus-vp8:
  audio:
    typecodec : AudioStreamProfileopus
    codec : opus
    raterate : 48000
    channels : 2
  video:
    type : VideoStreamProfile
    width : 320
    height : 240
    gop : 60
    fps : 30
    codec : vp8
    codecImpl : FF

...

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

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

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

Здесь:

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

...

REST-метод

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

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

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

Описание

/cdn/stream/show_stream_routes

Code Block
languagejs
themeRDark
{
 "streamName":"test-webrtc-144"
}
Code Block
languagejs
themeRDark
{
    "1REQUESTED-PROFILE-192.168.1.220": [
        "AudioStreamProfileAUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VideoStreamProfileVIDEO{width=0256, height=0144, gop=null, fps=null, bitrate=0, codec='H264h264', codecImpl='nullOPENH264', quality=null}",
    ],
    "VideoStreamProfile{width=320, height=180, gop=null, fps=null, "1-PROFILE-192.168.1.220": [
        "AUDIO{bitrate=0, codec='H264opus', codecImplrate='FF'48000, qualitychannels=null2}",
        "VideoStreamProfileVIDEO{width=2560, height=1440, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264null', quality=null}"
],
    "2-STREAM-192.168.1.220": [
   "VIDEO{width=320, height=180, gop=null,   "AudioStreamProfile{fps=null, bitrate=0, codec='opusH264', ratecodecImpl=48000'FF', channelsquality=2null}",
        "VideoStreamProfileVIDEO{width=0256, height=0144, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264', quality=null}"
    ],
    "2-STREAM-192.168.1.220": [
    "VideoStreamProfile{width=320, height=180, gop=null, fps=null,  "AUDIO{bitrate=0, codec='H264opus', codecImplrate='FF'48000, qualitychannels=null2}",
        "VideoStreamProfileVIDEO{width=2560, height=1440, 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=2VIDEO{width=320, height=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}",
        "VideoStreamProfileVIDEO{width=0256, height=0144, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264', quality=null}"
    ]
}

200 – OK

500 – Internal Server Error

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

Параметры

2-STREAM220AudioStreamProfileVideoStreamProfile{width=320, height=180FF

Описание

Пример

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

test-webrtc-144
Параметры потока на Transcoder
Параметры профилей транскодирования, используемых в данный момент на Transcoder1-PROFILE-
,
    "3-NEW-TRANSCODER-192.168.1.220
Параметры потока, который Transcoder забрал с Edge
": [],
    "4-PROXY-192.168.1.
Параметры профиля аудио
219": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}
Параметры профиля видео (в соответствии с работающими в данный момент профилями транскодирования)
",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='
', quality=null}"
    ]
}

200 – OK

500 – Internal Server Error

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

Параметры

, который Trancoder может забрать с EdgeAudioStreamProfile

Описание

Пример

Имя потока

3-NEW-TRANSCODER-192.168.1.220
Параметры потока на Origin
Параметры потока, который опубликован на Origin
4-PROXY-192.168.1.219
Параметры аудио

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

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

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

Рассмотрим несколько примеров построения маршрутов для воспроизведения потока в CDN.

В качестве примера возьмем CDN из трех узлов:

  • 192.168.1.219 - Origin
  • 192.168.1.220 - Transcoder
  • 192.168.1.221 - Edge

На Origin публикуется WebRTC H264+opus (48 кГц, стерео) поток test

Воспроизведение потока с Origin без транскодинга при совпадении профилей публикации и воспроизведения

Воспроизводим поток test на Edge по профилю

Code Block
languageyml
themeRDark
 -webrtc-opus-video-proxy:
  audio:
    codec : opus
    rate : 48000
    channels : 2
  video:
    codec: h264

В ответ на запрос

Code Block
languagejs
themeRDark
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
    "streamName": "test-webrtc-opus-video-proxy"
}

получаем:

1. Запрашиваемый профиль:

Code Block
languagejs
themeRDark
    "REQUESTED-PROFILE": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='h264', codecImpl='null', quality=null}"
    ],

2. Поток захватывается с Origin:

Code Block
languagejs
themeRDark
    "1-PROXY-PROFILE-192.168.1.219": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}"
    ],

3. Поток может быть захвачен через Transcoder

Code Block
languagejs
themeRDark
    "2-NEW-TRANSCODER-192.168.1.220": [],

4. Но захвачен с Origin, поскольку параметры публикации потока совпадают с запрошенными параметрами воспроизведения:

Code Block
languagejs
themeRDark
    "3-PROXY-192.168.1.219": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}"
    ]

Воспроизведение потока с Transcoder с транскодингом звука

Воспроизводим поток test на Edge по профилю

Code Block
languageyml
themeRDark
 -webrtc-pcma-video-proxy:
  audio:
    codec : pcma
    rate : 8000
    channels : 1

В ответ на запрос

Code Block
languagejs
themeRDark
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
    "streamName": "test-webrtc-pcma-video-proxy"
}

получаем:

1. Запрашиваемый профиль:

Code Block
languagejs
themeRDark
    "REQUESTED-PROFILE": [
        "AUDIO{bitrate=0, codec='pcma', rate=8000, channels=1}"
    ],

2. На Transcoder создан профиль транскодирования:

Code Block
languagejs
themeRDark
    "1-PROFILE-192.168.1.220": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='null', quality=null}",
        "AUDIO{bitrate=0, codec='PCMA', rate=8000, channels=1}"
    ],

3. Поток захватывается через Transcoder

Code Block
languagejs
themeRDark
    "2-STREAM-192.168.1.220": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='null', quality=null}",
        "AUDIO{bitrate=0, codec='PCMA', rate=8000, channels=1}"
    ],
    "3-NEW-TRANSCODER-192.168.1.220": [],

4. Параметры публикации потока на Origin:

Code Block
languagejs
themeRDark
    "3-PROXY-192.168.1.219": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}"
    ]

Воспроизведение потока с Transcoder с транскодингом видео

Воспроизводим поток test на Edge по профилю

Code Block
languageyml
themeRDark
 -opus-vp8:
  audio:
    codec : opus
    rate : 48000
    channels : 2
  video:
    width : 320
    height : 240
    gop : 60
    fps : 30
    codec : vp8
    codecImpl : FF

В ответ на запрос

Code Block
languagejs
themeRDark
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
    "streamName": "test-webrtc-opus-vp8"
}

получаем:

1. Запрашиваемый профиль:

Code Block
languagejs
themeRDark
    "REQUESTED-PROFILE": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=320, height=240, gop=60, fps=30, bitrate=0, codec='vp8', codecImpl='FF', quality=null}"
    ],

2. На Transcoder создан профиль транскодирования:

Code Block
languagejs
themeRDark
    "1-PROFILE-192.168.1.220": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}",
        "VIDEO{width=320, height=240, gop=60, fps=30, bitrate=0, codec='VP8', codecImpl='FF', quality=null}"
    ],

3. Поток захватывается через Transcoder

Code Block
languagejs
themeRDark
    "2-STREAM-192.168.1.220": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}",
        "VIDEO{width=320, height=240, gop=60, fps=30, bitrate=0, codec='VP8', codecImpl='FF', quality=null}"
    ],
    "3-NEW-TRANSCODER-192.168.1.220": [],

4. Параметры публикации потока на Origin:

Code Block
languagejs
themeRDark
    "3-PROXY-192.168.1.219": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=0, height=0, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='', quality=null}"
    ]

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

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

Code Block
themeRDark
cdn_allowed_ips=192.168.1.39, 192.168.100.64, 192.168.101.65

Также в этой настройке могут быть указаны маски адресов, например

Code Block
themeRDark
cdn_allowed_ips=192.168.1.39, 192.168.100.0/24

Каждый узел CDN, на котором указана данная настройка, будет принимать соединения только от тех узлов, чьи адреса совпадают с перечисленными либо подходят под указанные маски. Соединения с прочими узлами будут отвергнуты.

Обратная совместимость с CDN 2.0

Обратная совместимость CDN 2.1 с CDN 2.0 поддерживается для следующих случаев:

1. Edge 2.0 может забирать потоки с Origin 2.1

2. Edge 2.1 может забирать потоки с Origin 2.0

При этом транскодинг работает согласно настройке кодеков и SDP по принципам, определенным для CDN 2.0.

Ограничения

1. Не рекомендуется публиковать поток с одним и тем же именем на двух Origin серверах одной CDN

2. Поток, опубликованный на одном из Origin серверов, следует забирать с этого же Origin или Edge сервера (в том числе через Transcoder сервер), но не с другого Origin сервера в той же CDN.