스마트 홈 CameraStream 트레잇 스키마
action.devices.traits.CameraStream
: 이 트레잇은 기기의 카메라 스트림을 제어하는 방법을 다룹니다.
이 특성은 스마트 디스플레이, Chromecast 지원 기기 또는 스마트폰으로 동영상 피드를 스트리밍할 수 있는 기기에 속합니다. 대체로 보안 카메라 또는 유아용 카메라입니다. 그러나 이러한 특성은 카메라가 있는 더 복잡한 기기 (예: 화상 회의 기기 또는 카메라가 있는 진공 로봇)에도 적용됩니다.
기기 속성
이 특성이 있는 기기는 SYNC
작업의 일부로 다음 속성을 보고할 수 있습니다. SYNC
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
특성 | 유형 | 설명 |
---|---|---|
cameraStreamSupportedProtocols |
배열 |
필수사항. 카메라 스트림에 지원되는 미디어 유형으로, 환경설정에 따라 정렬됩니다. 일반적으로 이 배열에서 타겟 표면과 호환되는 첫 번째 프로토콜이 요청됩니다. |
[item, ...] |
문자열 |
미디어 유형입니다. 지원되는 값:
|
cameraStreamNeedAuthToken |
Boolean |
필수사항. 대상 표면에서 카메라 피드를 스트리밍할 수 있도록 |
예
인증 토큰이 필요하지 않은 다중 프로토콜 지원 카메라
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
단일 프로토콜을 지원하고 인증 토큰이 필요한 카메라.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
지원되는 스트리밍 프로토콜
이 트레잇은 다음 스트리밍 프로토콜을 지원합니다.
webrtc
: WebRTChls
: HTTP 실시간 스트리밍dash
: HTTP 동적 적응형 스트리밍smooth_stream
: 원활한 스트리밍progressive_mp4
: 프로그레시브 MP4 (주로 클립에 사용됨)
hls
, dash
, smooth_stream
, progressive_mp4
프로토콜을 Cast 기기 (Chromecast, 스마트 디스플레이 및 Chromecast 지원 스마트 TV)로 스트리밍할 때 Cast 웹 수신기가 실행되어 스트림을 처리하고 기기에서 렌더링합니다. 개발자는 디버깅 도구에 액세스할 수 있도록 맞춤 웹 수신기를 만들고, 플레이어 동작을 맞춤설정하고, UI 브랜딩을 맞춤설정하고, 분석을 포함하는 것이 좋습니다. 맞춤 수신기 사용을 사용 설정하고 기본 수신기의 사용을 선택 해제하려면 EXECUTE
응답의 cameraStreamReceiverAppId
필드에서 Cast 애플리케이션을 등록할 때 생성되는 수신기 앱 ID를 설정합니다.
맞춤 웹 수신기 애플리케이션에 관한 자세한 내용은 개발자 사이트 가이드를 참고하세요.
기기 상태
없음
기기 명령어
이 특성이 있는 기기는 EXECUTE
작업의 일부로 다음 명령어에 응답할 수 있습니다. EXECUTE
인텐트 처리에 관한 자세한 내용은 인텐트 처리를 참고하세요.
action.devices.commands.GetCameraStream
매개변수
매개변수 | 유형 | 설명 |
---|---|---|
StreamToChromecast |
Boolean |
필수사항. 스트림을 Chromecast 기기에서 재생할지 여부입니다. |
SupportedStreamProtocols |
배열 |
필수사항. 원하는 대상에서 지원하는 미디어 유형/형식 |
[item, ...] |
문자열 |
미디어 유형입니다. 지원되는 값:
|
결과
결과 | 유형 | 설명 |
---|---|---|
cameraStreamAuthToken |
문자열 |
스트림에 대한 액세스를 승인하기 위한 특정 수신자의 인증 토큰입니다. |
cameraStreamProtocol |
문자열 |
필수사항. 스트림 URL이 가리키는 미디어 형식입니다. 지원되는 값:
|
WebRTC가 아닌 결과
결과 | 유형 | 설명 |
---|---|---|
cameraStreamAccessUrl |
문자열 |
필수사항.
|
cameraStreamReceiverAppId |
문자열 |
|
WebRTC 결과
결과 | 유형 | 설명 |
---|---|---|
cameraStreamSignalingUrl |
문자열 |
필수사항. 카메라 및 클라이언트 세션 설명 프로토콜 (SDP)을 검색하고 교환하기 위한 URL 엔드포인트입니다. 클라이언트는 |
cameraStreamOffer |
문자열 |
제공 세션 설명 프로토콜 (SDP) |
cameraStreamIceServers |
문자열 |
인코딩된 JSON 문자열을 RTCIceServer 설명과 함께 사용하여 대화형 연결 설정 (ICE) 서버를 나타냅니다. STUN (Session Traversal Utilities for NAT) 서버를 지정하지 않으면 플랫폼은 기본적으로 Google의 공개 STUN 서버를 사용합니다. 턴 (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 사용의 이점은 짧은 지연 시간과 단방향 대화입니다. WebRTC는 JSON 형식의 POST
본문 및 응답이 있는 POST
메서드를 사용합니다.
WebRTC는 현재 Google Nest 스마트 디스플레이 및 Chromecast with Google TV 기기에서 지원됩니다.
이 섹션에서는 WebRTC 스트림 프로토콜을 사용할 때의 요구사항을 설명합니다.
데이터 유형 | 매개변수/정의 |
---|---|
신호 요청 헤더 |
헤더는 다음 요구사항을 충족해야 합니다.
|
신호 요청 매개변수 | 요청에는 다음 매개변수가 포함될 수 있습니다.
|
신호 응답 매개변수 | 응답에는 다음 매개변수가 포함될 수 있습니다.
|
WebRTC 요구사항 및 권장사항
- Google은 현재 단방향 (반이중) 통신을 지원합니다.
- 번들링 및 rtcp-mux를 지원해야 합니다.
- (D)TLS 1.2 이상을 사용해야 합니다.
- Trickle ICE는 지원되지 않습니다. SDP를 보내기 전에 모든 ICE 후보를 먼저 수집해야 합니다.
- 연결 성공 가능성을 높이려면 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 {}