...
Code Block | ||||
---|---|---|---|---|
| ||||
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 |
...
Параметр | Допустимые значения | Описание | |||||
---|---|---|---|---|---|---|---|
Параметры аудио | |||||||
type | AudioStreamProfile | Тип профиля (аудио или видео) | |||||
codec | opus mpeg4-generic speex | Используемый кодек аудио: Opus или AAC | |||||
rate | 8000 11025bitrate | Зависит от требуемого качества и пропускной способности каналов | Битрейт звука | ||||
rate | 8000 11025 12000 16000 22050 24000 32000 44100 48000 | Частота дискретизации звука | |||||
channels | 1 2 | Количество каналов: моно или стерео | |||||
Параметры видео | type | VideoStreamProfile | Тип профиля (аудио или видео)|||||
codec | h264 vp8 | Используемый кодек видео | |||||
bitrate | Зависит от требуемого качества и пропускной способности каналов | Битрейт видео | |||||
width | Зависит от требуемого качества и пропускной способности каналов | Ширина картинки | |||||
height | Зависит от требуемого качества и пропускной способности каналов | Высота картинки | |||||
codeImpl | FF OPENH264 | Используемый кодек видео: на основе FFmpeg или OpenH.264 | |||||
gop | Зависит от требуемого качества и пропускной способности каналов | Частота отправки ключевых кадров (GOP) | |||||
fps | Зависит от требуемого качества и пропускной способности каналов | Частота кадров | |||||
quality | Зависит от требуемого качества и пропускной способности каналов | Качество видео |
В каких случаях поток транскодируется на Edge сервере
...
Code Block | ||||
---|---|---|---|---|
| ||||
-opus-vp8: audio: type : AudioStreamProfile codec : opus rate : 48000 channels : 2 video: typewidth : 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 |
|
| 200 – OK 500 – Internal Server Error | Показать активные маршруты CDN |
Параметры
Описание | Пример | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Имя потока (c указанием профиля, при необходимости) | test-webrtc-144 | ||||||||||||||||||
Параметры потока на Transcoder | |||||||||||||||||||
Параметры профилей транскодирования, используемых в данный момент на Transcoder | 2-STREAM1-PROFILE-192
| Параметры потока, который Transcoder забрал с Edge |
| 220Параметры профиля аудио | AudioStreamProfile
| Параметры профиля видео (в соответствии с работающими в данный момент профилями транскодирования) | VideoStreamProfile
| 320
| 180
| FF
| 200 – OK 500 – Internal Server Error | Показать активные маршруты CDN |
Параметры
Описание | Пример | |
---|---|---|
Имя потока | , который Trancoder может забрать с Edge3-NEW-TRANSCODER-192.168.1.220 | |
Параметры потока на Origin | ||
Параметры потока, который опубликован на Origin | 4-PROXY-192.168.1.219 | |
Параметры аудио | AudioStreamProfile(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 | ||||
---|---|---|---|---|
| ||||
-webrtc-opus-video-proxy:
audio:
codec : opus
rate : 48000
channels : 2
video:
codec: h264 |
В ответ на запрос
Code Block | ||||
---|---|---|---|---|
| ||||
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
"streamName": "test-webrtc-opus-video-proxy"
} |
получаем:
1. Запрашиваемый профиль:
Code Block | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"2-NEW-TRANSCODER-192.168.1.220": [], |
4. Но захвачен с Origin, поскольку параметры публикации потока совпадают с запрошенными параметрами воспроизведения:
Code Block | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
-webrtc-pcma-video-proxy:
audio:
codec : pcma
rate : 8000
channels : 1 |
В ответ на запрос
Code Block | ||||
---|---|---|---|---|
| ||||
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
"streamName": "test-webrtc-pcma-video-proxy"
} |
получаем:
1. Запрашиваемый профиль:
Code Block | ||||
---|---|---|---|---|
| ||||
"REQUESTED-PROFILE": [
"AUDIO{bitrate=0, codec='pcma', rate=8000, channels=1}"
], |
2. На Transcoder создан профиль транскодирования:
Code Block | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
-opus-vp8:
audio:
codec : opus
rate : 48000
channels : 2
video:
width : 320
height : 240
gop : 60
fps : 30
codec : vp8
codecImpl : FF |
В ответ на запрос
Code Block | ||||
---|---|---|---|---|
| ||||
http://192.168.1.221:8081/rest-api/cdn/stream/show_routes
{
"streamName": "test-webrtc-opus-vp8"
} |
получаем:
1. Запрашиваемый профиль:
Code Block | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||||
---|---|---|---|---|
| ||||
"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 | ||
---|---|---|
| ||
cdn_allowed_ips=192.168.1.39, 192.168.100.64, 192.168.101.65 |
Также в этой настройке могут быть указаны маски адресов, например
Code Block | ||
---|---|---|
| ||
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.