Versions Compared

Key

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

...

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

Для применения изменений в файле cdn_profiles.yml необходим перезапуск сервера.

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

ПараметрДопустимые значенияОписание
Параметры аудио
codec

opus

mpeg4-generic

speex

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

8000

11025

12000

16000

22050

24000

32000

44100

48000

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

1

2

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

h264

vp8

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

FF

OPENH264

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

ultrafast

superfast

veryfast

faster

fast

medium

slow

slower

veryslow

placebo

Пресет FFmpeg, по умолчанию ultrafast
profileЗависит от требуемого качестваПрофиль кодирования FFmpeg, по умолчанию Baseline
levelЗависит от требуемого качестваУровень кодирования FFmpeg, по умолчанию 3.1

...

задают использование пресета veryfast, профиля Main и уровня 3.1

Управление профилями транскодинга при помощи 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

Здесь:

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

REST запросы необходимо отправлять на Edge сервер. Изменения в профилях сохраняются в памяти и применяются немедленно, а также записываются в файл cdn_profiles.yml для использования после перезапуска сервера.

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

REST-метод

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

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

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

Описание

/cdn/profile/add

Code Block
languagejs
themeRDark
{
"name": "-profile1",
"profile": {
        "audio": {
            "type": "audio"
            "bitrate": 0, 
            "channels": 0, 
            "codec": "opus", 
            "rate": 48000, 
        }, 
        "video": {
            "type": "video", 
            "bitrate": 0, 
            "codec": "h264", 
            "codecImpl": "FF", 
            "fps": 30, 
            "gop": 90, 
            "height": 360, 
            "quality": 0, 
            "width": 640
        }
}
}





200 – OK

400 - Bad Request

409 - Conflict

500 – Internal Server Error

Добавить профиль транскодинга

/cdn/profile/modify
Code Block
languagejs
themeRDark
{
"name": "-profile1",
"profile": {
        "video": {
            "bitrate": 400, 
            "quality": 25
        }
}
}




200 – OK

400 - Bad Request

404 - Not Found

500 – Internal Server Error

Изменить профиль транскодинга
/cdn/profile/print
Code Block
languagejs
themeRDark
    "-240p": {
        "audio": {
            "bitrate": 0, 
            "channels": 0, 
            "codec": "opus", 
            "rate": 48000, 
            "type": "audio"
        }, 
        "video": {
            "bitrate": 0, 
            "codec": "h264", 
            "codecImpl": "FF", 
            "fps": 25, 
            "gop": 50, 
            "height": 240, 
            "preset": "veryfast", 
            "quality": 0, 
            "type": "video", 
            "width": 0
        }
    }, 
    "-480p": {
        "audio": {
            "bitrate": 0, 
            "channels": 0, 
            "codec": "opus", 
            "rate": 48000, 
            "type": "audio"
        }, 
        "video": {
            "bitrate": 0, 
            "codec": "h264", 
            "codecImpl": "FF", 
            "fps": 25, 
            "gop": 50, 
            "height": 480, 
            "preset": "veryfast", 
            "quality": 0, 
            "type": "video", 
            "width": 0
        }
    }

200 – OK

404 - Not Found

500 – Internal Server Error

Получить список профилей транскодирования
/cdn/profile/remove
Code Block
languagejs
themeRDark
{
"name": "-profile1"
}




200 – OK

404 - Not Found

500 – Internal Server Error

Удалить профиль транскодирования

Параметры

Имя параметра

Описание

Пример

name

Имя профиля

-profile1

profile

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

{
"audio": {
"type": "audio"
"bitrate": 0,
"channels": 0,
"codec": "opus",
"rate": 48000,
},
"video": {
"type": "video",
"bitrate": 0,
"codec": "h264",
"codecImpl": "FF",
"fps": 30,
"gop": 90,
"height": 360,
"quality": 0,
"width": 640
}

Параметры профиля обязательно должны содержать разделы audio или video.

Основными параметрами профиля являются следующие:

  • audio:
    • bitrate
    • codec
    • rate
    • channels
  • video:
    • bitrate
    • codec
    • width
    • height
    • quality

Остальные параметры являются дополнительными и могут отсутствовать в профиле:

  • video:
    • codecImpl
    • fps
    • gop
    • level
    • preset
    • profile

Если какие-либо из этих параметров не указаны при создании профиля, они будут добавлены в профиль со значением 0 для числовых и "" для строковых параметров, при этом будут применены значения по умолчанию.

При изменении профиля изменяются только переданные параметры. Если необходимо сбросить какой-либо из основных параметров к значению по умолчанию, либо удалить из профиля дополнительный параметр необходимо передать -1, например:

Code Block
languagejs
themeRDark
{
"name": "-profile1",
"profile": {
        "video": {
            "bitrate": -1, 
            "codecImpl": -1
        }
}
}

Изменение используемых профилей

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

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

...

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

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

REST-метод

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

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

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

Описание

/cdn/stream/show_routes

Code Block
languagejs
themeRDark
{
 "streamName":"test-webrtc-144"
}
Code Block
languagejs
themeRDark
{
    "REQUESTED-PROFILE": [
        "AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}",
        "VIDEO{width=256, height=144, gop=null, fps=null, bitrate=0, codec='h264', codecImpl='OPENH264', quality=null}"
    ],
    "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}",
        "VIDEO{width=320, height=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}",
        "VIDEO{width=256, height=144, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='OPENH264', quality=null}"
    ],
    "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=180, gop=null, fps=null, bitrate=0, codec='H264', codecImpl='FF', quality=null}",
        "VIDEO{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": [
        "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

Параметры

Описание

Пример

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

test-webrtc-144
Параметры запрашиваемого профиля транскодирования
Параметры запрашиваемого профиля
REQUESTED-PROFILE
Параметры аудио, указанные в профиле
AUDIO{bitrate=0, codec='opus', rate=48000, channels=2}
Параметры видео, указанные в профиле
VIDEO{width=256, height=144, gop=null, fps=null, bitrate=0, codec='h264', 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}

...

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

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

REST-метод

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

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

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

Описание

/cdn/show_nodes



Code Block
languagejs
themeRDark
[
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.64", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "TRANSCODER"
    }, 
    {
        "globalState": "ACTIVE", 
        "id": "192.168.1.39", 
        "processingState": "NEW_STREAMS_ALLOWED", 
        "role": "ORIGIN"
    }
]

200 – OK

500 – Internal Server Error

Показать состояние узлов CDN

Параметры

Имя параметра

Описание

Пример

globalState

Статус узла: ACTIVE или PASSIVE

ACTIVE

id

Адрес узла

192.168.1.64
processingState

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

NEW_STREAMS_ALLOWED - участвует

GROUP_CONNECTION_ALLOWED - не участвует

NEW_STREAMS_ALLOWED
roleРоль узла: ORIGIN, TRANSCODER или EDGE
ORIGIN

...