Versions Compared

Key

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

...

Code Block
languagejs
themeRDark
{
 "message":"connection",
 "data":
   [
     {
       "appKey":"defaultApp",
       "mediaProviders":["WebRTC","MSE","WSPlayer"],
       "clientVersion":"0.5.28",
       "clientOSVersion":"5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36",
       "clientBrowserVersion":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36"
     }
   ]
}

Параметры сообщения

ПараметрОписание
appKeyИдентификатор серверного приложения, которое должно взаимодействовать с бэкенд-сервером во время сеанса
mediaProvidersСписок поддерживаемых клиентом технологий публикации или воспроизведения потока
clientVersionВерсия SDK клиента
clientOSVersionВерсия операционной системы клиента
clientBrowserVersionВерсия браузера клиента

2. Сервер отправляет сообщение getUserData

...

Это сообщение подтверждает установку WebSocket соединения и успешное получение данных от клиента

Параметры сообщения

ПараметрОписание
useWSTunnelИспользуется ли WS-туннель
useWsTunnelPacketization2Используется ли пакетизация при использовании WS-туннеля
useBase64BinaryEncodingИспользуется ли Base64 кодировка
mediaProvidersСписок поддерживаемых клиентом технологий публикации или воспроизведения потока
authTokenТокен авторизации, он же идентификатор сессии, сформированный из IP адреса и порта клиента и сервера
statusСтатус WebSocket сессии
clientVersionВерсия SDK клиента
clientOSVersionВерсия операционной системы клиента
clientBrowserVersionВерсия браузера клиента
forceLoggerВключено ли принудительное логирование
keepAliveИспользуются ли Keep Alive

3. Сервер отправляет сообщение getVersion

...

