Akıllı ev işlemlerinin nasıl geliştirileceğini öğrenmek için yeni adres olan Google Home Geliştirici Merkezi'ne hoş geldiniz. Not: Actions Console'da işlem oluşturmaya devam edersiniz.
Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Akıllı Ev Kamera Akışı Geç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'i akışı yapabilen cihazlara aittir. Genel olarak bunlar güvenlik kameraları veya bebek kameralarıdır. Ancak bu özellik, üzerinde kamera bulunan daha karmaşık cihazlar (ör. video konferans cihazları veya üzerinde kamera olan elektrikli süpürge) için de geçerli.

Cihaz ÖZELLİKLERİ

Bu özelliğe sahip cihazlar, SYNC işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC niyetlerini işleme 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 tercih edilen sıraya göre desteklenen medya türleri. Genellikle bu dizide, hedef yüzeyle uyumlu olan ilk protokol istenir.

[item, ...] Dize

Medya türü.

Desteklenen değerler:

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

Zorunludur.

Hedef feed'in kamera feed'inin yayını için cameraStreamAuthToken aracılığıyla bir yetkilendirme jetonu sağlanıp sağlanmayacağı.

Örnekler

Birden fazla protokolü destekleyen ve yetkilendirme jetonu gerektirmeyen kamera.

{
  "cameraStreamSupportedProtocols": [
    "webrtc",
    "hls",
    "dash",
    "smooth_stream",
    "progressive_mp4"
  ],
  "cameraStreamNeedAuthToken": false
}

Kimlik jetonu gerektiren, tek bir protokolü destekleyen kamera.

{
  "cameraStreamSupportedProtocols": [
    "hls"
  ],
  "cameraStreamNeedAuthToken": true
}

Desteklenen akış protokolleri

Bu özellik aşağıdaki akış protokollerini destekler:

Cihaz durumu

Yok.

Cihaz FTC'leri

Bu özelliğe sahip cihazlar, EXECUTE işleminin bir parçası olarak aşağıdaki komutlara yanıt verebilir. EXECUTE niyetlerini işleme 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.

Canlı yayının 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:

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

Sonuçlar

Sonuçlar Tür Açıklama
cameraStreamAuthToken Dize

Belirli bir alıcının akışa erişimi yetkilendirmesi için bir yetkilendirme jetonu. cameraStreamNeedAuthToken doğruysa ve bu değer sağlanmazsa kullanıcının OAuth kimlik bilgileri kimlik doğrulama jetonu olarak kullanılır.

cameraStreamProtocol Dize

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 Adaptif 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 Dize

Zorunludur.

Gerçek zamanlı akışı cameraStreamProtocol tarafından belirtilen biçimde almaya yönelik URL uç noktası.

cameraStreamReceiverAppId Dize

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

WebRTC sonuçları

Sonuçlar Tür Açıklama
cameraStreamSignalingUrl Dize

Zorunludur.

Kamera ve istemci oturum açıklaması protokollerini (SDP) alma ve değiştirme için URL uç noktası. İstemci, istek başlığında kimlik doğrulama jetonu olarak cameraStreamAuthToken kullanan sinyal URL'sini döndürmelidir.

cameraStreamOffer Dize

Teklif oturumu açıklama protokolü (SDP).

cameraStreamIceServers Dize

RTCIceServer açıklamasıyla, kodlanmış bir JSON dizesi kullanan Etkileşimli Bağlantı Kuruluşu (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ına bağlanır. Dönüş (NAT etrafında Geçişler Kullanarak Geçiş) sunucuları yalnızca sağlanan IP'lerin / ICE adaylarının herkese açık olarak erişime sahip olacağını garanti edemiyorsanız (örneğin, bir medya sunucusu, herkese açık ICE adayı, geçiş 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 yayın 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 avantajları arasında düşük gecikme süresi 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 akıllı ekran ve Google TV'li Chromecast cihazlarında desteklenmektedir.

Bu bölümde WebRTC akış protokolü kullanımıyla ilgili koşullar açıklanmaktadır.

Veri Türü Parametreler/Tanımlar
Sinyal isteği başlığı

Başlık şu koşulları karşılamalıdır:

  • Kimlik doğrulama: Kimlik doğrulama üstbilgisi, Bearer jeton türüne sahip cameraStreamAuthToken için GetCameraStream döndürme değerindeki kimlik doğrulama jetonunu kullanmalıdır.
  • İçerik Türü: application/json.
Sinyal isteği parametreleri

İstekte aşağıdaki parametreler bulunabilir:

  • action: Dize. Geçerli değerler şunlardır:
    • offer: Sağlayıcıdan SDP mesajı gönderin.
    • 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. Benzer bağlantı için Oturum Açıklama Protokolü mesajı içerir. İçerik, action parametresinin değerini temel alır. action değeri "end" ise bu parametre boş olabilir.
Sinyal yanıtı parametreleri

Yanıtta aşağıdaki parametreler bulunabilir:

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

WebRTC Şartları ve Önerileri

  • Google şu anda tek yönlü (yarı çift yönlü) iletişimi desteklemektedir.
  • Paketleri ve rtcp-mux'i desteklemeniz gerekir.
  • (D)TLS 1.2 veya sonraki bir sürümü kullanmanız gerekir.
  • Trickle ICE desteklenmiyor. 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: 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ı

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 vermesini bildirmek için ek HTTP Üstbilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl adlı 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
{}