Akıllı Ev CameraStream Özellik Şeması
action.devices.traits.CameraStream
: Bu özellik, cihazın kamera akışını nasıl kontrol edeceğinizi kapsar.
Bu özellik; akıllı ekranlara, Chromecast özellikli cihazlara veya akıllı telefonlara video feed'i gönderebilen cihazlara aittir. Genel olarak bunlar güvenlik kameraları veya bebek kameralarıdır. Bu özellik, üzerinde kamera bulunan daha karmaşık cihazlar (ör. video konferans cihazları veya kameralı süpürge robotu) için de geçerlidir.
Cihaz ATTRIBUTES
Bu özelliğe sahip cihazlar, SYNC
işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC
amaçlarını işleme hakkında daha fazla bilgi için Amaç karşılama bölümüne bakın.
Özellikler | Type | Açıklama |
---|---|---|
cameraStreamSupportedProtocols |
Dizi |
Zorunludur. Kamera akışı için desteklenen medya türleri, tercihe göre sıralanır. 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'ini canlı oynatması için |
Örnekler
Birden fazla protokolü destekleyen, kimlik doğrulama jetonu gerektirmeyen kamera.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kimlik doğrulama 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 (en çok klipler için kullanılır)
Cihaz STATUS
Yok.
Cihaz Komisyonları
Bu özelliğe sahip cihazlar, EXECUTE
işleminin bir parçası olarak aşağıdaki komutlara yanıt verebilir. EXECUTE
amaçlarını işleme hakkında daha fazla bilgi için Amaç karşılama bölümüne bakın.
action.devices.commands.GetCameraStream
Parametreler
Parametreler | Type | Açıklama |
---|---|---|
StreamToChromecast |
Boole |
Zorunludur. Yayının bir 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 | Type | Açıklama |
---|---|---|
cameraStreamAuthToken |
Dize |
Akışa erişim yetkisi vermek için ilgili alıcının yetkilendirme jetonudır. |
cameraStreamProtocol |
Dize |
Zorunludur. Akış URL'sinin yönlendirdiği medya biçimi. Desteklenen değerler:
|
WebRTC dışı sonuçlar
Sonuçlar | Type | Açıklama |
---|---|---|
cameraStreamAccessUrl |
Dize |
Zorunludur. Gerçek zamanlı akışı |
cameraStreamReceiverAppId |
Dize |
|
WebRTC sonuçları
Sonuçlar | Type | Açıklama |
---|---|---|
cameraStreamSignalingUrl |
Dize |
Zorunludur. Kamera ve istemci oturum açıklaması protokollerini (SDP) almak ve değiştirmek için kullanılan URL uç noktası. İstemci, istek başlığında kimlik doğrulama jetonu olarak |
cameraStreamOffer |
Dize |
Teklif oturum açıklaması protokolü (SDP). |
cameraStreamIceServers |
Dize |
RTCIceServer açıklamasına sahip kodlanmış bir JSON dizesi kullanan Etkileşimli Bağlantı Oluşturma (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ını kullanır. Turn (NASA'nın Geçişlerini Kullanarak Geçiş) sunucuları yalnızca sağlanan IP'lere / ICE adaylarının herkese açık olacağını garanti edemiyorsanız (ör.bir medya sunucusu, halka açık ICE adayı, geçiş ICE adayı vb.) gereklidir. |
Örnekler
Ön kapı kamerasını göster (varsayılan Cast alıcısı).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Ön kapı kamerasını göster (özel Cast 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 faydaları arasında düşük gecikme 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 Smart Display ve Google TV'li Chromecast cihazlarında desteklenmektedir.
Bu bölümde WebRTC akış protokolü kullanımıyla ilgili şartlar açıklanmaktadır.
Veri Türü | Parametreler/Tanımlar |
---|---|
Sinyal isteği başlığı |
Başlık, aşağıdaki şartları karşılamalıdır:
|
Sinyal isteği parametreleri | İstekte aşağıdaki parametreler bulunabilir:
|
Sinyal yanıt parametreleri | Yanıtta şu parametreler bulunabilir:
|
WebRTC Şartları ve Önerileri
- Google şu anda tek yönlü (yarı çift yönlü) iletişimi destekler.
- Paketleri ve rtcp-mux'i desteklemeniz gerekir.
- (D)TLS 1.2 veya sonraki bir sürümü kullanmanız gerekir.
- Trickle ICE desteklenmez. 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: 1.080p
Desteklenen video codec'leri:
- Başkan Yardımcısı 8
- 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 vermelerini bildirmek için ek HTTP Üstbilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl
öğesini barındıran sunucu aşağıdaki başlıkla 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 karşılık gelen 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 {}