...
REST-метод | Пример тела REST-запроса | Пример тела REST-ответа | Статусы ответа | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/stream/snapshot |
|
| 200 - Превью зафиксирован 404 - Поток не найден 500 - Ошибка фиксации |
Параметры
Имя параметра | Описание | Пример |
---|---|---|
streamName | Уникальное имя потока | 64966f33 |
data | Файл превью в base64-кодировке | iVBORw0KGgoAAAANSUhEUgAAAUAAAADwCAYAAABxLb1rAAAACXBIWXMAAAAAAAAAAQCEeRdzAAAQA |
...
Для отправки REST-запроса к WCS-серверу необходимо использовать REST-клиент.
Настройка
Начиная со сборки 5.2.1116, при получении превью трансляции при помощи REST API можно настроить максимальную длительность фиксации превью, включая возможную задержку при записи на диск сервера. По умолчанию, максимальная длительность установлена в 3000 мс, за это время предпринимается 30 попыток проверить, готов ли файл превью
Code Block | ||
---|---|---|
| ||
snapshot_taking_interval_ms=3000
snapshot_taking_attempts=30 |
Если файл превью не готов по истечении указанного интервала, запрос /stream/snapshot возвращает ошибку
Code Block | ||||
---|---|---|---|---|
| ||||
{
"exception": "com.flashphoner.rest.server.exception.InternalErrorException",
"reason": "com.flashphoner.rest.server.exception.InternalErrorException, Internal Server Error, Snapshot response timeout, ts: 1640836780816, path: /rest-api/stream/snapshot",
"path": "/rest-api/stream/snapshot",
"error": "Internal Server Error",
"message": "Snapshot response timeout",
"timestamp": 1640836780816,
"status": 500
} |
JavaScript API
Для снятия превью трансляции при помощи WebSDK предназначен метод snapshot объекта Stream. Пример использования метода приведен в веб-приложении Stream Snapshot для публикации потока и снятия превью.
...
1. Для теста используем:
- демо-сервер demo.flashphoner.com;
- браузер Chrome и REST-клиент для отправки запросов на сервер;
- веб-приложение Two Way Streaming для публикации потока;
- сервис https://www.motobit.com/util/base64-decoder-encoder.asp для декодирования превью.
...
Code Block | ||||
---|---|---|---|---|
| ||||
session.createStream({ name: streamName, display: localVideo, cacheLocalResources: true, receiveVideo: false, receiveAudio: false }).on(STREAM_STATUS.PUBLISHING, function(publishStream){ ... }).on(STREAM_STATUS.UNPUBLISHED, function(){ setStatus(STREAM_STATUS.UNPUBLISHED); //enable start button onUnpublished(); }).on(STREAM_STATUS.FAILED, function(stream){ ... }).publish(); |
Автоматическое создание превью опубликованного потока
При необходимости, превью каждого потока, поддерживаемого формата, опубликованного на сервере, могут создаваться автоматически. Эта возможность включается при помощи настройки в файле flashphoner.properties
Code Block | ||
---|---|---|
| ||
snapshot_auto_enabled=true |
Расположение кадров превью задается настройкой
Code Block | ||
---|---|---|
| ||
snapshot_auto_dir=/usr/local/FlashphonerWebCallServer/snapshots |
В указанном каталоге для опубликованного потока создается подкаталог с именем, соответствующим идентификатору медиасессии (по умолчанию)
Code Block | ||
---|---|---|
| ||
snapshot_auto_naming=mediaSessionId |
или имени потока
Code Block | ||
---|---|---|
| ||
snapshot_auto_naming=streamName |
Кадры превью в каталоге нумеруются последовательно и создаются с периодичностью, заданной при помощи настройки
Code Block | ||
---|---|---|
| ||
snapshot_auto_rate=30 |
В этом случае будет создано превью каждого 30 кадра.
Для экономии дискового пространства, может быть задано ограничение на количество хранимых кадров превью при помощи настройки
Code Block | ||
---|---|---|
| ||
snapshot_auto_retention=20 |
В этом случае в каталоге для потока будут сохранены последние 20 кадров превью.
Если поток с таким же именем публикуется повторно, нумерация кадров превью будет продолжена.