Схема характеристик умного дома CameraStream
action.devices.traits.CameraStream
— этот трейт описывает, как управлять потоком камеры устройства.
Эта черта относится к устройствам, которые имеют возможность потоковой передачи видео на интеллектуальные дисплеи, устройства с поддержкой Chromecast или смартфоны. По большому счету, это камеры слежения или детские камеры. Но эта черта распространяется и на более сложные устройства, на которых есть камера (например, устройства для видеоконференций или робот-пылесос с камерой).
АТРИБУТЫ устройства
Устройства с этой чертой могут сообщать о следующих атрибутах как часть операции SYNC
. Дополнительные сведения об обработке намерений SYNC
см. в разделе Выполнение намерений .
Атрибуты | Тип | Описание |
---|---|---|
cameraStreamSupportedProtocols | Множество | Необходимый. Поддерживаемые типы мультимедиа для потока с камеры, упорядоченные по предпочтениям. Как правило, запрашивается первый протокол в этом массиве, совместимый с целевой поверхностью. |
[ item, ... ] | Нить | Тип носителя. Поддерживаемые значения:
|
cameraStreamNeedAuthToken | логический | Необходимый. Будет ли предоставлен токен аутентификации через |
Примеры
Камера с поддержкой нескольких протоколов, не требующая токена авторизации.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Камера поддерживает один протокол, требующий токена авторизации.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Поддерживаемые потоковые протоколы
Этот трейт поддерживает следующие протоколы потоковой передачи:
-
webrtc
: WebRTC -
hls
: прямая трансляция HTTP -
dash
: динамическая адаптивная потоковая передача по HTTP -
smooth_stream
: Плавная потоковая передача -
progressive_mp4
: Прогрессивный MP4 (в основном используется для клипов)
СОСТОЯНИЯ устройства
Никто.
КОМАНДЫ устройства
Устройства с этой чертой могут отвечать на следующие команды как часть операции EXECUTE
. Дополнительные сведения об обработке намерений EXECUTE
см. в разделе Выполнение намерений .
action.devices.commands.GetCameraStream
Параметры
Параметры | Тип | Описание |
---|---|---|
StreamToChromecast | логический | Необходимый. Будет ли трансляция воспроизводиться на устройстве Chromecast. |
SupportedStreamProtocols | Множество | Необходимый. Типы/форматы мультимедиа, поддерживаемые желаемым адресатом. |
[ item, ... ] | Нить | Тип носителя. Поддерживаемые значения:
|
Полученные результаты
Полученные результаты | Тип | Описание |
---|---|---|
cameraStreamAuthToken | Нить | Маркер авторизации для конкретного получателя для авторизации доступа к потоку. Если для |
cameraStreamProtocol | Нить | Необходимый. Формат мультимедиа, на который указывает URL-адрес потока. Это должен быть один из протоколов, перечисленных в параметре команды Поддерживаемые значения:
|
Результаты без WebRTC
Полученные результаты | Тип | Описание |
---|---|---|
cameraStreamAccessUrl | Нить | Необходимый. Конечная точка URL-адреса для получения потока в реальном времени в формате, указанном |
cameraStreamReceiverAppId | Нить | Идентификатор транслируемого приемника для обработки потока камеры, когда параметр |
Результаты WebRTC
Полученные результаты | Тип | Описание |
---|---|---|
cameraStreamSignalingUrl | Нить | Необходимый. Конечная точка URL-адреса для получения и обмена протоколами описания сеанса камеры и клиента (SDP). Клиент должен вернуть сигнальный URL-адрес, который использует |
cameraStreamOffer | Нить | Предлагаем протокол описания сеанса (SDP). |
cameraStreamIceServers | Нить | Представляет серверы Interactive Connectivity Establishment (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 — низкая задержка и односторонний разговор. WebRTC использует метод POST
с телом POST
и ответом в формате JSON.
В настоящее время WebRTC поддерживается на Google Nest Smart Display и Chromecast с устройствами Google TV.
В этом разделе описаны требования при использовании потокового протокола WebRTC.
Тип данных | Параметры/определения |
---|---|
Заголовок запроса сигнализации | Заголовок должен соответствовать следующим требованиям:
|
Параметры запроса сигнализации | Запрос может включать следующие параметры:
|
Параметры ответа сигнализации | Ответ может включать следующие параметры:
|
Требования и рекомендации WebRTC
- В настоящее время Google поддерживает одностороннюю (полудуплексную) связь.
- Вы должны поддерживать связывание и rtcp-mux.
- Вы должны использовать (D)TLS 1.2 или более позднюю версию.
- Trickle ICE не поддерживается. Все кандидаты ICE должны быть собраны перед отправкой SDP.
- Настоятельно рекомендуется включать кандидаты UDP/IPv4, TCP/IPv4, UDP/IPv6 и TCP/IPv6 ICE, чтобы повысить вероятность успешного соединения.
Поддерживаемые разрешения видео:
- Минимум: 480p
- Максимум: 1080p
Поддерживаемые видеокодеки:
- VP8
- Н.264
Поддерживаемые аудиокодеки:
- Opus (предпочтительный кодек)
- G.711/ПКМУ
- 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 {}