Top.Mail.Ru

Стриминг

Вебхуки. Получать вебхуки Стриминговой платформы

Вебхуки — это бесплатные автоматические оповещения о событиях сервиса. Вы можете получать оповещения о следующих событиях Стриминговой платформы:

  • Поток запущен или завершён.

  • Запись потока начата или остановлена.

  • Этапы обработки видео и записи потока — обработка началась, готова частично, готова полностью.

  • Статусы трансляции: ожидает начала, трансляция идёт, трансляция на паузе и трансляция завершена.

  • Видео загружено на платформу.

Как только произойдёт событие, наш сервер создаст HTTP-запрос и отправит вам информацию о том, что случилось. Информация придёт в виде POST-запроса в формате JSON. Ниже пример вебхука о запуске потока, в круглых скобках даны пояснения о значениях параметров.

{ 
    "type": "stream", 
     "message": { 
           "stream": { 
             "id": 12345 (ID вашего потока в личном кабинете), 
             "live": true (платформа получает ваш поток), 
             "recording": false (поток не записывается) 
           } 
      } 
}

Мы отправляем вебхуки бесплатно. Для одного аккаунта мы можем присылать вебхуки только на один сервер. Если ваш сервер был недоступен, недошедший вебхук не отправляется повторно. Вам придёт вебхук о следующем событии. 

Вебхуки приходят с IP адреса 45.147.162.135.

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

Например, пользователи делятся видеороликами через ваше приложение. Когда пользователь добавляет видео, оно загружается и обрабатывается через Стриминговую платформу. Затем нужно опубликовать ролик в приложении. Вы настраиваете автопубликацию: как только видео будет обработано, Стриминговая платформа пришлёт вебхук, и приложение выполнит публикацию.

1. Подготовьте свой HTTP-сервер для приёма вебхуков.

2. В разделе Стриминг перейдите на вкладку Вебхуки.

3. Включите отправку вебхуков.

4. В поле URL введите адрес вашего сервера, который будет принимать вебхуки. 

Сохраните изменения.

Вебхуки. Получать вебхуки Стриминговой платформы

Если вы хотите защитить соединение с помощью двусторонней проверки подлинности клиента и сервера (mTLS), продолжите настройку, следуя инструкции ниже. 

5. Включите протокол mTLS.

6. (опционально) Включите проверку SSL. Опция проверяет корректность сертификата вашего сервера и сравнивает его имя с указанным в URL. Если сертификат не пройдёт проверку, соединение прервётся с ошибкой.

7. Вставьте SSL-сертификат, включая теги -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----. Цепочки сертификата должны быть вставлены слитно. Или нажмите на кнопку Вставить из файла, чтобы добавить сертификат из файла на вашем устройстве. 

8. Вставьте приватный ключ, включая теги -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----. Или нажмите на кнопку Вставить из файла, чтобы добавить ключ из файла на вашем устройстве.

9. Вставьте Корневой сертификат CA, включая теги -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----. Цепочки сертификата должны быть вставлены слитно. Или нажмите на кнопку Вставить из файла, чтобы добавить сертификат из файла на вашем устройстве.

10. (опционально) Введите кодовую фразу, если вы использовали её при создании сертификата.

11. Сохраните изменения. 

Вебхуки. Получать вебхуки Стриминговой платформы

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

Запуск потока

{ 
  "type": "stream", 
  "message": { 
    "stream": { 
      "id": 12345 (ID вашего потока в личном кабинете), 
      "live": true (платформа получает ваш поток), 
      "recording": false (поток не записывается) 
    } 
  } 
}

Остановка потока

{ 
  "type": "stream", 
  "message": { 
    "stream": { 
      "id": 12345 (ID вашего потока в личном кабинете), 
      "live": false (платформа не получает ваш поток), 
      "recording": false (поток не записывается) 
    } 
  } 
} 

Начало записи

{ 
  "type": "stream", 
  "message": { 
    "stream": { 
      "id": 12345 (ID вашего потока в личном кабинете), 
      "live": true (платформа получает ваш поток), 
      "recording": true (поток записывается) 
    } 
  } 
}

Окончание записи

{ 
  "type": "stream", 
  "message": { 
    "stream": { 
       "id": 12345 (ID вашего потока в личном кабинете), 
       "live": true (платформа получает ваш поток), 
       "recording": false (поток не записывается) 
    } 
  } 
}

