Video_stream
devices.capabilities.video_stream
Получение видеопотока с камеры.
Общие голосовые команды
-
Алиса, покажи камеру в прихожей.
-
Алиса, включи видео из детской.
-
Алиса, видео на даче.
-
Алиса, камера в коридоре.
Описание умения
Структура используется в ответе операции Информация об устройствах пользователя.
Параметры умения
Параметр
Параметр |
Тип |
Описание |
Обязательный |
type |
String |
Тип умения. |
Да |
retrievable |
Boolean |
Всегда |
Да |
reportable |
Boolean |
Всегда |
Да |
parameters |
Object |
Объект |
Да |
Объект parameters
Параметр |
Тип |
Описание |
Обязательный |
protocols |
Array of Strings |
На текущий момент поддерживает только протокол потока Максимальное разрешение видео: Поддерживаемые кодеки аудио: |
Да |
Пример использования
Платформа умного дома отправляет провайдеру запрос на получение информации об устройствах пользователя. Провайдер в ответ передает информацию о том, что у пользователя есть камера, для которой можно получать видеопоток в разных форматах.
curl -i -X GET 'https://example.com/v1.0/user/devices' \
-H 'Authorization: Bearer 123qwe456a...' \
-H 'X-Request-Id: ff36a3cc-ec...'
HTTP/1.1 200 OK
{
"request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"user_id": "user-001",
"devices": [
{
"id": "cam-hd-01x",
"name": "моя камера",
"description": "умная камера",
"room": "спальня",
"type": "devices.types.camera",
"capabilities": [
{
"type": "devices.capabilities.video_stream",
"retrievable": false,
"reportable": false,
"parameters": {
"protocols": ["hls"]
}
}
],
"device_info": {
"manufacturer": "Provider-01",
"model": "hd-01x",
"hw_version": "1.2",
"sw_version": "5.4"
}
}
]
}
}
Текущее состояние умения
Данное умение не предоставляет свое состояние, включать его в ответ на запрос Информация о состояниях устройств пользователя не требуется. Для устройств, у которых нет умения с параметром retrievable: true
, дается ответ для передачи общего статуса устройства (например, в сети, не в сети, отвязано от аккаунта).
Пример использования
Ответ на запрос для устройства, которое содержит только одно умение video_stream
.
HTTP/1.1 200 OK
{
"request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"devices": [
{
"id": "cam-hd-01x"
}
]
}
}
Ответ на запрос для недоступного устройства, которое содержит только одно умение video_stream
.
HTTP/1.1 200 OK
{
"request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"devices": [
{
"id": "cam-hd-01x",
"error_code": "DEVICE_UNREACHABLE",
"error_message": "device is offline"
}
]
}
}
Изменение состояния умения у устройства
Структура используется в запросе/ответе операции Изменение состояния у устройств.
Параметры умения
Параметр |
Тип |
Описание |
Обязательный |
type |
String |
Тип умения. |
Да |
state |
Object |
Объект, описывающий действие над умением. |
Да |
Объект state
Параметр |
Тип |
Описание |
Обязательный |
instance |
String |
Функция умения. Допустимые значения: |
Да |
value |
Object |
Параметры видеопотока. |
Да |
Объект value
Параметр |
Тип |
Описание |
Обязательный |
protocols |
Array of Strings |
На текущий момент поддерживает только протокол потока |
Да |
Параметр |
Тип |
Описание |
Обязательный |
type |
String |
Тип умения. |
Да |
state |
Object |
Объект, который описывает результат изменения состояния умения. |
Да |
Объект state
Параметр |
Тип |
Описание |
Обязательный |
instance |
String |
Функция умения. Допустимые значения: |
Да |
value |
Object |
Объект, описывающий видеопоток. Если |
Нет |
action_result |
Object |
Объект, который описывает поток. |
Да |
Объект value
Параметр |
Тип |
Описание |
Обязательный |
stream_url |
String |
URL потока с параметрами, указанными в запросе.< В ответе на запрос потока по этой ссылке нужно передавать заголовки:
|
Да |
protocol |
String |
Протокол потока. |
Да |
Объект action_result
Параметр |
Тип |
Описание |
Обязательный |
status |
String |
Статус изменения состояния умения устройства. Допустимые значения:
|
Да |
error_code |
String |
Код возможной ошибки из списка ошибок. Если |
Нет |
error_message |
String |
Расширенное человекочитаемое описание возможной ошибки. Отображается только в разделе Тестирование в консоли разработчика. |
Нет |
Пример использования
Платформа умного дома отправляет провайдеру запрос на изменение состояния у устройств пользователя. Провайдер в ответ передает результат изменения состояния у устройств пользователя.
Примечание
Провайдер должен ответить на запрос в течение 4 секунд. Иначе видео не откроется.
curl -i -X POST 'https://example.com/v1.0/user/devices/action' \
-H 'Authorization: Bearer 123qwe456a...' \
-H 'X-Request-Id: ff36a3cc-ec...' \
-H 'Content-Type: application/json' \
-d '{
"payload": {
"devices":
[
{
"id": "cam-hd-01x",
"custom_data": {
"api_location": "rus"
},
"capabilities": [
{
"type": "devices.capabilities.video_stream",
"state": {
"instance": "get_stream",
"value": {
"protocols": [
"hls"
]
}
}
}
]
}
]
}
}'
HTTP/1.1 200 OK
{
"request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"devices": [
{
"id": "cam-hd-01x",
"capabilities": [
{
"type": "devices.capabilities.video_stream",
"state": {
"instance": "get_stream",
"value": {
"stream_url": "https://host/path/to/playlist.m3u8?token=123456789abcdef",
"protocol": "hls"
},
"action_result": {
"status": "DONE"
}
}
}
]
}
]
}
}
Cтрока, выделяется кавычками, например "Hello world"
.
Логическое значение без кавычек: true
(истина) или false
(ложь).
Список пар "ключ": значение
, разделенных запятой. Выделяется фигурными скобками {}
.
{
"name": "John",
"surname": "Smith"
}
Массив элементов, разделенных запятой. Элементом могут быть стандартные элементы JSON: строка, число, true
, false
, объект или массив. Массив выделяется квадратными скобками []
:
"cities": ["Moscow", "Tokyo", "New York"]