CameraLiveStream Şeması

Nest Cam (eski) Nest Cam (dış veya iç mekan, pil) Projektörlü Nest Cam Nest Cam (iç mekan, kablolu) Nest Hub Max Nest Doorbell (eski) Nest Doorbell (pil) Nest Doorbell (kablolu) 

sdm.devices.traits.CameraLiveStream

Bu özellik, canlı yayını destekleyen tüm cihazlara aittir.

Alanlar

Alan Açıklama Veri Türü
maxVideoResolution Video canlı yayınının maksimum çözünürlüğü. VideoResolution
videoCodecs Canlı yayın için desteklenen video codec'leri. array(string)
Value: ["H264"]
audioCodecs Canlı yayın için desteklenen ses codec'leri. array(string)
Value: ["AAC"]
supportedProtocols Cihaz tarafından desteklenen akış protokolleri. Bu alanın değeri, cihazda hangi komutların desteklendiğini gösterir. Örneğin, bu alan WEB_RTC içeriyorsa yalnızca WEB_RTC komutları desteklenir. array(string)
Value: ["RTSP", "WEB_RTC"]

VideoResolution (maxVideoResolution)

Alan Açıklama Veri Türü
width Maksimum resim çözünürlüğü genişliği. İndirme URL'sinde sorgu parametresi olarak da kullanılabilir. int32
Örnek: 640
height Maksimum resim çözünürlüğü yüksekliği. İndirme URL'sinde sorgu parametresi olarak da kullanılabilir. int32
Örnek: 480

Örnek GET isteği ve yanıtı

İstek

GET /enterprises/project-id/devices/device-id

Yanıt

{
  "name" : "enterprises/project-id/devices/device-id",
  "traits" : {
    "sdm.devices.traits.CameraLiveStream" : {
      "maxVideoResolution" : {
        "width" : 640,
        "height" : 480
      },
      "videoCodecs" : ["H264"],
      "audioCodecs" : ["AAC"],
      "supportedProtocols" : ["WEB_RTC"]
    }
  }
}

Komutlar

GenerateRtspStream

Nest Cam (eski) Nest Hub Max Nest Doorbell (eski) 

RTSP canlı yayın URL'sine erişmek için jeton isteğinde bulunun.

RTSP canlı yayın URL'leri istemciler arasında paylaşılamaz. Yayın URL'si aynı anda yalnızca bir istemci tarafından kullanılabilir. Birden fazla istemci aynı anda aynı kameradan yayın yapmak istiyorsa her istemci için ayrı RTSP komutları gönderilmeli ve her istemci kendi yayın URL'sini kullanmalıdır.

GenerateRtspStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
  "params" : {}
}

Yanıt

{
  "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 yanıt alanları

Alan Açıklama Veri Türü
streamUrls RTSP canlı yayın URL'lerinin haritası. object
streamExtensionToken RTSP canlı yayını için streamToken süresini uzatmak üzere kullanılacak jeton. string
Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
streamToken RTSP canlı yayınına erişmek için kullanılacak jeton. string
Örnek: "g.0.streamingToken"
expiresAt Hem streamExtensionToken hem de streamToken öğesinin sona erdiği zaman (RFC 3339 biçiminde). string
Örnek: "2018-01-04T18:30:00.000Z"

ExtendRtspStream

Nest Cam (eski) Nest Hub Max Nest Doorbell (eski) 

Geçerli bir RTSP erişim jetonunun süresi dolmadan önce bu jetonun yerine geçecek yeni bir RTSP canlı yayın URL'si erişim jetonu isteyin. Bu, önceki bir ExtendRtspStream komut isteğinden alınan geçerli bir RTSP jetonunu değiştirmek için de kullanılır.

Kamera canlı yayın oturumları yalnızca 5 dakika sürer. Bir canlı yayının ömrünü uzatmanız gerekiyorsa oluşturduğunuz yayın biçimi için uygun CameraLiveStream özelliği FormatExtendStream komutunu kullanın.

ExtendRtspStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Yanıt

{
  "results" : {
    "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
    "streamToken" : "g.0.newStreamingToken",
    "expiresAt" : "2018-01-04T18:30:00.000Z"
  }
}

ExtendRtspStream isteği alanları

Alan Açıklama Veri Türü
streamExtensionToken RTSP akışı jetonunun süresini uzatma isteğinde bulunmak için kullanılacak jeton. string
Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."

ExtendRtspStream yanıt alanları

Alan Açıklama Veri Türü
streamExtensionToken Mevcut bir RTSP canlı yayınını görüntülemek ve akış jetonunun süresinin uzatılmasını istemek için kullanılacak jeton. string
Örnek: "dGNUlTU2CjY5Y3VKaTZwR3o4Y1..."
streamToken Mevcut bir RTSP canlı yayınına erişmek için kullanılacak yeni jeton. string
Örnek: "g.0.newStreamingToken"
expiresAt Hem streamExtensionToken hem de streamToken öğesinin sona erdiği zaman (RFC 3339 biçiminde). string
Örnek: "2018-01-04T18:30:00.000Z"

StopRtspStream

Nest Cam (eski) Nest Hub Max Nest Doorbell (eski) 

Geçerli bir RTSP erişim jetonunu geçersiz kılar ve bu erişim jetonuna bağlı RTSP canlı akışını durdurur.

StopRtspStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
  "params" : {
    "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
  }
}