Начало обработки записи

{
  "type": "video",
  "message": {
    "video": {
      "id": 12345 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "Stream Record: Test, 2023-05-20 09:00:00 +0000" (вместо Test будет название вашего потока),
      "duration": 2048 (продолжительность записи в секундах),
      "status": "pending" (ожидание обработки),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "processing" (идёт обработка)
        }
      ]
    }
  }
}

Обработка записи частично завершена

{
  "type": "video",
  "message": {
    "video": {
      "id": 12345 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "Stream Record: Test, 2023-05-20 09:00:00 +0000" (вместо Test будет название вашего потока),
      "duration": 2048 (продолжительность записи в секундах),
      "status": "viewable" (видео доступно для просмотра),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "processing" (идёт обработка)
        }
      ]
    }
  }
}

Обработка записи полностью завершена

{
  "type": "video",
  "message": {
    "video": {
      "id": 12345 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "Stream Record: Test, 2023-05-20 09:00:00 +0000" (вместо Test будет название вашего потока),
      "duration": 2048 (продолжительность записи в секундах),
      "status": "ready" (обработка завершена),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "complete" (обработка завершена)
        }
      ]
    }
  }
}

Трансляция в статусе Ожидание начала

{ 
  "type": "broadcast", 
  "message": { 
    "broadcast": { 
      "id": 12345 (ID трансляции в личном кабинете), 
      "status": "pending" (статус Ожидание начала) 
    } 
  } 
}

Трансляция в статусе Live

{ 
  "type": "broadcast", 
  "message": { 
    "broadcast": { 
      "id": 12345 (ID трансляции в личном кабинете), 
      "status": "live" (статус Live) 
    } 
  } 
}

Трансляция в статусе Завершена

{ 
  "type": "broadcast", 
  "message": { 
    "broadcast": { 
      "id": 12345 (ID трансляции в личном кабинете), 
      "status": "finished" (статус Завершена) 
    } 
  } 
}

Трансляция в статусе На паузе

{ 
  "type": "broadcast", 
  "message": { 
    "broadcast": { 
      "id": 12345 (ID трансляции в личном кабинете), 
      "status": "paused" (статус На паузе) 
    } 
  } 
}

Видео добавлено на платформу

{ 
  "type": "video", 
  "message": { 
    "video": { 
      "id": 54321 (ID видео в личном кабинете), 
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят), 
      "name": "SampleVideo" (название видео), 
      "duration": 170859 (длительность в секундах), 
      "status": "empty" (видео ещё не обработано), 
      "converted_videos": [] 
    } 
  } 
} 

Обработка видео началась

{
  "type": "video",
  "message": {
    "video": {
      "id": 54321 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "SampleVideo" (название видео),
      "duration": 2048 (длительность в секундах),
      "status": "pending" (ожидание обработки),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "processing" (идёт обработка)
        }
      ]
    }
  }
}

Обработка видео частично завершена

{
  "type": "video",
  "message": {
    "video": {
      "id": 54321 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "SampleVideo" (название видео),
      "duration": 2048 (длительность в секундах),
      "status": "viewable" (видео доступно для просмотра),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "processing" (идёт обработка)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "processing" (идёт обработка)
        }
      ]
    }
  }
}

Обработка видео полностью завершена

{
  "type": "video",
  "message": {
    "video": {
      "id": 54321 (ID записи видео в личном кабинете),
      "slug": "abC12deFGhIjklmNO" (идентификатор видео в виде случайного набора символов, это помешает подобрать ссылку на видео, если вебхук перехватят),
      "name": "SampleVideo" (название видео),
      "duration": 2048 (длительность в секундах),
      "status": "ready" (обработка завершена),
      "converted_videos": [
        {
          "name": "vodcpu240" (видео в разрешении 240p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu360" (видео в разрешении 360p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu480" (видео в разрешении 480p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu720" (видео в разрешении 720p),
          "status": "complete" (обработка завершена)
        },
        {
          "name": "vodcpu1080" (видео в разрешении 1080p),
          "status": "complete" (обработка завершена)
        }
      ]
    }
  }
}

Мы используем cookie, чтобы сайт стал лучше для вас.