สคีมาลักษณะของ CameraStream สมาร์ทโฮม
action.devices.traits.CameraStream
- ลักษณะนี้ครอบคลุมวิธีควบคุมสตรีมกล้องของอุปกรณ์
ลักษณะนี้ใช้กับอุปกรณ์ที่พร้อมสตรีมฟีดวิดีโอไปยังจออัจฉริยะ อุปกรณ์ที่พร้อมใช้งาน Chromecast หรือสมาร์ทโฟน โดยทั่วไป กล้องเหล่านี้คือกล้องรักษาความปลอดภัยหรือกล้องดูแลเด็ก แต่ลักษณะนี้ยังใช้กับอุปกรณ์ที่ซับซ้อนมากขึ้นซึ่งมีกล้องด้วย (เช่น อุปกรณ์วิดีโอคอนเฟอเรนซ์หรือหุ่นยนต์ดูดฝุ่นที่มีกล้อง)
แอตทริบิวต์อุปกรณ์
อุปกรณ์ที่มีลักษณะนี้อาจรายงานแอตทริบิวต์ต่อไปนี้เป็นส่วนหนึ่งของการดำเนินการ SYNC
ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent SYNC
ได้ที่การดำเนินการตาม Intent
Attributes | ประเภท | คำอธิบาย |
---|---|---|
cameraStreamSupportedProtocols |
อาร์เรย์ |
ต้องระบุ ประเภทสื่อที่รองรับสำหรับสตรีมกล้อง โดยจัดเรียงตามค่ากำหนด โดยปกติแล้ว ระบบจะขอโปรโตคอลแรกในอาร์เรย์นี้ที่เข้ากันได้กับแพลตฟอร์มเป้าหมาย |
[item, ...] |
String |
ประเภทสื่อ ค่าที่รองรับ
|
cameraStreamNeedAuthToken |
บูลีน |
ต้องระบุ ระบุโทเค็นการตรวจสอบสิทธิ์ผ่าน |
ตัวอย่าง
กล้องที่รองรับโปรโตคอลหลายรายการ โดยไม่ต้องใช้โทเค็นการตรวจสอบสิทธิ์
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
กล้องที่รองรับโปรโตคอลเดียว ซึ่งต้องใช้โทเค็นการตรวจสอบสิทธิ์
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
โปรโตคอลสตรีมมิงที่รองรับ
ลักษณะนี้รองรับโปรโตคอลสตรีมมิงต่อไปนี้
webrtc
: WebRTChls
: สตรีมมิงแบบสด HTTPdash
: Dynamic Adaptive Streaming over HTTPsmooth_stream
: Smooth Streamingprogressive_mp4
: MP4 แบบโปรเกรสซีฟ (ใช้กับคลิปเป็นส่วนใหญ่)
เมื่อสตรีมโปรโตคอล hls
,dash
,smooth_stream
และ progressive_mp4
ไปยังอุปกรณ์แคสต์ (Chromecast, จออัจฉริยะ และสมาร์ททีวีที่พร้อมใช้งาน Chromecast) ระบบจะเปิด Cast Web Receiver เพื่อประมวลผลสตรีมและแสดงผลบนอุปกรณ์ เราขอแนะนำให้นักพัฒนาซอฟต์แวร์สร้างWeb Receiver ที่กําหนดเองเพื่อเปิดใช้การเข้าถึงเครื่องมือแก้ไขข้อบกพร่อง ปรับแต่งลักษณะการทํางานของโปรแกรมเล่น ปรับแต่งการสร้างแบรนด์ UI และรวมข้อมูลวิเคราะห์ หากต้องการเปิดใช้ตัวรับที่กำหนดเองและเลือกไม่ใช้ตัวรับเริ่มต้น ให้ตั้งค่ารหัสแอปของตัวรับซึ่งสร้างขึ้นเมื่อคุณลงทะเบียนแอปพลิเคชัน Cast ในช่อง cameraStreamReceiverAppId
ของEXECUTE
การตอบกลับ
ดูข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชัน Custom Web Receiver ได้ที่คู่มือสำหรับเว็บไซต์ของนักพัฒนาซอฟต์แวร์
สถานะอุปกรณ์
ไม่มี
คำสั่งของอุปกรณ์
อุปกรณ์ที่มีลักษณะนี้อาจตอบสนองต่อคําสั่งต่อไปนี้ซึ่งเป็นส่วนหนึ่งของการดำเนินการ EXECUTE
ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการ Intent EXECUTE
ได้ที่การดำเนินการตาม Intent
action.devices.commands.GetCameraStream
พารามิเตอร์
พารามิเตอร์ | ประเภท | คำอธิบาย |
---|---|---|
StreamToChromecast |
บูลีน |
ต้องระบุ การเล่นสตรีมบนอุปกรณ์ Chromecast |
SupportedStreamProtocols |
อาร์เรย์ |
ต้องระบุ ประเภท/รูปแบบสื่อที่ปลายทางที่ต้องการรองรับ |
[item, ...] |
String |
ประเภทสื่อ ค่าที่รองรับ
|
ผลลัพธ์
ผลลัพธ์ | ประเภท | คำอธิบาย |
---|---|---|
cameraStreamAuthToken |
String |
โทเค็นการตรวจสอบสิทธิ์สำหรับตัวรับที่ระบุเพื่อให้สิทธิ์เข้าถึงสตรีม หาก |
cameraStreamProtocol |
String |
ต้องระบุ รูปแบบสื่อที่ URL สตรีมชี้ถึง โดยควรเป็นโปรโตคอลใดโปรโตคอลหนึ่งที่แสดงอยู่ในพารามิเตอร์คำสั่ง ค่าที่รองรับ
|
ผลลัพธ์ที่ไม่ใช่ WebRTC
ผลลัพธ์ | ประเภท | คำอธิบาย |
---|---|---|
cameraStreamAccessUrl |
String |
ต้องระบุ URL ปลายทางสําหรับการดึงข้อมูลสตรีมแบบเรียลไทม์ในรูปแบบที่ |
cameraStreamReceiverAppId |
String |
รหัสตัวรับแคสต์เพื่อประมวลผลสตรีมกล้องเมื่อพารามิเตอร์ |
ผลการค้นหา WebRTC
ผลลัพธ์ | ประเภท | คำอธิบาย |
---|---|---|
cameraStreamSignalingUrl |
String |
ต้องระบุ ปลายทาง URL สำหรับการดึงข้อมูลและแลกเปลี่ยน Session Description Protocol (SDP) ของกล้องและไคลเอ็นต์ ไคลเอ็นต์ควรแสดงผล URL สัญญาณที่ใช้ |
cameraStreamOffer |
String |
โปรโตคอลคำอธิบายเซสชันของข้อเสนอ (SDP) |
cameraStreamIceServers |
String |
แสดงเซิร์ฟเวอร์ Interactive Connectivity Generatement (ICE) โดยใช้สตริง JSON ที่เข้ารหัสโดยมีคำอธิบาย RTCIceServer หากคุณไม่ได้ระบุเซิร์ฟเวอร์ STUN (Session Traversal Utilities for NAT) แพลตฟอร์มจะใช้เซิร์ฟเวอร์ STUN สาธารณะของ Google เป็นค่าเริ่มต้น คุณต้องใช้เซิร์ฟเวอร์ TURN (Traversal Using Relays around NAT) เฉพาะในกรณีที่ไม่สามารถรับประกันว่า IP/ผู้สมัคร ICE ที่ระบุจะเข้าถึงได้แบบสาธารณะ (เช่น ผ่านเซิร์ฟเวอร์สื่อ ผู้สมัคร ICE ของโฮสต์สาธารณะ ผู้สมัคร ICE ของรีเลย์ ฯลฯ) |
ตัวอย่าง
แสดงกล้องประตูหน้า (ตัวรับ Cast เริ่มต้น)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
แสดงกล้องประตูหน้า (ตัวรับ Cast ที่กําหนดเอง)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
แสดงกล้องประตูหน้า (สตรีม 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" }
ข้อผิดพลาดของอุปกรณ์
ดูรายการข้อผิดพลาดและข้อยกเว้นทั้งหมดข้อกำหนดเฉพาะของโปรโตคอล WebRTC
ข้อดีของการใช้ WebRTC คือเวลาในการตอบสนองต่ำและการพูดแบบ 1 ทาง WebRTC ใช้เมธอด POST
ที่มีเนื้อหา POST
และการตอบกลับในรูปแบบ JSON
ปัจจุบัน WebRTC รองรับอุปกรณ์ Smart Display ของ Google Nest และ Chromecast พร้อม Google TV
ส่วนนี้อธิบายข้อกำหนดเมื่อใช้โปรโตคอลสตรีม WebRTC
ประเภทข้อมูล | พารามิเตอร์/คําจํากัดความ |
---|---|
ส่วนหัวของคำขอรับส่งสัญญาณ |
ส่วนหัวควรเป็นไปตามข้อกำหนดต่อไปนี้
|
พารามิเตอร์คำขอสัญญาณ | คำขออาจมีพารามิเตอร์ต่อไปนี้
|
พารามิเตอร์การตอบสนองในการส่งสัญญาณ | การตอบกลับอาจมีพารามิเตอร์ต่อไปนี้
|
ข้อกำหนดและคำแนะนำเกี่ยวกับ WebRTC
- ปัจจุบัน Google รองรับการสื่อสารแบบ 1 ทิศทาง (ครึ่งดูเพล็กซ์)
- คุณต้องรองรับการรวมกลุ่มและ rtcp-mux
- คุณต้องใช้ (D)TLS 1.2 ขึ้นไป
- ไม่รองรับ Trickle ICE คุณต้องรวบรวมตัวเลือกทั้งหมดของ ICE ก่อนส่ง SDP
- เราขอแนะนำอย่างยิ่งให้คุณใส่ตัวเลือก UDP/IPv4, TCP/IPv4, UDP/IPv6 และ TCP/IPv6 ICE เพื่อเพิ่มโอกาสที่การเชื่อมต่อจะสำเร็จ
ความละเอียดวิดีโอที่รองรับ:
- ต่ำสุด: 480p
- สูงสุด: 1080p
ตัวแปลงรหัสวิดีโอที่รองรับ
- VP8
- H.264
ตัวแปลงสัญญาณเสียงที่รองรับ
- Opus (ตัวแปลงรหัสที่แนะนำ)
- G.711/PCMU
- G.722
กลไกการแชร์ทรัพยากรข้ามโดเมน
กลไกการแชร์ทรัพยากรข้ามโดเมน (CORS) คือกลไกที่ใช้ส่วนหัว HTTP เพิ่มเติมเพื่อบอกให้เบราว์เซอร์อนุญาตให้เว็บแอปพลิเคชันที่ทำงานที่ต้นทางหนึ่งเข้าถึงทรัพยากรที่เลือกจากต้นทางอื่น เซิร์ฟเวอร์ที่โฮสต์ cameraStreamSignalingUrl
ควรตอบกลับด้วยส่วนหัวต่อไปนี้
Access-Control-Allow-Origin: https://www.gstatic.com
ตัวอย่างคำขอส่งสัญญาณและการตอบกลับ
ตัวอย่างต่อไปนี้แสดงคำขอที่ Google ส่งไปยังบริการส่งสัญญาณของคุณและการตอบกลับที่เกี่ยวข้องไปยัง 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 {}