Akıllı ev işlemlerinin nasıl geliştirileceğini öğrenebileceğiniz yeni adres olan Google Home Geliştirici Merkezi'ne hoş geldiniz. Not: Actions Console'da işlem derlemeye devam edersiniz.

Akıllı Ev CameraStream Özellik Şeması

action.devices.traits.CameraStream: Bu özellik, cihazın kamera akışını nasıl kontrol edeceğinizi kapsar.

Bu özellik; akıllı ekranlara, Chromecast özellikli cihazlara veya akıllı telefonlara video feed'i gönderebilen cihazlara aittir. Genel olarak bunlar güvenlik kameraları veya bebek kameralarıdır. Bu özellik, üzerinde kamera bulunan daha karmaşık cihazlar (ör. video konferans cihazları veya kameralı süpürge robotu) için de geçerlidir.

Cihaz ATTRIBUTES

Bu özelliğe sahip cihazlar, SYNC işleminin bir parçası olarak aşağıdaki özellikleri bildirebilir. SYNC amaçlarını işleme hakkında daha fazla bilgi için Amaç karşılama bölümüne bakın.

Özellikler Type Açıklama
cameraStreamSupportedProtocols Dizi

Zorunludur.

Kamera akışı için desteklenen medya türleri, tercihe göre sıralanır. 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 (en çok klipler için kullanılır)
webrtc
WebRTC
cameraStreamNeedAuthToken Boole

Zorunludur.

Hedef feed'in kamera feed'ini canlı oynatması için cameraStreamAuthToken aracılığıyla bir kimlik doğrulama jetonu sağlanıp sağlanmayacağı.

Örnekler

Birden fazla protokolü destekleyen, kimlik doğrulama jetonu gerektirmeyen kamera.

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

Kimlik doğrulama jetonu gerektiren tek bir protokolü destekleyen kamera.

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

Desteklenen akış protokolleri

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

Cihaz STATUS

Yok.

Cihaz Komisyonları

Bu özelliğe sahip cihazlar, EXECUTE işleminin bir parçası olarak aşağıdaki komutlara yanıt verebilir. EXECUTE amaçlarını işleme hakkında daha fazla bilgi için Amaç karşılama bölümüne bakın.

action.devices.commands.GetCameraStream

Parametreler

Parametreler Type Açıklama
StreamToChromecast Boole

Zorunludur.

Yayının bir 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 (en çok klipler için kullanılır)
webrtc
WebRTC

Sonuçlar

Sonuçlar Type Açıklama
cameraStreamAuthToken Dize

Akışa erişim yetkisi vermek için ilgili alıcının yetkilendirme jetonudır. cameraStreamNeedAuthToken doğruysa ve bu değer sağlanmazsa yetkilendirme jetonu olarak kullanıcının OAuth kimlik bilgileri kullanılır.

cameraStreamProtocol Dize

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 Adaptif Akış
smooth_stream
Sorunsuz Yayın
progressive_mp4
Progresif MP4 (en çok klipler için kullanılır)
webrtc
WebRTC

WebRTC dışı sonuçlar

Sonuçlar Type Açıklama
cameraStreamAccessUrl Dize

Zorunludur.

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

cameraStreamReceiverAppId Dize

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

WebRTC sonuçları

Sonuçlar Type Açıklama
cameraStreamSignalingUrl Dize

Zorunludur.

Kamera ve istemci oturum açıklaması protokollerini (SDP) almak ve 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 Dize

Teklif oturum açıklaması protokolü (SDP).

cameraStreamIceServers Dize

RTCIceServer açıklamasına sahip kodlanmış bir JSON dizesi kullanan Etkileşimli Bağlantı Oluşturma (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ını kullanır. Turn (NASA'nın Geçişlerini Kullanarak Geçiş) sunucuları yalnızca sağlanan IP'lere / ICE adaylarının herkese açık olacağını garanti edemiyorsanız (ör.bir medya sunucusu, halka açık ICE adayı, geçiş ICE adayı vb.) 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 HATALARI

Hataların ve istisnaların tam listesini inceleyin.

WebRTC protokolü özellikleri

WebRTC kullanmanın faydaları arasında düşük gecikme 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 Smart Display ve Google TV'li Chromecast cihazlarında desteklenmektedir.

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

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

Başlık, aşağıdaki şartları karşılamalıdır:

  • Kimlik doğrulama: Kimlik doğrulama başlığı, Bearer jeton türüyle cameraStreamAuthToken için GetCameraStream dönüş 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çıklaması 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 şu parametreler bulunabilir:

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

WebRTC Şartları ve Önerileri

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

Desteklenen video codec'leri:

  • Başkan Yardımcısı 8
  • 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 vermelerini bildirmek için ek HTTP Üstbilgileri kullanan bir mekanizmadır. cameraStreamSignalingUrl öğesini barındıran sunucu aşağıdaki başlıkla 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 karşılık gelen 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
{}