Code Block
languagejs
themeRDark
{
  "message":"publishStream",
  "data":
    [
      {
        "mediaSessionId":"90e14ad0-fdb2-11e8-bce2-a3f72476fb49",
        "name":"test",
        "published":true,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PENDING",
        "record":false,
        "mediaProvider":"WebRTC",
        "sdp":"v=0\r\no=- 1712288193115840199 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13  110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:qgOt\r\na=ice-pwd:KEfomSLSL4Pxj78N6T3/HAMY\r\na=ice-options:trickle\r\na=fingerprint:sha-256 EE:BC:55:18:45:6C:B4:5C:28:6F:5D:F9:42:63:1B:A2:99:8D:7A:0B:19:C3:F5:62:12:63:82:B6:F0:2C:36:E2\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:3498121776 cname:Ft3gt16szZ3kAllO\r\na=ssrc:3498121776 msid:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH 55944815-d49b-4ab2-bc19-3ecdca00b4a2\r\na=ssrc:3498121776 mslabel:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH\r\na=ssrc:3498121776 label:55944815-d49b-4ab2-bc19-3ecdca00b4a2\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 123 127 122 125 107 108 109 124\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:qgOt\r\na=ice-pwd:KEfomSLSL4Pxj78N6T3/HAMY\r\na=ice-options:trickle\r\na=fingerprint:sha-256 EE:BC:55:18:45:6C:B4:5C:28:6F:5D:F9:42:63:1B:A2:99:8D:7A:0B:19:C3:F5:62:12:63:82:B6:F0:2C:36:E2\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=sendonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 red/90000\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:124 ulpfec/90000\r\na=ssrc-group:FID 3064307282 2143201641\r\na=ssrc:3064307282 cname:Ft3gt16szZ3kAllO\r\na=ssrc:3064307282 msid:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH 77c7bd16-9a65-4f62-9d01-6ecdd3e58f8a\r\na=ssrc:3064307282 mslabel:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH\r\na=ssrc:3064307282 label:77c7bd16-9a65-4f62-9d01-6ecdd3e58f8a\r\na=ssrc:2143201641 cname:Ft3gt16szZ3kAllO\r\na=ssrc:2143201641 msid:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH 77c7bd16-9a65-4f62-9d01-6ecdd3e58f8a\r\na=ssrc:2143201641 mslabel:EZ5Uy6UkPtEoScWkyAcP5rabBY6buERZjQpH\r\na=ssrc:2143201641 label:77c7bd16-9a65-4f62-9d01-6ecdd3e58f8a\r\n",
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя публикуемого потока
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
recordЗаписывать ли поток на сервере
mediaProviderТехнология, используемая для публикации
sdpSDP, предлагаемое клиентом
bitrateБитрейт потока (если 0, то устанавливается в ходе публикации)
minBitrateМинимальный битрейт потока (если 0, то не ограничивается)
maxBitrateМаксимальный битрейт потока (если 0, то не ограничивается)

2. Сервер отправляет сообщение setRemoteSDP

...

Code Block
languagejs
themeRDark
{
  "message":"notifyStreamStatusEvent",
  "data":
    [
      {
        "mediaSessionId":"90e14ad0-fdb2-11e8-bce2-a3f72476fb49",
        "name":"test",
        "published":true,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PUBLISHING",
        "audioCodec":"opus",
        "videoCodec":"H264",
        "record":false,
        "width":0,
        "height":0,
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0,
        "quality":0,
        "createDate":1544579813186,
        "streamInfo":
          {
            "nodeId":null,
            "appKey":null,
            "sessionId":null,
            "mediaSessionId":"90e14ad0-fdb2-11e8-bce2-a3f72476fb49",
            "name":"test",
            "samplingTime":null,
            "recordTimestamp":null,
            "recordStarted":false
          },
        "mediaProvider":"WebRTC"
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя публикуемого потока
publishedПоток опубликован на сервере
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
audioCodecАудиокодек
videoCodecВидеокодек
recordЗаписывается ли поток на сервере
widthШирина кадра (если 0, то устанавливается в ходе публикации)
heightВысота кадра (если 0, то устанавливается в ходе публикации)
bitrateБитрейт потока (если 0, то устанавливается в ходе публикации)
minBitrateМинимальный битрейт потока (если 0, то не ограничивается)
maxBitrateМаксимальный битрейт потока (если 0, то не ограничивается)
qualityПоказатель качества потока
createDateДата создания в виде целого числа
streamInfoДополнительная информация о потоке на сервере
mediaProviderТехнология, используемая для публикации

unpublish

При остановке публикации потока обмен командами производится следующим образом:

...

Code Block
languagejs
themeRDark
{
  "message":"unPublishStream",
  "data":
    [
      {
        "mediaSessionId":"1d91ae20-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":true,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PUBLISHING",
        "record":false
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя публикуемого потока
publishedПоток опубликован на сервере
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
recordЗаписывается ли поток на сервере

2. Сервер останавливает публикацию и отправляет сообщение notifyStreamStatusEvent

Code Block
languagejs
themeRDark
{
  "message":"notifyStreamStatusEvent",
  "data":
    [
      {
        "mediaSessionId":"1d91ae20-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":true,
        "hasVideo":true,
        "hasAudio":true,
        "status":"UNPUBLISHED",
        "audioCodec":"opus",
        "videoCodec":"H264",
        "info":"Stopped by publisher stop",
        "record":false,
        "width":320,
        "height":240,
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0,
        "quality":0,
        "createDate":1544580045898,
        "streamInfo":
          {
            "nodeId":null,
            "appKey":null,
            "sessionId":null,
            "mediaSessionId":"1d91ae20-fdb3-11e8-bddf-9b115426f01b",
            "name":"test",
            "samplingTime":null,
            "recordTimestamp":null,
            "recordStarted":false
          },
        "mediaProvider":"WebRTC"
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя публикуемого потока
publishedПоток опубликован на сервере
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
audioCodecАудиокодек
videoCodecВидеокодек
recordЗаписывается ли поток на сервере
widthШирина кадра (если 0, то устанавливается в ходе публикации)
heightВысота кадра (если 0, то устанавливается в ходе публикации)
bitrateБитрейт потока (если 0, то устанавливается в ходе публикации)
minBitrateМинимальный битрейт потока (если 0, то не ограничивается)
maxBitrateМаксимальный битрейт потока (если 0, то не ограничивается)
qualityПоказатель качества потока
createDateДата создания в виде целого числа
streamInfoДополнительная информация о потоке на сервере
mediaProviderТехнология, используемая для публикации

play

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

...

Code Block
languagejs
themeRDark
{
  "message":"playStream",
  "data":
    [
      {
        "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":false,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PENDING",
        "record":false,
        "width":0,
        "height":0,
        "mediaProvider":"WebRTC",
        "sdp":"v=0\r\no=- 6636414462219466101 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:33IG\r\na=ice-pwd:R78vJJetyP2WeWpU6QWKGbJA\r\na=ice-options:trickle\r\na=fingerprint:sha-256 72:67:0A:92:8B:C2:CB:13:4E:7F:66:BB:AF:99:4A:0C:D9:C3:C1:3E:B9:B8:24:EB:2E:64:39:B2:19:76:85:09\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 123 127 122 125 107 108 109 124\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:33IG\r\na=ice-pwd:R78vJJetyP2WeWpU6QWKGbJA\r\na=ice-options:trickle\r\na=fingerprint:sha-256 72:67:0A:92:8B:C2:CB:13:4E:7F:66:BB:AF:99:4A:0C:D9:C3:C1:3E:B9:B8:24:EB:2E:64:39:B2:19:76:85:09\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 red/90000\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:124 ulpfec/90000\r\n",
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0,
        "quality":0
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя потока для воспроизведения
publishedПоток опубликован на сервере (игнорируется)
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока (всегда "PENDING")
recordЗаписывать ли поток на сервере (игнорируется)
widthШирина кадра (если 0, то воспроизвести, как опубликовано)
heightВысота кадра (если 0, то воспроизвести, как опубликовано)
mediaProviderТехнология, используемая для воспроизведения
sdpSDP, предлагаемое клиентом
bitrateБитрейт потока (если 0, то устанавливается в ходе воспроизведения)
minBitrateМинимальный битрейт потока (если 0, то не ограничивается)
maxBitrateМаксимальный битрейт потока (если 0, то не ограничивается)
qualityПоказатель качества потока (если 0, то воспроизвести, как опубликовано)

2. Сервер отправляет сообщение notifyAudioCodec

...

Code Block
languagejs
themeRDark
{
  "message":"notifyStreamStatusEvent",
  "data":
    [
      {
        "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":false,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PLAYING",
        "audioCodec":"opus",
        "videoCodec":"H264",
        "record":false,
        "width":0,
        "height":0,
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0,
        "quality":0,
        "createDate":1544580053573,
        "streamInfo":
          {
            "nodeId":null,
            "appKey":null,
            "sessionId":null,
            "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
            "name":"test",
            "samplingTime":null,
            "recordTimestamp":null,
            "recordStarted":false
          },
        "mediaProvider":"WebRTC"
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя воспроизводимого потока
publishedПоток опубликован на сервере (игнорируется)
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
audioCodecАудиокодек
videoCodecВидеокодек
recordЗаписывается ли поток на сервере
widthШирина кадра (если 0, то устанавливается в ходе воспроизведения)
heightВысота кадра (если 0, то устанавливается в ходе воспроизведения)
bitrateБитрейт потока (если 0, то устанавливается в ходе воспроизведения)
minBitrateМинимальный битрейт потока (если 0, то не ограничивается)
maxBitrateМаксимальный битрейт потока (если 0, то не ограничивается)
qualityПоказатель качества потока
createDateДата создания в виде целого числа
streamInfoДополнительная информация о потоке на сервере
mediaProviderТехнология, используемая для воспроизведения

4. Сервер отправляет сообщение notifyVideoFormat

Code Block
languagejs
themeRDark
{
  "message":"notifyVideoFormat",
  "data":
    [
      {
        "streamerVideoWidth":320,
        "streamerVideoHeight":240,
        "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
        "status":"RESIZE"
      }
    ]
}

Параметры сообщения

ПараметрОписание
streamerVideoWidthШирина публикуемого кадра
streamerVideoHeightВысота публикуемого кадра
mediaSessionIdИдентификатор WebRTC медиасессии
statusСтатус видеодорожки потока

stop

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

...

Code Block
languagephp
themeRDark
{
  "message":"stopStream",
  "data":
    [
      {
        "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":false,
        "hasVideo":true,
        "hasAudio":true,
        "status":"PLAYING",
        "record":false
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя воспроизводимого потока
publishedПоток опубликован на сервере (игнорируется)
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
recordЗаписывается ли поток на сервере

2. Сервер останавливает воспроизведение и отправляет сообщение notifyStreamStatusEvent

Code Block
languagejs
themeRDark
{
  "message":"notifyStreamStatusEvent",
  "data":
    [
      {
        "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
        "name":"test",
        "published":false,
        "hasVideo":true,
        "hasAudio":true,
        "status":"STOPPED",
        "audioCodec":"opus",
        "videoCodec":"H264",
        "info":"Stopped by user",
        "record":false,
        "width":320,
        "height":240,
        "bitrate":0,
        "minBitrate":0,
        "maxBitrate":0,
        "quality":0,
        "createDate":1544580053573,
        "streamInfo":
          {
            "nodeId":null,
            "appKey":null,
            "sessionId":null,
            "mediaSessionId":"22588500-fdb3-11e8-bddf-9b115426f01b",
            "name":"test",
            "samplingTime":null,
            "recordTimestamp":null,
            "recordStarted":false
          },
        "mediaProvider":"WebRTC"
      }
    ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя воспроизводимого потока
publishedПоток опубликован на сервере (игнорируется)
hasVideoПрисутствует ли видео в потоке
hasAudioПрисутствует ли аудио в потоке
statusСтатус потока
audioCodecАудиокодек
videoCodecВидеокодек
infoТекстовое описание статуса
recordЗаписывается ли поток на сервере
widthШирина кадра
heightВысота кадра
bitrateБитрейт потока
minBitrateМинимальный битрейт потока
maxBitrateМаксимальный битрейт потока
qualityПоказатель качества потока
createDateДата создания в виде целого числа
streamInfoДополнительная информация о потоке на сервере
mediaProviderТехнология, используемая для воспроизведения

Метрики публикации/воспроизведения

...

Code Block
languagejs
themeRDark
{
 "message":"inboundVideoRate",
 "data":
  [
    {
     "mediaSessionId":"a12145d0-7eee-11ea-9833-9da59e0cc100",
     "videoRate":704856,
     "fps":31,
     "nack":0,
     "pli":0,
     "lostPackets":0,
     "width":640,
     "height":360
    }
  ]
}
{
 "message":"outboundVideoRate",
 "data":
  [
    {
     "mediaSessionId":"0040ed40-7eef-11ea-9833-9da59e0cc100",
     "videoRate":685256,
     "fps":30,
     "nack":0,
     "pli":13,
     "lostPackets":0,
     "width":640,
     "height":360
    }
  ]
}

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
videoRateБитрейт видео, бит/с
fpsЧастота кадров
nackКоличество NACK пакетов
pliКоличество PLI запросов
lostPacketsКоличество потерянных пакетов
widthШирина картинки
heightВысота картинки

Проверка доступности потока на сервере

Для проверки доступности потока на сервере необходимо отправить сообщение availableStream

Code Block
languagejs
themeRDark
[
  {
    "mediaSessionId": "2f693140-7d54-11eb-91fe-1fd0fb28f180",
    "name": "test"
  }
]

Параметры сообщения

ПараметрОписание
mediaSessionIdИдентификатор WebRTC медиасессии
nameИмя потока

В ответ сервер пришлет сообщение availableStream

Code Block
languagejs
themeRDark
[
  {
    "status": "false",
    "info": "Restricted access",
    "id": "2f693140-7d54-11eb-91fe-1fd0fb28f180"
  }
]

Параметры сообщения

ПараметрОписание
status

true, если поток доступен для воспроизведения

false, если недоступен

infoПричина недоступности потока
idИдентификатор WebRTC медиасессии