Akıllı Ev Kamerası Akışı Özellik Şeması
action.devices.traits.CameraStream
- Bu özellik, bir cihazın kamera akışının nasıl kontrol edileceğini kapsar.
Bu özellik, akıllı ekranlara, Chromecast özellikli cihazlara veya akıllı telefonlara video akışı akışı yapabilen cihazlara aittir. Bunlar genel olarak güvenlik kameraları veya bebek kameralarıdır. Ancak bu özellik, kamera bulunan daha karmaşık cihazlar için de geçerlidir (örneğin, video konferans cihazları veya üzerinde kamerası olan bir süpürge robotu).
Cihaz ATTRIBUTES
Bu özelliğe sahip cihazlar, SYNC
işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC
amaçlarını yönetme 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 desteklenen medya türleri (tercihe göre sıralanır). Tipik olarak bu dizide, hedef yüzeyle uyumlu olan ilk protokol istenir. |
[item, ...] |
String |
Medya türü. Desteklenen değerler:
|
cameraStreamNeedAuthToken |
Boole |
Zorunludur. Kamera feed'ini yayınlamak amacıyla hedef yüzey için |
Örnekler
Birden fazla protokol desteği olan, yetkilendirme jetonu gerektirmeyen kamera.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Yetkilendirme jetonu gerektiren, tek 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 Uyarlanabilir Akışsmooth_stream
: Kesintisiz Akışprogressive_mp4
: Progresif MP4 (genellikle klipler için kullanılır)
Yayın cihazlarına (Chromecast, akıllı ekranlar ve Chromecast özellikli akıllı TV'ler)
hls
, dash
, smooth_stream
ve
progressive_mp4
protokolleri yayınlarken, akışı işleyip cihazda oluşturmak için bir Yayın Web Alıcısı başlatılır. Geliştiricinin hata ayıklama araçlarına erişimi etkinleştirmek, oynatıcı davranışını özelleştirmek, kullanıcı arayüzü markasını özelleştirmek ve analizleri dahil etmek için Özel Web Alıcısı oluşturması önerilir. Özel alıcının kullanımını etkinleştirmek ve varsayılan alıcıyı kullanmayı bırakmak için EXECUTE
yanıtının cameraStreamReceiverAppId
alanında Cast uygulamanızı kaydettiğinizde oluşturulan alıcı uygulama kimliğini ayarlayın.
Özel Web Alıcısı uygulamaları hakkında daha fazla bilgi edinmek için Geliştirici Sitesi kılavuzunu ziyaret edin.
Cihaz STATES
Yok.
Cihaz COMMANDS
Bu özelliğe sahip cihazlar, EXECUTE
işleminin bir parçası olarak aşağıdaki komutlara yanıt verebilir. EXECUTE
amaçlarını yönetme 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. Akışın bir Chromecast cihazda oynatılıp oynatılmayacağı. |
SupportedStreamProtocols |
Dizi |
Zorunludur. İstenen hedef tarafından desteklenen medya türleri/biçimleri. |
[item, ...] |
String |
Medya türü. Desteklenen değerler:
|
Sonuçlar
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamAuthToken |
String |
Belirli bir alıcının akışa erişimi yetkilendirmesi için bir yetkilendirme jetonu. |
cameraStreamProtocol |
String |
Zorunludur. Akış URL'sinin yönlendirdiği medya biçimi. Desteklenen değerler:
|
WebRTC olmayan sonuçlar
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamAccessUrl |
String |
Zorunludur. Gerçek zamanlı akışı |
cameraStreamReceiverAppId |
String |
|
WebRTC sonuçları
Sonuçlar | Tür | Açıklama |
---|---|---|
cameraStreamSignalingUrl |
String |
Zorunludur. Kamera ve istemci oturum açıklaması protokollerini (SDP'ler) alıp almak için kullanılan URL uç noktası. İstemci, istek başlığında kimlik doğrulama jetonu olarak |
cameraStreamOffer |
String |
Teklif oturumu açıklama protokolü (SDP). |
cameraStreamIceServers |
String |
RTCIceServer tanımıyla birlikte, kodlanmış bir JSON dizesi kullanan Etkileşimli Bağlantı Kurma (ICE) sunucularını temsil eder. STUN (NAT için Session Traversal Utilities) sunucularını belirtmezseniz platform varsayılan olarak Google'ın herkese açık STUN sunucularını kullanır. TURN (NAT çevresinde Geçiş Kullanarak Geçiş) sunucuları, yalnızca sağlanan IP'lerin / ICE adaylarının herkesin erişimine açık olacağını (ör.bir medya sunucusu, genel ana makine ICE adayı, geçiş ICE adayı vb. aracılığıyla) garanti edemiyorsanız 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 ERRORS
Hataların ve istisnaların tam listesini inceleyin.WebRTC protokolü özellikleri
WebRTC kullanmanın avantajları arasında düşük gecikme ve tek yönlü konuşma bulunur. WebRTC, POST
gövdesi ve JSON biçiminde yanıt içeren bir POST
yöntemi kullanır.
WebRTC, şu anda Google Nest Akıllı Ekran ve Google TV Yüklü Chromecast cihazlarda desteklenmektedir.
Bu bölümde, WebRTC akış protokolünün kullanımı ile ilgili gereksinimler açıklanmaktadır.
Veri Türü | Parametreler/Tanımlar |
---|---|
Sinyal isteği başlığı |
Başlık şu şartları karşılamalıdır:
|
Sinyal isteği parametreleri | İstek aşağıdaki parametreleri içerebilir:
|
Sinyal yanıtı parametreleri | Yanıt aşağıdaki parametreleri içerebilir:
|
WebRTC Gereksinimleri ve Önerileri
- Google şu anda 1 yönlü (yarım çift yönlü) iletişimi desteklemektedir.
- Paketleme ve rtcp-mux özelliklerini desteklemelisiniz.
- (D)TLS 1.2 veya daha yeni bir sürüm kullanmanız gerekir.
- Trickle ICE desteklenmez. SDP'yi göndermeden önce tüm ICE adayları 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ı
Merkezler Arası Kaynak Paylaşımı (CORS), tarayıcılara bir kaynakta çalışan web uygulamasının, seçili kaynaklara farklı bir kaynaktan erişmesine izin vermelerini bildirmek için ek HTTP üst bilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl
sunucusunu barındıran sunucu şu ü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 ilgili 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 {}