Skema Trait CameraStream Smart Home
action.devices.traits.CameraStream
- Fitur ini mencakup cara mengontrol streaming kamera perangkat.
Ciri ini milik perangkat yang memiliki kemampuan untuk melakukan streaming feed video ke layar smart, perangkat berkemampuan Chromecast, atau smartphone. Pada umumnya, ini adalah kamera keamanan atau kamera bayi. Namun, sifat ini juga berlaku untuk perangkat yang lebih kompleks yang memiliki kamera (misalnya, perangkat konferensi video atau robot penyedot debu dengan kamera di dalamnya).
ATRIBUT Perangkat
Perangkat dengan karakteristik ini dapat melaporkan atribut
berikut sebagai bagian dari operasi SYNC
. Untuk mempelajari
penanganan intent SYNC
lebih lanjut, lihat
Fulfillment intent.
Atribut | Jenis | Deskripsi |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Wajib. Jenis media yang didukung untuk streaming kamera, diurutkan berdasarkan preferensi. Biasanya, protokol pertama dalam array ini yang kompatibel dengan platform target akan diminta. |
[item, ...] |
String |
Jenis media. Nilai yang didukung:
|
cameraStreamNeedAuthToken |
Boolean |
Wajib. Apakah token autentikasi akan diberikan melalui |
Contoh
Kamera dengan dukungan beberapa protokol, tidak memerlukan token autentikasi.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kamera yang mendukung satu protokol, yang memerlukan token autentikasi.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Protokol streaming yang didukung
Fitur ini mendukung protokol streaming berikut:
webrtc
: WebRTChls
: HTTP Live Streamingdash
: Streaming Adaptif Dinamis melalui HTTPsmooth_stream
: Streaming Lancarprogressive_mp4
: MP4 progresif (sebagian besar digunakan untuk klip)
Saat melakukan streaming protokol hls
,dash
,smooth_stream
, dan
progressive_mp4
ke perangkat Cast (Chromecast, layar smart, dan
smart TV berkemampuan Chromecast), Penerima Web Cast akan diluncurkan untuk memproses streaming dan merendernya
di perangkat. Sebaiknya developer membuat
Penerima Web Kustom untuk
mengaktifkan akses ke alat proses debug, menyesuaikan perilaku pemain, menyesuaikan branding UI, dan menyertakan
analisis. Untuk mengaktifkan penggunaan penerima kustom dan memilih tidak menggunakan penerima default,
setel ID aplikasi penerima yang dibuat saat Anda
mendaftarkan aplikasi Cast
di kolom cameraStreamReceiverAppId
respons EXECUTE
.
Untuk mempelajari aplikasi Penerima Web Kustom lebih lanjut, buka panduan Situs Developer.
Perangkat STATES
Tidak ada.
PERINTAH Perangkat
Perangkat dengan karakteristik ini dapat merespons perintah berikut sebagai bagian dari operasi EXECUTE
. Untuk mempelajari
penanganan intent EXECUTE
lebih lanjut, lihat
Fulfillment intent.
action.devices.commands.GetCameraStream
Parameter
Parameter | Jenis | Deskripsi |
---|---|---|
StreamToChromecast |
Boolean |
Wajib. Apakah streaming akan diputar di perangkat Chromecast. |
SupportedStreamProtocols |
Array |
Wajib. Jenis/format media yang didukung oleh tujuan yang diinginkan. |
[item, ...] |
String |
Jenis media. Nilai yang didukung:
|
Hasil
Hasil | Jenis | Deskripsi |
---|---|---|
cameraStreamAuthToken |
String |
Token autentikasi untuk penerima tertentu guna mengizinkan akses ke streaming. Jika |
cameraStreamProtocol |
String |
Wajib. Format media yang dituju oleh URL streaming. Harus berupa salah satu protokol yang tercantum dalam parameter perintah Nilai yang didukung:
|
Hasil Non-WebRTC
Hasil | Jenis | Deskripsi |
---|---|---|
cameraStreamAccessUrl |
String |
Wajib. Endpoint URL untuk mengambil streaming real-time dalam format yang ditentukan oleh |
cameraStreamReceiverAppId |
String |
ID penerima transmisi untuk memproses streaming kamera saat parameter |
Hasil WebRTC
Hasil | Jenis | Deskripsi |
---|---|---|
cameraStreamSignalingUrl |
String |
Wajib. Endpoint URL untuk mengambil dan bertukar protokol deskripsi sesi (SDP) kamera dan klien. Klien harus menampilkan URL pemberian sinyal yang menggunakan |
cameraStreamOffer |
String |
Protokol deskripsi sesi penawaran (SDP). |
cameraStreamIceServers |
String |
Mewakili server Interactive Connectivity Buildment (ICE) yang menggunakan string JSON yang dienkode dengan deskripsi RTCIceServer. Jika Anda tidak menentukan server STUN (Session Traversal Utilitas untuk NAT), platform akan ditetapkan secara default ke server STUN publik Google. Server turn (Traversal Menggunakan Relay di sekitar NAT) hanya diperlukan jika Anda tidak dapat menjamin bahwa kandidat IP / ICE yang disediakan akan dapat diakses secara publik (misalnya melalui server media, kandidat ICE host publik, kandidat ICE relai, dll.). |
Contoh
Tampilkan kamera pintu depan (penerima Transmisi default).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Tampilkan kamera pintu depan (penerima Transmisi kustom).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Tampilkan kamera pintu depan (aliran WebRTC).
{ "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" }
KESALAHAN Perangkat
Lihat daftar lengkap error dan pengecualian.Spesifikasi protokol WebRTC
Manfaat penggunaan WebRTC adalah latensi rendah dan komunikasi 1 arah. WebRTC menggunakan metode POST
dengan isi dan respons POST
dalam format JSON.
WebRTC saat ini didukung di perangkat Layar Smart Google Nest dan Chromecast dengan Google TV.
Bagian ini menjelaskan persyaratan saat menggunakan protokol streaming WebRTC.
Jenis Data | Parameter/Definisi |
---|---|
Header permintaan sinyal |
Header harus memenuhi persyaratan berikut:
|
Parameter permintaan sinyal | Permintaan tersebut dapat menyertakan parameter berikut:
|
Parameter respons sinyal | Responsnya dapat mencakup parameter berikut:
|
Persyaratan dan Rekomendasi WebRTC
- Google saat ini mendukung komunikasi 1 arah (half duplex).
- Anda harus mendukung pemaketan dan rtcp-mux.
- Anda harus menggunakan (D)TLS 1.2 atau yang lebih baru.
- Trickle ICE tidak didukung. Semua kandidat ICE harus dikumpulkan terlebih dahulu sebelum mengirimkan SDP.
- Sangat disarankan agar Anda menyertakan kandidat UDP/IPv4, TCP/IPv4, UDP/IPv6 dan TCP/IPv6 ICE untuk meningkatkan kemungkinan keberhasilan koneksi.
Resolusi video yang didukung:
- Minimum: 480p
- Maksimum: 1080p
Codec video yang didukung:
- VP8
- H.264
Codec audio yang didukung:
- Opus (codec yang lebih disukai)
- G.711/PCMU
- G.722
Cross-Origin Resource Sharing (CORS)
Cross-Origin Resource Sharing (CORS) adalah mekanisme yang menggunakan Header HTTP tambahan untuk memberi tahu
browser agar mengizinkan aplikasi web yang berjalan di satu asal untuk mengakses resource yang dipilih dari
asal yang berbeda. Server yang menghosting cameraStreamSignalingUrl
harus merespons dengan header berikut:
Access-Control-Allow-Origin: https://www.gstatic.com
Contoh permintaan dan respons pemberian sinyal
Contoh berikut menunjukkan permintaan yang dikirimkan Google ke layanan pemberian sinyal Anda dan respons yang sesuai ke Google.
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 {}