Giản đồ đặc điểm CameraStream của nhà thông minh
action.devices.traits.CameraStream
– Trait này đề cập đến cách kiểm soát luồng camera của 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à 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 trong thao tác SYNC
. Để tìm hiểu thêm về cách xử lý ý định SYNC
, hãy xem bài viết 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. Liệu mã thông báo xác thực có được cung cấp qua |
Ví dụ
Camera có 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, 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), Cast Web Receiver 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 phát 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 trên giao diện người dùng và cung cấp số liệu phân tích. Để cho phép sử dụng receiver tuỳ chỉnh và chọn không dùng receiver mặc định, hãy đặt mã nhận dạng ứng dụng 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ã thông báo xác thực để người nhận cụ thể cho phép truy cập vào luồng. Nếu |
cameraStreamProtocol |
String |
Bắt buộc. Định dạng nội dung nghe nhìn mà URL của luồng trỏ đến. Đó 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 |
Mã nhận dạng thiết bị nhận truyền để xử lý luồng camera 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 dành cho NAT), nền tảng này sẽ mặc định là 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 đa phương tiện, ứng cử viên ICE 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 và phản hồi POST
ở đị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 đề của yêu cầu tín 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 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. Tất cả ứng viên thuộc ICE phải được thu thập 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
Bộ mã hoá và giải mã video được hỗ trợ:
- VP8
- H.264
Bộ mã hoá và giải mã âm thanh được hỗ trợ:
- Opus (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 để 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 {}