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:

hls
HTTP Canlı Yayını
dash
HTTP üzerinden Dinamik Uyarlanabilir Akış
smooth_stream
Sorunsuz Yayın
progressive_mp4
Progresif MP4 (genellikle klipler için kullanılır)
webrtc
WebRTC
cameraStreamNeedAuthToken Boole

Zorunludur.

Kamera feed'ini yayınlamak amacıyla hedef yüzey için cameraStreamAuthToken aracılığıyla bir yetkilendirme jetonu sağlanıp sağlanmayacağı.

Ö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:

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:

hls
HTTP Canlı Yayını
dash
HTTP üzerinden Dinamik Uyarlanabilir Akış
smooth_stream
Sorunsuz Yayın
progressive_mp4
Progresif MP4 (genellikle klipler için kullanılır)
webrtc
WebRTC

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. cameraStreamNeedAuthToken true (doğru) değerine ayarlanırsa ve bu değer sağlanmazsa kullanıcının OAuth kimlik bilgileri, yetkilendirme jetonu olarak kullanılır.

cameraStreamProtocol String

Zorunludur.

Akış URL'sinin yönlendirdiği medya biçimi. SupportedStreamProtocols komut parametresinde listelenen protokollerden biri olmalıdır.

Desteklenen değerler:

hls
HTTP Canlı Yayını
dash
HTTP üzerinden Dinamik Uyarlanabilir Akış
smooth_stream
Sorunsuz Yayın
progressive_mp4
Progresif MP4 (genellikle klipler için kullanılır)
webrtc
WebRTC

WebRTC olmayan sonuçlar

Sonuçlar Tür Açıklama
cameraStreamAccessUrl String

Zorunludur.

Gerçek zamanlı akışı cameraStreamProtocol tarafından belirtilen biçimde almak için URL uç noktası.

cameraStreamReceiverAppId String

StreamToChromecast parametresi doğru olduğunda kamera akışını işlemek için yayın alıcısı kimliği. Sağlanmamışsa varsayılan alıcı kullanılır.

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 cameraStreamAuthToken değerini kullanan sinyal URL'sini döndürmelidir.

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:

  • Kimlik doğrulama: Kimlik doğrulama başlığı, Bearer jeton türüne sahip cameraStreamAuthToken için GetCameraStream döndürülen değerdeki yetkilendirme jetonunu kullanmalıdır.
  • İçerik Türü: application/json.
Sinyal isteği parametreleri

İstek aşağıdaki parametreleri içerebilir:

  • action: Dize. Geçerli değerler şunlardır:
    • offer: Sağlayıcıdan SDP mesajı sunun.
    • answer: Sağlayıcıdan SDP mesajını yanıtlayın.
    • end: Geçerli oturumu kapatır.
  • deviceId: Dize. SYNC veya EXECUTE isteğinde bildirilen cihaz kimliği.
  • sdp: Dize. Eş bağlantı için Oturum Açıklama Protokolü mesajını içerir. İçerik, action parametresinin değerine bağlıdır. action "end" ise bu parametre boş olabilir.
Sinyal yanıtı parametreleri

Yanıt aşağıdaki parametreleri içerebilir:

  • action: Dize. Yanıt değeri answer türünde olmalıdır.
  • sdp: Dize. Yanıt için SDP mesajı.

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.

İstek
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"
}

Yanıt
// 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
{}