Akıllı Ev Kamera Akışı Geçiş Şeması
action.devices.traits.CameraStream
: Bu özellik, bir cihazın kamera yayınını nasıl kontrol edeceğinizi kapsar.
Bu özellik; akıllı ekranlara, Chromecast özellikli cihazlara veya akıllı telefonlara video feed'i akışı yapabilen cihazlara aittir. Genel olarak bunlar güvenlik kameraları veya bebek kameralarıdır. Ancak bu özellik, üzerinde kamera bulunan daha karmaşık cihazlar (ör. video konferans cihazları veya üzerinde kamera olan elektrikli süpürge) için de geçerli.
Cihaz ÖZELLİKLERİ
Bu özelliğe sahip cihazlar, SYNC
işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC
niyetlerini işleme hakkında daha fazla bilgi edinmek için Amaç karşılama bölümüne bakın.
Özellikler | Tür | Açıklama |
---|---|---|
cameraStreamSupportedProtocols |
Dizi |
Zorunludur. Kamera akışı için tercih edilen sıraya göre desteklenen medya türleri. Genellikle bu dizide, hedef yüzeyle uyumlu olan ilk protokol istenir. |
[item, ...] |
Dize |
Medya türü. Desteklenen değerler:
|
cameraStreamNeedAuthToken |
Boole |
Zorunludur. Hedef feed'in kamera feed'inin yayını için |
Örnekler
Birden fazla protokolü destekleyen ve yetkilendirme jetonu gerektirmeyen kamera.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kimlik jetonu gerektiren, tek bir protokolü destekleyen kamera.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Desteklenen akış protokolleri
Bu özellik aşağıdaki akış protokollerini destekler:
webrtc
: WebRTChls
: HTTP Canlı Yayındash
: HTTP üzerinden Dinamik Adaptif Akışsmooth_stream
: Düzgün Akışprogressive_mp4
: Progresif MP4 (çoğunlukla klipler için kullanılır)
Cihaz durumu
Yok.
Cihaz FTC'leri
Bu özelliğe sahip cihazlar, EXECUTE
işleminin bir parçası olarak aşağıdaki komutlara yanıt verebilir. EXECUTE
niyetlerini işleme hakkında daha fazla bilgi edinmek için Amaç karşılama bölümüne bakın.
action.devices.commands.GetCameraStream
Parametreler
Parametreler | Tür | Açıklama |
---|---|---|
StreamToChromecast |
Boole |
Zorunludur. Canlı yayının Chromecast cihazında oynatılıp oynatılmayacağı. |
SupportedStreamProtocols |
Dizi |
Zorunludur. İstenen hedef tarafından desteklenen medya türleri/biçimleri. |
[item, ...] |
Dize |
Medya türü. Desteklenen değerler:
|
Sonuçlar
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamAuthToken |
Dize |
Belirli bir alıcının akışa erişimi yetkilendirmesi için bir yetkilendirme jetonu. |
cameraStreamProtocol |
Dize |
Zorunludur. Akış URL'sinin işaret ettiği medya biçimi. Desteklenen değerler:
|
WebRTC olmayan sonuçlar
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamAccessUrl |
Dize |
Zorunludur. Gerçek zamanlı akışı |
cameraStreamReceiverAppId |
Dize |
|
WebRTC sonuçları
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamSignalingUrl |
Dize |
Zorunludur. Kamera ve istemci oturum açıklaması protokollerini (SDP) alma ve değiştirme için URL uç noktası. İstemci, istek başlığında kimlik doğrulama jetonu olarak |
cameraStreamOffer |
Dize |
Teklif oturumu açıklama protokolü (SDP). |
cameraStreamIceServers |
Dize |
RTCIceServer açıklamasıyla, kodlanmış bir JSON dizesi kullanan Etkileşimli Bağlantı Kuruluşu (ICE) sunucularını temsil eder. STUN (NAT için Oturum Geçiş Yardımcı Programları) sunucularını belirtmezseniz platform, varsayılan olarak Google'ın herkese açık STUN sunucularına bağlanır. Dönüş (NAT etrafında Geçişler Kullanarak Geçiş) sunucuları yalnızca sağlanan IP'lerin / ICE adaylarının herkese açık olarak erişime sahip olacağını garanti edemiyorsanız (örneğin, bir medya sunucusu, herkese açık ICE adayı, geçiş ICE adayı vb.) gereklidir. |
Örnekler
Ön kapı kamerasını göster (varsayılan Cast alıcı).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Ön kapı kamerasını göster (özel yayın alıcısı).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Ön kapı kamerasını göster (WebRTC akışı).
{ "cameraStreamIceServers": "[{\"urls\": \"stun:stun.l.partner.com:19302\"},{\"urls\":\"turn:192.158.29.39:3478?transport=udp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"},{\"urls\": \"turn:192.158.29.39:3478?transport=tcp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"}]", "cameraStreamSignalingUrl": "https://example.com/signaling/answer", "cameraStreamOffer": "o=- 4611731400430051336 2 IN IP4 127.0.0.1...", "cameraStreamProtocol": "webrtc" }
Cihaz HATALARI
Hataların ve istisnaların tam listesini inceleyin.WebRTC protokolü özellikleri
WebRTC kullanmanın avantajları arasında düşük gecikme süresi ve tek yönlü konuşma yer alır. WebRTC, POST
gövdesiyle ve JSON biçiminde yanıt veren bir POST
yöntemi kullanır.
WebRTC, şu anda Google Nest akıllı ekran ve Google TV'li Chromecast cihazlarında desteklenmektedir.
Bu bölümde WebRTC akış protokolü kullanımıyla ilgili koşullar açıklanmaktadır.
Veri Türü | Parametreler/Tanımlar |
---|---|
Sinyal isteği başlığı |
Başlık şu koşulları karşılamalıdır:
|
Sinyal isteği parametreleri | İstekte aşağıdaki parametreler bulunabilir:
|
Sinyal yanıtı parametreleri | Yanıtta aşağıdaki parametreler bulunabilir:
|
WebRTC Şartları ve Önerileri
- Google şu anda tek yönlü (yarı çift yönlü) iletişimi desteklemektedir.
- Paketleri ve rtcp-mux'i desteklemeniz gerekir.
- (D)TLS 1.2 veya sonraki bir sürümü kullanmanız gerekir.
- Trickle ICE desteklenmiyor. Tüm ICE adayları SDP'yi göndermeden önce toplanmalıdır.
- Bağlantının başarılı olma olasılığını artırmak için UDP/IPv4, TCP/IPv4, UDP/IPv6 ve TCP/IPv6 ICE adaylarını eklemeniz önemle tavsiye edilir.
Desteklenen video çözünürlükleri:
- Minimum: 480p
- Maksimum: 1080p
Desteklenen video codec'leri:
- VP8
- H.264
Desteklenen ses codec'leri:
- Opus (tercih edilen codec)
- G.711/PCMU
- G.722
Kaynaklar Arası Kaynak Paylaşımı
Kaynaklar Arası Kaynak Paylaşımı (CORS), tarayıcılara bir kaynakta çalışan web uygulamasının farklı bir kaynaktan seçilen kaynaklara erişmesine izin vermesini bildirmek için ek HTTP Üstbilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl
adlı sunucu, aşağıdaki üstbilgiyle yanıt vermelidir:
Access-Control-Allow-Origin: https://www.gstatic.com
Örnek sinyal isteği ve yanıtı
Aşağıdaki örnekte Google'ın sinyal hizmetinize gönderdiği bir istek ve Google'a verilen yanıt gösterilmektedir.
Header: Authentication: Bearer <cameraStreamAuthToken> Content-Type: application/json POST body: // When camera offer SDP is provided in the execution response, Google provides an answer SDP. { "action": "answer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // When camera offer SDP is not provided in execution response, Google generates and provides an offer SDP. { "action": "offer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Close the current stream session. { "action": "end" "deviceId": "123" }
// Response to accept the answer SDP in the request. Response Code : 200 {} // Response to provide the answer SDP from the service provider. Response Code : 200 { // When the camera offer SDP is not provided in the execution response, // Google provides the answer SDP via the signaling response. "action": "answer" "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Response to close current session. Response Code : 200 {}