Giản đồ Trait CameraStream của nhà thông minh
action.devices.traits.CameraStream
– Đặc điểm này hướng dẫn cách điều khiển luồng camera của thiết bị.
Đặc điểm này thuộc về các thiết bị có khả năng truyền trực tuyến nguồn cấp dữ liệu video đến màn hình thông minh, thiết bị có hỗ trợ Chromecast hoặc điện thoại thông minh. Nhìn chung, đây là camera an ninh hoặc camera em bé. Tuy nhiên, đặc điểm này cũng áp dụng cho các thiết bị phức tạp hơn có camera (ví dụ: thiết bị hội nghị truyền hình hoặc rô bốt máy hút bụi có camera trên đó).
ĐẶC ĐIỂM của thiết bị
Các thiết bị có đặc điểm này có thể báo cáo các thuộc tính sau trong thao tác SYNC
. Để tìm hiểu thêm về cách xử lý ý định SYNC
, vui lòng xem bài viết Phương thức thực hiện ý định.
Thuộc tính | Loại | Nội dung mô tả |
---|---|---|
cameraStreamSupportedProtocols |
Mảng |
Bắt buộc. Các loại nội dung nghe nhìn được hỗ trợ cho luồng camera, được sắp xếp theo tùy chọn. Thông thường, hệ thống sẽ yêu cầu giao thức đầu tiên trong mảng tương thích với nền tảng mục tiêu. |
[item, ...] |
Chuỗi |
Loại phương tiện. Các giá trị được hỗ trợ:
|
cameraStreamNeedAuthToken |
Boolean |
Bắt buộc. Liệu mã thông báo xác thực có được cung cấp qua |
Ví dụ
Máy ảnh hỗ trợ nhiều giao thức, không yêu cầu mã xác thực.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Máy ảnh hỗ trợ một giao thức duy nhất, cần có mã xác thực.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Giao thức truyền trực tuyến được hỗ trợ
Trait này hỗ trợ các giao thức phát trực tuyến sau:
webrtc
: WebRTChls
: Phát trực tuyến dựa trên HTTPdash
: Truyền phát thích ứng động qua HTTPsmooth_stream
: Phát trực tuyến mượtprogressive_mp4
: MP4 tiến bộ (chủ yếu được sử dụng cho đoạn video)
Khi truyền trực tuyến các giao thức hls
,dash
,smooth_stream
và progressive_mp4
tới thiết bị truyền (Chromecast, màn hình thông minh và TV thông minh có hỗ trợ Chromecast), Bộ thu web truyền được chạy để xử lý và kết xuất luồng trên thiết bị. Nhà phát triển nên tạo Trình thu nhận web tuỳ chỉnh để cho phép truy cập vào các công cụ gỡ lỗi, tuỳ chỉnh hành vi của người chơi, tuỳ chỉnh thương hiệu giao diện người dùng và thêm số liệu phân tích. Để cho phép sử dụng trình thu nhận tuỳ chỉnh và chọn không sử dụng trình thu nhận mặc định, hãy đặt mã ứng dụng trình thu nhận được tạo khi bạn đăng ký ứng dụng Truyền trong trường cameraStreamReceiverAppId
của phản hồi EXECUTE
.
Để tìm hiểu thêm về các ứng dụng Trình thu nhận web tuỳ chỉnh, hãy truy cập vào hướng dẫn trang web dành cho nhà phát triển.
TÌNH TRẠNG của thiết bị
Không nội dung nào.
Lệnh trên thiết bị
Các thiết bị có đặc điểm này có thể phản hồi các lệnh sau trong thao tác EXECUTE
. Để tìm hiểu thêm về cách xử lý ý định EXECUTE
, vui lòng xem bài viết Phương thức thực hiện ý định.
action.devices.commands.GetCameraStream
Các tham số
Các tham số | Loại | Nội dung mô tả |
---|---|---|
StreamToChromecast |
Boolean |
Bắt buộc. Liệu luồng có được phát trên thiết bị Chromecast hay không. |
SupportedStreamProtocols |
Mảng |
Bắt buộc. Các loại/định dạng nội dung đa phương tiện được đích đến mong muốn hỗ trợ. |
[item, ...] |
Chuỗi |
Loại phương tiện. Các giá trị được hỗ trợ:
|
Kết quả
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamAuthToken |
Chuỗi |
Mã thông báo xác thực cho receiver cụ thể để uỷ quyền truy cập vào luồng. Nếu |
cameraStreamProtocol |
Chuỗi |
Bắt buộc. Định dạng nội dung đa phương tiện mà URL của luồng trỏ đến. Đây phải là một trong các giao thức được liệt kê trong tham số lệnh Các giá trị được hỗ trợ:
|
Kết quả không phải cho WebRTC
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamAccessUrl |
Chuỗi |
Bắt buộc. Điểm cuối URL để truy xuất luồng thời gian thực ở định dạng do |
cameraStreamReceiverAppId |
Chuỗi |
Mã nhận dạng bộ thu truyền để xử lý luồng camera khi tham số |
Kết quả WebRTC
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamSignalingUrl |
Chuỗi |
Bắt buộc. Điểm cuối URL để truy xuất và trao đổi giao thức mô tả phiên (SDP) của máy ảnh và máy khách. Ứng dụng sẽ trả về URL báo hiệu. URL này sử dụng |
cameraStreamOffer |
Chuỗi |
Giao thức mô tả phiên của lời đề nghị (SDP). |
cameraStreamIceServers |
Chuỗi |
Biểu thị máy chủ Thiết lập kết nối tương tác (ICE) bằng chuỗi JSON mã hoá cùng với nội dung mô tả về RTCIceServer. Nếu bạn không chỉ định máy chủ STUN (Session Traversal Utility for NAT), thì nền tảng đó sẽ mặc định dùng máy chủ STUN công khai của Google. Bạn chỉ bắt buộc phải sử dụng máy chủ TURN (Truyền tải qua chuyển tiếp xung quanh NAT) nếu bạn không thể đảm bảo rằng các IP / ICE đề xuất được cung cấp sẽ có thể truy cập công khai (ví dụ: qua máy chủ phương tiện, ứng viên ICE của máy chủ công cộng, ứng viên chuyển tiếp ICE, v.v.). |
Ví dụ
Hiển thị camera cửa trước (bộ thu Truyền mặc định).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Hiển thị camera cửa trước (bộ thu Cast tuỳ chỉnh).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Hiển thị camera cửa trước (luồng 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" }
Thiết bị LỖI
Xem danh sách toàn bộ lỗi và ngoại lệ.Thông số kỹ thuật của giao thức WebRTC
Lợi ích của việc sử dụng WebRTC là độ trễ thấp và tính năng trò chuyện 1 chiều. WebRTC sử dụng phương thức POST
có nội dung và phản hồi POST
ở định dạng JSON.
Màn hình thông minh Google Nest và các thiết bị Chromecast có Google TV hiện hỗ trợ WebRTC.
Phần này mô tả các yêu cầu khi sử dụng giao thức truyền trực tuyến WebRTC.
Loại dữ liệu | Thông số/Định nghĩa |
---|---|
Tiêu đề của yêu cầu báo hiệu |
Tiêu đề phải đáp ứng các yêu cầu sau:
|
Tham số yêu cầu báo hiệu | Yêu cầu có thể bao gồm các tham số sau:
|
Tham số phản hồi tín hiệu | Phản hồi có thể bao gồm các thông số sau:
|
Yêu cầu và đề xuất WebRTC
- Google hiện hỗ trợ giao tiếp 1 chiều (nửa song công).
- Bạn phải hỗ trợ gói và rtcp-mux.
- Bạn phải sử dụng (D)TLS 1.2 trở lên.
- Không hỗ trợ ICE nhỏ giọt. Bạn phải tập hợp tất cả các ứng viên ICE trước khi gửi SDP.
- Bạn nên bao gồm các ứng viên ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 và TCP/IPv6 để tăng xác suất kết nối thành công.
Độ phân giải video được hỗ trợ:
- Tối thiểu: 480p
- Tối đa: 1080p
Bộ mã hoá và giải mã video được hỗ trợ:
- VP8
- H.264
Các bộ mã hoá và giải mã âm thanh được hỗ trợ:
- Opus (bộ mã hoá và giải mã ưu tiên)
- G.711/PCMU
- G.722
Chia sẻ tài nguyên trên nhiều nguồn gốc
Chia sẻ tài nguyên trên nhiều nguồn gốc (CORS) là một cơ chế sử dụng các Tiêu đề HTTP bổ sung để thông báo cho các trình duyệt nhằm cho phép ứng dụng web đang chạy tại một nguồn truy cập vào các tài nguyên đã chọn từ một nguồn gốc khác. Máy chủ lưu trữ cameraStreamSignalingUrl
phải phản hồi bằng tiêu đề sau:
Access-Control-Allow-Origin: https://www.gstatic.com
Phản hồi và yêu cầu báo hiệu mẫu
Ví dụ sau đây cho thấy một yêu cầu mà Google gửi đến dịch vụ tín hiệu và phản hồi tương ứng cho 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 {}