Akıllı Ev Kamera Akış Özelliğ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'leri yayınlayabilen cihazlara aittir. Bunlar genellikle güvenlik kameraları veya bebek kameralarıdır. Ancak bu özellik, üzerinde kamera bulunan daha karmaşık cihazlar için de geçerlidir (örneğin, video konferans cihazları veya üzerinde kamera olan süpürge robot).
CİHAZ ÖZELLİKLERİ
Bu özelliğe sahip cihazlar, SYNC
işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC
intent'lerini ele alma hakkında daha fazla bilgi edinmek için Intent karşılama başlıklı makaleyi inceleyin.
Özellikler | Tür | Açıklama |
---|---|---|
cameraStreamSupportedProtocols |
Dizi |
Zorunludur. Tercibe göre sıralanan, kamera akışı için desteklenen medya türleri. Genellikle, bu dizindeki hedef yüzeyle uyumlu olan ilk protokol istenir. |
[item, ...] |
String |
Medya türü. Desteklenen değerler:
|
cameraStreamNeedAuthToken |
Boole |
Zorunludur. Hedef yüzeyin kamera feed'ini yayınlaması için |
Örnekler
Birden fazla protokol desteğine sahip ve yetkilendirme jetonu gerektirmeyen kamera.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Tek bir protokolü destekleyen ve kimlik doğrulama jetonu gerektiren 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
: Sorunsuz Yayınlamaprogressive_mp4
: Progresif MP4 (çoğunlukla klipler için kullanılır)
hls
,dash
,smooth_stream
ve progressive_mp4
protokolleri Cast cihazlara (Chromecast'ler, akıllı ekranlar ve Chromecast özellikli akıllı TV'ler) aktarılırken, aktarımı işlemek ve cihazda oluşturmak için bir Cast 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 bir özel web alıcısı oluşturması önerilir. Özel alıcıyı etkinleştirmek ve varsayılan alıcıyı devre dışı bırakmak için Cast uygulamanızı kaydettiğinizde oluşturulan alıcı uygulama kimliğini EXECUTE
yanıtının cameraStreamReceiverAppId
alanına ayarlayın.
Özel Web Alıcı uygulamaları hakkında daha fazla bilgi edinmek için Geliştiricinin Sitesi kılavuzunu ziyaret edin.
Cihaz DURUMLARI
Yok.
Cihaz KOMUTLARI
Bu özelliğe sahip cihazlar, EXECUTE
işlemi kapsamında aşağıdaki komutlara yanıt verebilir. EXECUTE
intent'lerini ele alma hakkında daha fazla bilgi edinmek için Intent karşılama başlıklı makaleyi inceleyin.
action.devices.commands.GetCameraStream
Parametreler
Parametreler | Tür | Açıklama |
---|---|---|
StreamToChromecast |
Boole |
Zorunludur. Aktarımın Chromecast cihazda oynatılıp oynatılmayacağını belirtir. |
SupportedStreamProtocols |
Dizi |
Zorunludur. İstenilen 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 kimlik doğrulama jetonu. |
cameraStreamProtocol |
String |
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 |
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çıklama protokollerini (SDP'ler) alıp değiştirmek için kullanılan URL uç noktası. İstemci, istek başlığında kimlik doğrulama jetonu olarak |
cameraStreamOffer |
String |
Teklif oturum açıklaması protokolü (SDP). |
cameraStreamIceServers |
String |
RTCIceServer açıklamasını içeren kodlanmış bir JSON dizesi kullanarak Etkileşimli Bağlantı Kurma (ICE) sunucularını temsil eder. STUN (NAT için Oturum Geçiş Araçları) sunucuları belirtmezseniz platform varsayılan olarak Google'ın herkese açık STUN sunucularını kullanır. TURN (NAT çevresinde geçiş için aktarıcı kullanma) sunucuları yalnızca sağlanan IP'lerin/ICE adaylarının herkese açık olarak erişilebilir olacağını garanti edemiyorsanız (ör. medya sunucusu, herkese açık ana makine ICE adayı, aktarıcı 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 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'nin avantajları düşük gecikme süresi ve tek yönlü konuşmadır. WebRTC, JSON biçiminde bir POST
gövdesi ve yanıtı olan 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ıyla ilgili şartlar açıklanmaktadır.
Veri Türü | Parametreler/Tanımlamalar |
---|---|
Sinyal istek başlığı |
Başlık aşağıdaki koşulları karşılamalıdır:
|
Sinyal istek parametreleri | İstek şu parametreleri içerebilir:
|
Sinyal yanıtı parametreleri | Yanıt şu parametreleri içerebilir:
|
WebRTC Şartları ve Önerileri
- Google şu anda tek yönlü (yarı çift yönlü) iletişimi desteklemektedir.
- Paketlemeyi ve rtcp-mux'i desteklemeniz gerekir.
- (D)TLS 1.2 veya sonraki bir sürümünü kullanmalısınız.
- Trickle ICE desteklenmez. SDP gönderilmeden önce tüm ICE adayları toplanmalıdır.
- Başarılı bir bağlantı 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 bir web uygulamasının farklı bir kaynaktaki belirli kaynaklara erişmesine izin vermesini söylemek için ek HTTP üst bilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl
'yi barındıran 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 {}