Skip to content

Получение URL для вставки видео на сайт

Этот раздел расскажет, как самостоятельно сформировать адреса URL для просмотра видео с камер, включая получение токена для пользовательской сессии.

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

Для отдельной камеры есть более быстрый способ автоматически получить URL — нажать кнопку Поделиться напротив камеры в списке камер, но в этом случае формируется URL только для одной камеры.

Чтобы создать ссылку для встраивания видео на веб-страницу:

  1. Создайте пользователя, который будет использоваться для создания токена для доступа к камере. Например, создадим пользователя webuser и добавим его в вашу Организацию.

    Создать пользователя Watcher в Организации

  2. Дайте созданному пользователю разрешения на управление камерами в Организации. Это должны быть те камеры, которые вы хотите показывать на внешнем сайте.

    В свойствах пользователя на вкладке Доступ к камерам щелкните значок с камерой напротив папки, доступ к которой вы хотите дать пользователю.

    Права пользователей Watcher на Папки

  3. Получите идентификатор сессии для этого пользователя. Используйте следующий вызов API v2:

    curl http://watcher-ip/vsaas/api/v2/auth/login -H 'Content-Type: application/json' --data-binary '{"login":"webuser", "password":"webuser"}'

    Сервер ответит следующим образом:

    { "groups_count": 0, "notification_email": null, "session": "Z-aCeqoKapk-DhfnqSGEOI5kVT0", "is_admin": true, "login": "webuser" }

    Подробнее о вызове /api/v2/auth/login

    Скопируйте из ответа сервера переменную "session": "Z-aCeqoKapk-DhfnqSGEOI5kVT0".

  4. Получим данные о камерах, доступных для пользователя:

    curl http://WATCHER-IP/vsaas/api/v2/cameras/ -H "x-vsaas-session:Z-aCeqoKapk-DhfnqSGEOI5kVT0"

    Подробнее о вызове

    Чтобы получить данные только об отдельных камерах, добавьте в запрос название камеры:

    curl http://WATCHER-IP/vsaas/api/v2/cameras/CAMERA_NAME -H "x-vsaas-session:Z-aCeqoKapk-DhfnqSGEOI5kVT"

    Сервер ответит следующим образом:

    { 'stream_url': 'fake://fake', 'playback_config': {'token': 'WyIxMzgzIiwyXQ.DrEHcw.h7RL4o83OSbFMrW-wMWJXcdXfgU'}, 'dvr_path': None, 'title': 'test', 'substream_url': '', 'agent_id': None, 'access': 'private', 'static': True, 'onvif_url': None, 'agent_serial': None, 'agent_status': None, 'external_id': None, 'groups': [], 'owner': 'tst', 'agent_model': None, 'comment': '', 'user_attributes': {}, 'dvr_space': None, 'coordinates': '37.768665 55.652579', 'enabled': True, 'server': 'WATCHER-IP', 'postal_address': '', 'thumbnails': True, 'permissions': {'dvr': None, 'ptz': False, 'edit': True, 'view': True}, 'dvr_depth': None, 'stream_status': {'lifetime': 1963704, 'source_error': None, 'alive': True, 'https_port': None, 'http_port': None, 'bitrate': 183, 'rtmp_port': 1935, 'rtsp_port': 8554, 'server': 'WATCHER-IP'}, 'onvif_profile': None, 'name': 'CAMERA_NAME', 'dvr_protected': False, 'thumbnails_url': None, 'onvif_ptz': False, 'agent_key': None }

    Из полей ответа вам нужны server, name и token.

  5. С помощью полученных значений server, name и token сформируйте URL для просмотра видео с камеры на странице embed.html. Пример URL:

    http://WATCHER-IP/vsaas/embed/CAMERA_NAME?token=WyIxMzgzIiwyXQ.DrEHcw.h7RL4o83OSbFMrW-wMWJXcdXfgU

PHP скрипт генерации HTTP URL для вставки камеры на сайт

<?php

$server = $_GET["server"];

$auth = [ 'login' => $_GET['login'], 'password' => $_GET['pass']]; // 1 line instead of 3

if(empty($server)) {
        echo "The server address and auth data not provided";
        header('HTTP/1.0 204 No Content');
        error_log('No server address provided', 4);
        die();
}

$options = array(
  'http' => array(
    'method'  => 'POST',
    'content' => json_encode( $auth ),
    'header'=>  'Content-Type: application/json'
    )
);

$context  = stream_context_create( $options );
$result = file_get_contents( "http://$server/vsaas/api/v2/auth/login", false, $context );
$response = json_decode($result, true);
$session = $response['session'];

$get_cams = array(
        'http' => array(
                'method' => 'GET',
                'header' => 'Content-Type: application/json',
                'header' => "x-vsaas-session: $session",
        'header' => 'x-page-limit: 99'
        )
);

$context_cam = stream_context_create($get_cams);
$result_cam = file_get_contents("http://$server/vsaas/api/v2/cameras", false, $context_cam);
$resp_cam = json_decode($result_cam, true);

foreach($resp_cam as $key => $cam) {
        $cam_token = $cam['playback_config']['token'];
        $cams_url[] = "http://" .$cam['stream_status']['server']. '/' .$cam['name']."/embed.html?token=$cam_token";
}

foreach($cams_url as $url){
        echo "<iframe style=\"width:640px; height:480px;\" allowfullscreen src=\"$url\"></iframe>";
        };
?>