Yanıt

{}

StopRtspStream isteği alanları

Alan Açıklama Veri Türü
streamExtensionToken Mevcut bir RTSP canlı yayınını geçersiz kılmak için kullanılacak jeton. string
Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."

GenerateWebRtcStream

Nest Cam (eski model) Nest Cam (açık veya kapalı alan, pil) Projektörlü Nest Cam Nest Cam (kapalı alan, kablolu) Nest Doorbell (pil) Nest Doorbell (kablolu) 

Bir cihaz için WebRTC canlı yayını oluşturun.

GenerateWebRtcStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream",
  "params" : {
    "offerSdp" : "offerSdp"
  }
}

Yanıt

{
  "results" : {
    "answerSdp" : "answerSdp",
    "expiresAt" : "2020-01-04T18:30:00.000Z",
    "mediaSessionId" : "A_anD5X1F7SwyERCI7EA2sAoI5..."
  }
}

GenerateWebRtcStream isteği alanları

Başarılı bir canlı yayın oluşturmayı öğrenmek için Web Uygulaması Örneği'ni kullanmanızı öneririz. Bu örnek, Nest kameralar için tüm SDP teklifi kısıtlamalarını karşılayan geçerli bir offerSdp oluşturur.

Nest kameralar için bir SDP teklifi aşağıdaki kısıtlamaları karşılamalıdır:

  • Yalnızca Unified biçimi desteklenir. B planı desteklenmez.
  • Teklifte tüm medya satırları (m=) bulunmalı ve şu sırada olmalıdır:
    1. Ses
    2. video
    3. uygulama
  • Trickle ICE desteklenir ancak zorunlu değildir.
  • Ses için yalnızca Opus codec'i desteklenir.
  • Ses ayarı a=recvonly (yalnızca al) olarak ayarlanmalıdır.
  • Teklif, \r\n veya \n yeni satır karakteriyle bitmelidir.

Geçerli bir teklif örneğini inceleyin

Biçimlendirilmemiş:

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

Biçimlendirildi:

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
Alan Açıklama Veri Türü
offerSdp WebRTC canlı yayınını gösterecek yerel cihaza özel bir SDP teklifi. string
Örnek: "offerSdp"

GenerateWebRtcStream yanıt alanları

answerSdp, yanıt alındıktan sonraki 30 saniye içinde canlı yayın oluşturmak için kullanılmalıdır. Aksi takdirde süresi dolar. Süresi dolarsa yeni bir answerSdp almak için GenerateWebRtcStream komutunu tekrar çalıştırın.

Canlı yayın için WebRTC kanalları açarken hem veri kanalı hem de video kanalı oluşturduğunuzdan emin olun.

Alan Açıklama Veri Türü
answerSdp WebRTC canlı yayınını gösterecek yerel cihazla kullanılacak bir SDP yanıtı. string
Örnek: "answerSdp"
expiresAt WebRTC canlı yayınına erişimin sona erdiği zaman (RFC 3339 biçiminde). string
Örnek: "2020-01-04T18:30:00.000Z"
mediaSessionId Oluşturulan WebRTC canlı yayınının medya oturumu kimliği. string
Örnek: "A_anD5X1F7SwyERCI7EA2sAoI5..."

