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:

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

Zorunludur.

Hedef yüzeyin kamera feed'ini yayınlaması için cameraStreamAuthToken üzerinden kimlik doğrulama jetonu sağlanıp sağlanmayacağı. Jetonun geçerlilik süresi 12 saattir.

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

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:

hls
HTTP Canlı Yayın
dash
HTTP üzerinden Dinamik Adaptif Akış
smooth_stream
Sorunsuz Akış
progressive_mp4
Progresif MP4 (çoğunlukla 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 kimlik doğrulama jetonu. cameraStreamNeedAuthToken doğruysa ve bu değer sağlanmazsa kimlik doğrulama jetonu olarak kullanıcının OAuth kimlik bilgileri kullanılır. Jeton ömrü 12 saattir.

cameraStreamProtocol String

Zorunludur.

Akış URL'sinin işaret ettiğ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 (çoğunlukla 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 Cast alıcı kimliği; sağlanmazsa varsayılan alıcı kullanılır.

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

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:

  • Kimlik doğrulama: Kimlik doğrulama üstbilgisi, cameraStreamAuthToken için GetCameraStream döndürülen değerdeki kimlik doğrulama jetonunu Bearer jeton türüyle kullanmalıdır.
  • İçerik Türü: application/json.
Sinyal istek parametreleri

İstek şu parametreleri içerebilir:

  • action: Dize. Geçerli değerler:
    • offer: Sağlayıcıdan SDP mesajı sunma.
    • answer: Sağlayıcıdan gelen 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 dayanır. action "end" ise bu parametre boş olabilir.
Sinyal yanıtı parametreleri

Yanıt şu parametreleri içerebilir:

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

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.

İ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
{}