Схема CameraLiveStream
Nest Cam (устаревшая версия) Nest Cam (для улицы или помещений, с аккумулятором) Nest Cam с прожектором Nest Cam (для помещений, проводная) Nest Hub Max Дверной звонок Nest (устаревшая версия) Дверной звонок Nest (с аккумулятором) Дверной звонок Nest (проводной)
sdm.devices.traits.CameraLiveStream
Эта характеристика присуща любому устройству, поддерживающему потоковую трансляцию.
Поля
Поле | Описание | Тип данных |
---|---|---|
maxVideoResolution | Максимальное разрешение видеотрансляции. | VideoResolution |
videoCodecs | Видеокодеки, поддерживаемые для прямой трансляции. | array(string) Значение: ["H264"] |
audioCodecs | Поддерживаемые аудиокодеки для прямой трансляции. | array(string) Значение: ["AAC"] |
supportedProtocols | Протоколы потоковой передачи, поддерживаемые устройством. Значение этого поля указывает, какие команды поддерживает устройство. Например, если это поле содержит WEB_RTC, поддерживаются только команды WEB_RTC. | array(string) Значение: ["RTSP", "WEB_RTC"] |
Видеоразрешение (максВидеоразрешение)
Поле | Описание | Тип данных |
---|---|---|
width | Максимальное разрешение изображения по ширине. Также может использоваться как параметр запроса в URL-адресе загрузки. | int32 Пример: 640 |
height | Максимальная высота разрешения изображения. Также может использоваться как параметр запроса в URL-адресе загрузки. | int32 Пример: 480 |
Пример запроса GET и ответа
Запрос
GET /enterprises/project-id/devices/device-id
Ответ
{
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.CameraLiveStream
" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["AAC"],
"supportedProtocols" : ["WEB_RTC"]
}
}
}
Команды
GenerateRtspStream
Nest Cam (устаревшая версия) Nest Hub Max Nest Doorbell (устаревшая версия)Запросите токен для доступа к URL-адресу прямой трансляции RTSP.
URL-адреса прямых трансляций RTSP не могут быть общими для нескольких клиентов. URL-адрес потока может использоваться только одним клиентом одновременно. Если несколько клиентов хотят транслировать видео с одной и той же камеры одновременно, команды RTSP необходимо отправлять каждому клиенту отдельно, и каждый клиент должен использовать свой собственный URL-адрес потока.
Запрос и ответ GenerateRtspStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Ответ
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Поля ответа GenerateRtspStream
Поле | Описание | Тип данных |
---|---|---|
streamUrls | Карта URL-адресов прямых трансляций RTSP. | object |
streamExtensionToken | Токен, используемый для расширения streamToken для прямой трансляции RTSP. | string Пример: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
streamToken | Токен для доступа к прямой трансляции RTSP. | string Пример: "g.0.streamingToken" |
expiresAt | Время истечения срока действия streamExtensionToken и streamToken в формате RFC 3339. | string Пример: «2018-01-04T18:30:00.000Z» |
ExtendRtspStream
Nest Cam (устаревшая версия) Nest Hub Max Nest Doorbell (устаревшая версия)Запросите новый токен доступа к URL-адресу прямой трансляции RTSP, чтобы заменить действительный токен доступа RTSP до истечения срока его действия. Это также используется для замены действительного токена RTSP из предыдущего запроса команды ExtendRtspStream.
Сеансы прямой трансляции с камеры длятся всего 5 минут. Если вам нужно продлить время трансляции, используйте соответствующую команду «Расширить Format потока» в меню CameraLiveStream черта для сгенерированного вами формата потока.
Запрос и ответ ExtendRtspStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Ответ
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Поля запроса ExtendRtspStream
Поле | Описание | Тип данных |
---|---|---|
streamExtensionToken | Токен, используемый для запроса расширения токена потоковой передачи RTSP. | string Пример: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
Поля ответа ExtendRtspStream
Поле | Описание | Тип данных |
---|---|---|
streamExtensionToken | Токен, который можно использовать для просмотра существующей прямой трансляции RTSP и запроса расширения токена потоковой передачи. | string Пример: "dGNUlTU2CjY5Y3VKaTZwR3o4Y1..." |
streamToken | Новый токен для доступа к существующей прямой трансляции RTSP. | string Пример: «g.0.newStreamingToken» |
expiresAt | Время истечения срока действия streamExtensionToken и streamToken в формате RFC 3339. | string Пример: «2018-01-04T18:30:00.000Z» |
StopRtspStream
Nest Cam (устаревшая версия) Nest Hub Max Nest Doorbell (устаревшая версия)Делает действительный токен доступа RTSP недействительным и останавливает прямую трансляцию RTSP, привязанную к этому токену доступа.
Запрос и ответ StopRtspStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Ответ
{}
Поля запроса StopRtspStream
Поле | Описание | Тип данных |
---|---|---|
streamExtensionToken | Токен, который можно использовать для аннулирования существующей прямой трансляции RTSP. | string Пример: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
GenerateWebRtcStream
Nest Cam (устаревшая версия) Nest Cam (для улицы или помещений, на батарейках) Nest Cam с прожектором Nest Cam (для помещений, проводная) Дверной звонок Nest (на батарейках) Дверной звонок Nest (проводной)Создайте прямую трансляцию WebRTC для устройства.
Запрос и ответ GenerateWebRtcStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream
",
"params" : {
"offerSdp" : "offerSdp"
}
}
Ответ
{ "results" : { "answerSdp" : "answerSdp", "expiresAt" : "2020-01-04T18:30:00.000Z", "mediaSessionId" : "5TbN9Y7jsz58_2sX5Pnfn-R81M..." } }
Поля запроса GenerateWebRtcStream
Мы рекомендуем использовать пример веб-приложения , чтобы научиться создавать успешную прямую трансляцию. Этот пример генерирует корректный offerSdp
, соответствующий всем ограничениям SDP для камер Nest.
Предложение SDP для камер Nest должно соответствовать следующим ограничениям:
- Поддерживается только формат Unified. План B не поддерживается.
- Все медиа-строки (
m=
) должны присутствовать в предложении и должны располагаться в следующем порядке:- аудио
- видео
- приложение
- Trickle ICE поддерживается, но не является обязательным.
- Для аудио поддерживается только кодек Opus.
- Настройки звука должны быть установлены на
a=recvonly
(только прием). - Предложение должно заканчиваться символом новой строки
\r\n
или\n
.
Посмотрите пример действительного предложения
Неформатированный:
v=0\r\no=- 2214114893783582286 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 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:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\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:63 red/48000/2\r\na=fmtp:63 111/111\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 122 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116 37\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\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 VP9/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 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:122 VP9/90000\r\na=rtcp-fb:122 goog-remb\r\na=rtcp-fb:122 transport-cc\r\na=rtcp-fb:122 ccm fir\r\na=rtcp-fb:122 nack\r\na=rtcp-fb:122 nack pli\r\na=fmtp:122 profile-id=1\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=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 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=0;profile-level-id=42001f\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 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=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:35 AV1/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\r\na=rtpmap:118 rtx/90000\r\na=fmtp:118 apt=123\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=rtpmap:37 flexfec-03/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=fmtp:37 repair-window=10000000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n
Отформатировано:
v=0 o=- 2214114893783582286 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 a=extmap-allow-mixed a=msid-semantic: WMS m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=recvonly a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116 37 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:122 VP9/90000 a=rtcp-fb:122 goog-remb a=rtcp-fb:122 transport-cc a=rtcp-fb:122 ccm fir a=rtcp-fb:122 nack a=rtcp-fb:122 nack pli a=fmtp:122 profile-id=1 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:108 H264/90000 a=rtcp-fb:108 goog-remb a=rtcp-fb:108 transport-cc a=rtcp-fb:108 ccm fir a=rtcp-fb:108 nack a=rtcp-fb:108 nack pli a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:109 rtx/90000 a=fmtp:109 apt=108 a=rtpmap:35 AV1/90000 a=rtcp-fb:35 goog-remb a=rtcp-fb:35 transport-cc a=rtcp-fb:35 ccm fir a=rtcp-fb:35 nack a=rtcp-fb:35 nack pli a=rtpmap:36 rtx/90000 a=fmtp:36 apt=35 a=rtpmap:124 H264/90000 a=rtcp-fb:124 goog-remb a=rtcp-fb:124 transport-cc a=rtcp-fb:124 ccm fir a=rtcp-fb:124 nack a=rtcp-fb:124 nack pli a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032 a=rtpmap:119 rtx/90000 a=fmtp:119 apt=124 a=rtpmap:123 H264/90000 a=rtcp-fb:123 goog-remb a=rtcp-fb:123 transport-cc a=rtcp-fb:123 ccm fir a=rtcp-fb:123 nack a=rtcp-fb:123 nack pli a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=123 a=rtpmap:114 red/90000 a=rtpmap:115 rtx/90000 a=fmtp:115 apt=114 a=rtpmap:116 ulpfec/90000 a=rtpmap:37 flexfec-03/90000 a=rtcp-fb:37 goog-remb a=rtcp-fb:37 transport-cc a=fmtp:37 repair-window=10000000 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:2 a=sctp-port:5000 a=max-message-size:262144
Поле | Описание | Тип данных |
---|---|---|
offerSdp | Предложение SDP, относящееся к локальному устройству, которое будет отображать прямую трансляцию WebRTC. | string Пример: « offerSdp » |
Поля ответа GenerateWebRtcStream
answerSdp
необходимо использовать для создания прямой трансляции в течение 30 секунд после получения ответа, в противном случае он будет удален. Если срок его действия истек, выполните команду GenerateWebRtcStream еще раз, чтобы получить новый answerSdp
.
При открытии каналов WebRTC для прямой трансляции обязательно создайте канал данных, а также видеоканал.
Поле | Описание | Тип данных |
---|---|---|
answerSdp | Ответ SDP для использования с локальным устройством, которое будет отображать прямую трансляцию WebRTC. | string Пример: " answerSdp " |
expiresAt | Время истечения доступа к прямой трансляции WebRTC в формате RFC 3339. | string Пример: «2020-01-04T18:30:00.000Z» |
mediaSessionId | Идентификатор медиасеанса сгенерированной прямой трансляции WebRTC. | string Пример: «5TbN9Y7jsz58_2sX5Pnfn-R81M...» |
ExtendWebRtcStream
Nest Cam (устаревшая версия) Nest Cam (наружная или внутренняя, с аккумулятором) Nest Cam с прожектором Nest Cam (внутренняя, проводная) Дверной звонок Nest (проводной) ПроводнойПопросите продлить доступ к существующей прямой трансляции WebRTC до истечения срока ее действия.
Поток WebRTC можно расширить только для камер с проводным питанием. Камера с питанием от аккумулятора считается подключенной к сети для зарядки. Если камера работает от аккумулятора, запрос на расширение активного потока WebRTC будет проигнорирован.
Сеансы прямой трансляции с камеры длятся всего 5 минут. Если вам нужно продлить время трансляции, используйте соответствующую команду «Расширить Format потока» в меню CameraLiveStream черта для сгенерированного вами формата потока.
Запрос и ответ ExtendWebRtcStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream
",
"params" : {
"mediaSessionId" : "5TbN9Y7jsz58_2sX5Pnfn-R81M..."
}
}
Ответ
{ "results" : { "expiresAt" : "2018-01-04T18:30:00.000Z", "mediaSessionId" : "5TbN9Y7jsz58_2sX5Pnfn-R81M..." } }
Поля запроса ExtendWebRtcStream
Поле | Описание | Тип данных |
---|---|---|
mediaSessionId | Идентификатор сеанса мультимедиа прямой трансляции WebRTC будет расширен. | string Пример: «5TbN9Y7jsz58_2sX5Pnfn-R81M...» |
Поля ответа ExtendWebRtcStream
Поле | Описание | Тип данных |
---|---|---|
expiresAt | Новое время истечения срока доступа к прямой трансляции WebRTC в формате RFC 3339. | string Пример: «2018-01-04T18:30:00.000Z» |
mediaSessionId | Идентификатор медиасеанса прямой трансляции WebRTC, который был расширен. | string Пример: «5TbN9Y7jsz58_2sX5Pnfn-R81M...» |
StopWebRtcStream
Nest Cam (устаревшая версия) Nest Cam (для улицы или помещений, на батарейках) Nest Cam с прожектором Nest Cam (для помещений, проводная) Дверной звонок Nest (на батарейках) Дверной звонок Nest (проводной)Делает недействительным действительный сеанс мультимедиа WebRTC и останавливает прямую трансляцию WebRTC, привязанную к этому сеансу.
Запрос и ответ StopWebRtcStream
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream
",
"params" : {
"mediaSessionId" : "5TbN9Y7jsz58_2sX5Pnfn-R81M..."
}
}
Ответ
{}
Поля запроса StopWebRtcStream
Поле | Описание | Тип данных |
---|---|---|
mediaSessionId | Идентификатор медиасеанса прямой трансляции WebRTC, которую необходимо остановить. | string Пример: «5TbN9Y7jsz58_2sX5Pnfn-R81M...» |
Ошибки
В отношении этого признака могут быть возвращены следующие коды ошибок:
Сообщение об ошибке | RPC | Поиск неисправностей |
---|---|---|
Камера недоступна для потоковой передачи. | FAILED_PRECONDITION | Камера либо отключена, либо недоступна для трансляции из-за технической проблемы. |
Команда не поддерживается для дверного звонка. | FAILED_PRECONDITION | Поток WebRTC нельзя продлить на дверных звонках с питанием от батареек. Если трансляцию с дверного звонка необходимо просматривать дольше первоначальной продолжительности сеанса, остановите текущий поток и создайте новый. |
Доступ запрещен. | PERMISSION_DENIED | The user не предоставил developerсоответствующие разрешения на уровне устройства в Partner Connections Manager (PCM), необходимые для выполнения команды. При создании прямой трансляции WebRTC эта ошибка также может означать, что настройки звука в offerSdp неверны. |
Полный список кодов ошибок API см. в Справочнике кодов ошибок API.