ExtendWebRtcStream

Nest Cam (eski) Nest Cam (dış mekan veya iç mekan, pil) Projektörlü Nest Cam Nest Cam (iç mekan, kablolu) Nest Doorbell (kablolu)   Kablolu   

Mevcut bir WebRTC canlı yayınına erişimin süresi dolmadan uzatılmasını isteyin.

WebRTC akışı yalnızca kablolu kameralarda uzatılabilir. Pille çalışan bir kamera, şarj için prize takılıyken kabloyla çalışıyormuş gibi kabul edilir. Kamera pille çalışıyorsa etkin bir WebRTC akışını uzatma isteği yoksayılır.

Kamera canlı yayın oturumları yalnızca 5 dakika sürer. Bir canlı yayının ömrünü uzatmanız gerekiyorsa oluşturduğunuz yayın biçimi için uygun CameraLiveStream özelliği FormatExtendStream komutunu kullanın.

ExtendWebRtcStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream",
  "params" : {
    "mediaSessionId" : "A_anD5X1F7SwyERCI7EA2sAoI5..."
  }
}

Yanıt

{
  "results" : {
    "expiresAt" : "2018-01-04T18:30:00.000Z",
    "mediaSessionId" : "A_anD5X1F7SwyERCI7EA2sAoI5..."
  }
}

ExtendWebRtcStream isteği alanları

Alan Açıklama Veri Türü
mediaSessionId Süresi uzatılacak WebRTC canlı yayınının medya oturumu kimliği. string
Örnek: "A_anD5X1F7SwyERCI7EA2sAoI5..."

ExtendWebRtcStream yanıt alanları

Alan Açıklama Veri Türü
expiresAt WebRTC canlı yayınına erişimin sona ereceği yeni zaman (RFC 3339 biçiminde). string
Örnek: "2018-01-04T18:30:00.000Z"
mediaSessionId Uzatılan WebRTC canlı yayınının medya oturumu kimliği. string
Örnek: "A_anD5X1F7SwyERCI7EA2sAoI5..."

StopWebRtcStream

Nest Cam (eski model) Nest Cam (açık veya kapalı alan, pil) Projektörlü Nest Cam Nest Cam (kapalı alan, kablolu) Nest Doorbell (pil) Nest Doorbell (kablolu) 

Geçerli bir WebRTC medya oturumunu geçersiz kılar ve bu oturuma bağlı WebRTC canlı yayınını durdurur.

StopWebRtcStream isteği ve yanıtı

İstek

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream",
  "params" : {
    "mediaSessionId" : "A_anD5X1F7SwyERCI7EA2sAoI5..."
  }
}

Yanıt

{}

StopWebRtcStream isteği alanları

Alan Açıklama Veri Türü
mediaSessionId Durdurulacak WebRTC canlı yayınının medya oturumu kimliği. string
Örnek: "A_anD5X1F7SwyERCI7EA2sAoI5..."

Hatalar

Bu özellik ile ilgili olarak aşağıdaki hata kodları döndürülebilir:

Hata Mesajı TBG Sorun giderme
Kamera, yayın için kullanılamıyor. FAILED_PRECONDITION Kamera çevrimdışı veya teknik bir sorun nedeniyle yayın için kullanılamıyor.
Komut, kapı zili için desteklenmiyor. FAILED_PRECONDITION WebRTC akışı, pille çalışan kapı zillerinde uzatılamaz. Bir kapı zilindeki akışın ilk oturum süresinden daha uzun süre görüntülenmesi gerekiyorsa mevcut akışı durdurup yeni bir akış oluşturun.
İzin reddedildi. PERMISSION_DENIED user , bir komutun yürütülmesi için gerekli olan uygun cihaz düzeyinde izinleri İş Ortağı Bağlantıları Yöneticisi'nde (PCM) developer'e vermemiştir.

WebRTC canlı yayını oluştururken bu hata, offerSdp'deki ses ayarının yanlış olduğu anlamına da gelebilir.

API hata kodlarının tam listesi için API Hata Kodu Referansı'na bakın.