Giản đồ đặc điểm CameraStream của nhà thông minh
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
action.devices.traits.CameraStream
– Đặc điểm này trình bày cách kiểm soát luồng máy ảnh của một thiết bị.
Thuộc tính này thuộc về những 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ị hỗ trợ Chromecast hoặc điện thoại thông minh. Nhìn chung, đây là các camera an ninh hoặc camera dành cho trẻ em. 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ó máy ảnh (ví dụ: thiết bị hội nghị truyền hình hoặc robot hút bụi có máy ảnh).
Thuộc tính 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 đây trong quá trình thao tác SYNC
. Để tìm hiểu thêm về cách xử lý ý định SYNC
, hãy xem phần Thực hiện ý định.
Thuộc tính | Loại | 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 thứ tự ưu tiên. Thông thường, giao thức đầu tiên trong mảng này tương thích với nền tảng mục tiêu sẽ được yêu cầu. |
[item, ...] |
String |
Loại nội dung nghe nhìn. Các giá trị được hỗ trợ:
|
cameraStreamNeedAuthToken |
Boolean |
Bắt buộc. Cho biết liệu có cần mã thông báo xác thực để truyền trực tuyến nguồn cấp dữ liệu máy ảnh hay không. |
Ví dụ
Máy ảnh hỗ trợ nhiều giao thức mà không yêu cầu mã thông báo 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, yêu cầu mã xác thực.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Các giao thức truyền trực tuyến được hỗ trợ
Đặc điểm này hỗ trợ các giao thức truyền trực tuyến sau:
webrtc
: WebRTChls
: Phát trực tuyến qua HTTPdash
: Truyền phát thích ứng động qua HTTPsmooth_stream
: Phát trực tuyến mượt màprogressive_mp4
: MP4 tăng dần (chủ yếu 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
đến các thiết bị Cast (Chromecast, màn hình thông minh và
TV thông minh hỗ trợ Chromecast), một Trình thu web Cast sẽ được khởi chạy để xử lý luồng và hiển thị luồng đó
trên thiết bị. Nhà phát triển nên tạo một Trình thu 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à đưa vào số liệu phân tích. Để bật tính năng sử dụng trình nhận tuỳ chỉnh và chọn không sử dụng trình nhận mặc định, hãy đặt mã ứng dụng của trình 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 web tuỳ chỉnh, hãy truy cập vào hướng dẫn trên Trang web dành cho nhà phát triển.
Trạng thái thiết bị
Không có.
LỆNH của 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 đây trong quá trình hoạt động EXECUTE
. Để tìm hiểu thêm về cách xử lý ý định EXECUTE
, hãy xem phần Thực hiện ý định.
action.devices.commands.GetCameraStream
Thông số
Thông số | Loại | Mô tả |
---|---|---|
StreamToChromecast |
Boolean |
Bắt buộc. Liệu luồng nội dung 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 nghe nhìn mà đích đến mong muốn hỗ trợ. |
[item, ...] |
String |
Loại nội dung nghe nhìn. Các giá trị được hỗ trợ:
|
Kết quả
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamAuthToken |
String |
Mã xác thực cho bộ thu cụ thể để uỷ quyền quyền truy cập vào luồng. |
cameraStreamProtocol |
String |
Bắt buộc. Định dạng nội dung nghe nhì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 WebRTC
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamAccessUrl |
String |
Bắt buộc. Điểm cuối URL để truy xuất luồng theo thời gian thực ở định dạng do |
cameraStreamReceiverAppId |
String |
Truyền mã nhận để xử lý luồng máy ảnh khi tham số |
Kết quả WebRTC
Kết quả | Loại | Mô tả |
---|---|---|
cameraStreamSignalingUrl |
String |
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à ứng dụng. Ứng dụng phải trả về URL báo hiệu sử dụng |
cameraStreamOffer |
String |
Giao thức mô tả phiên (SDP) của ưu đãi. |
cameraStreamIceServers |
String |
Biểu thị các máy chủ Thiết lập kết nối tương tác (ICE) bằng cách sử dụng chuỗi JSON đã mã hoá với nội dung mô tả RTCIceServer. Nếu bạn không chỉ định máy chủ STUN (Tiện ích truyền tải phiên của NAT), thì nền tảng sẽ mặc định sử dụng máy chủ STUN công khai của Google. Bạn chỉ cần máy chủ TURN (Chuyển tiếp bằng cách sử dụng các máy chủ chuyển tiếp xung quanh NAT) nếu không thể đảm bảo rằng các địa chỉ IP / ứng cử viên ICE được cung cấp sẽ có thể truy cập công khai (ví dụ: thông qua máy chủ nội dung nghe nhìn, ứng cử viên ICE máy chủ lưu trữ công khai, ứng cử viên ICE chuyển tiếp, v.v.). |
Ví dụ
Hiện camera cửa trước (trình nhận truyền phát mặc định).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Hiện camera cửa trước (trình thu Cast tuỳ chỉnh).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Hiện 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" }
LỖI thiết bị
Xem danh sách đầy đủ 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 một chiều. WebRTC sử dụng phương thức POST
với nội dung POST
và phản hồi ở định dạng JSON.
WebRTC hiện được hỗ trợ trên Màn hình thông minh Google Nest và các thiết bị Chromecast có Google TV.
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 | Tham số/Định nghĩa |
---|---|
Tiêu đề 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 thông số sau:
|
Thông số phản hồi tín hiệu | Phản hồi có thể bao gồm các tham số sau:
|
Yêu cầu và đề xuất về WebRTC
- Google hiện hỗ trợ giao tiếp 1 chiều (bán song công).
- Bạn phải hỗ trợ tính năng gói và rtcp-mux.
- Bạn phải sử dụng (D)TLS 1.2 trở lên.
- Không hỗ trợ Trickle ICE. Trước tiên, bạn phải thu thập tất cả các đề xuất ICE trước khi gửi SDP.
- Bạn nên thêm các đề xuất ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 và TCP/IPv6 để tăng khả năng 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
Các 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 (codec ư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 để yêu cầu trình duyệt cho phép một ứng dụng web chạy ở một nguồn gốc 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
sẽ phản hồi bằng tiêu đề sau:
Access-Control-Allow-Origin: https://www.gstatic.com
Yêu cầu và phản hồi tín 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ụ báo hiệu của bạn 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 {}