Video_stream

devices.capabilities.video_stream

Получение видеопотока с камеры.

Общие голосовые команды

  1. Алиса, покажи камеру в прихожей.

  2. Алиса, включи видео из детской.

  3. Алиса, видео на даче.

  4. Алиса, камера в коридоре.

Описание умения

Структура используется в ответе операции Информация об устройствах пользователя.

Параметры умения

Параметр

Параметр

Тип

Описание

Обязательный

type

String

Тип умения.

Да

retrievable

Boolean

Всегда false.

Да

reportable

Boolean

Всегда false.

Да

parameters

Object

Объект parameters.

Да

Объект parameters

Параметр

Тип

Описание

Обязательный

protocols

Array of Strings

На текущий момент поддерживает только протокол потока hls.
Поддерживаемые кодеки видео: H264.

Максимальное разрешение видео: 1920 × 1080.

Поддерживаемые кодеки аудио: AAC.

Да

Пример использования

Платформа умного дома отправляет провайдеру запрос на получение информации об устройствах пользователя. Провайдер в ответ передает информацию о том, что у пользователя есть камера, для которой можно получать видеопоток в разных форматах.

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

Функция умения. Допустимые значения: get_stream.

Да

value

Object

Параметры видеопотока.

Да


Объект value

Параметр

Тип

Описание

Обязательный

protocols

Array of Strings

На текущий момент поддерживает только протокол потока hls.

Да

Параметр

Тип

Описание

Обязательный

type

String

Тип умения.

Да

state

Object

Объект, который описывает результат изменения состояния умения.

Да


Объект state

Параметр

Тип

Описание

Обязательный

instance

String

Функция умения. Допустимые значения: get_stream.

Да

value

Object

Объект, описывающий видеопоток. Если status:"DONE", параметр является обязательным.

Нет

action_result

Object

Объект, который описывает поток.

Да


Объект value

Параметр

Тип

Описание

Обязательный

stream_url

String

URL потока с параметрами, указанными в запросе.<

В ответе на запрос потока по этой ссылке нужно передавать заголовки:

Content-type: application/vnd.apple.mpegurl

Access-Control-Allow-Origin: https://yastatic.net

Да

protocol

String

Протокол потока.

Да


Объект action_result

Параметр

Тип

Описание

Обязательный

status

String

Статус изменения состояния умения устройства. Допустимые значения:

  • DONE — состояние умения устройства успешно изменено;

  • ERROR — при изменении состояния умения устройства произошла ошибка.

Да

error_code

String

Код возможной ошибки из списка ошибок. Если status:"ERROR", параметр является обязательным.

Нет

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"
              }
            }
          }
        ]
      }
    ]
  }
}

Предыдущая
Следующая