Остановка видеопотока со стороны WCS-cервера¶
Описание¶
Любой поток, опубликованный или захваченный на WCS, может быть остановлен на стороне сервера.
Для остановки публикации или воспроизведения потока со стороны WCS-сервера доступны два способа:
- Возврат кода состояния HTTP
403 FORBIDDEN
на keep-alive запрос для потока - REST-запрос к WCS-серверу
Keep-Alive видеопотока¶
Keep-alive сообщения могут быть использованы для завершения потоков со стороны WCS-сервера.
Для этого бэкенд сервер, на котором сконфигурирован REST Hooks, должен вернуть код состояния HTTP 403 FORBIDDEN
на keep-alive запрос для потока.
Таким образом могут быть остановлены публикация или воспроизведение потока, или и то, и другое. Чтобы различить опубликованные и воспроизводимые потоки, скрипт бэкенд сервера должен обрабатывать published
параметр метода StreamKeepAliveEvent
Настройка REST hook¶
Сконфигурируйте web-сервер с REST Hooks. Он должен обрабатывать keep-alive запросы от WCS-сервера, используя, например, PHP-скрипт, и определять restClientConfig
для метода StreamKeepAliveEvent
"StreamKeepAliveEvent" : {
"clientExclude" : "",
"restExclude" : "sdp",
"restOnError" : "FAIL",
"restPolicy" : "NOTIFY",
"restOverwrite" : ""
}
Серверная часть¶
Чтобы включить отправку keep-alive сообщений для потоков, необходимо:
-
Включить настройку keep-alive в flashphoner.properties
-
Определить keep-alive интервал и приложение, которое будет принимать ответы на keep-alive REST-запросы
Может быть использовано другое приложение. Используйте интерфейс командной строки, команду
show apps
, чтобы просмотреть список приложений и их ключи -
Добавить к этому приложению REST-метод
StreamKeepAliveEvent
, используя следующую команду
-
Подключить REST hook к приложению из командной строки
Здесь:
my-web-server.com
- это адрес бэкенд сервера,MyAPI
- это путь, по которому расположен REST hook.
REST-вызовы для остановки потока¶
Для остановки потока используется REST запрос /stream/terminate
REST запрос должен быть HTTP/HTTPS POST запросом в таком виде:
- HTTP:
http://streaming.flashphoner.com:8081/rest-api/stream/terminate
- HTTPS:
https://streaming.flashphoner.com:8444/rest-api/stream/terminate
Здесь:
streaming.flashphoner.com
- адрес WCS-сервера8081
- стандартный REST / HTTP порт WCS-сервера8444
- стандартный HTTPS портrest-api
- обязательная часть URL/stream/terminate
- используемый REST-метод
REST-методы и статусы ответа¶
/stream/terminate¶
Остановить видеопоток
POST /rest-api/stream/terminate HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"mediaSessionId": "41c3f621-a847-4639"
}
Response example¶
Return codes¶
Code | Reason |
---|---|
200 | OK |
404 | Not found |
Параметры¶
Параметр | Описание | Пример |
---|---|---|
mediaSessionId | Идентификатор медиа сессии |
41c3f621-a847-4639
|
name | Имя поток |
streamName
|
published | Если `true`, то поток является опубликованным; если `false`, то поток воспроизводится |
true
|
status | Текущий статус потока |
PUBLISHING
|
Фильтрация потоков по параметрам¶
Параметры запроса /stream/terminate
рассматриваются как фильтры, будут остановлены все потоки, соответствующие этим фильтрам. Например, можно остановить всех подписчиков для всех опубликованных потоков
или всех подписчиков для определенного потока
Можно остановить публикацию по статусу
Также можно остановить все потоки в определенных медиасессиях
или в одной медиасессии
Возобновление потока¶
После остановки потока со стороны сервера публикация и воспроизведение потока могут быть возобновлены. Это будет новый поток.
Например, в случае WebRTC потока, опубликованного с использованием клиента client2/examples/min/streaming.html
и воспроизводимого с использованием клиента client2/examples/demo/streaming/player/player.html
:
-
Поток опубликован
-
Поток воспроизводится
-
Воспроизведение потока остановлено со стороны WCS-сервера
Публикация потока будет возобновлена после нажатия кнопки publish
.
Воспроизведение потока будет возобновлено после нажатия кнопке Start
.
Известные проблемы¶
1. Сообщения Can't find mediasession
в логе клиента¶
Симптомы
В случае остановки со стороны сервера RTMFP-потока, опубликованного с использованием клиента client2/examples/demo/streaming/flash_client/chat
.html, публикация потока останавливается, однако сессия потока не уничтожается. В логе клиента появляются сообщения Can't find mediasession
Решение
Остановить сессию после завершения потока