...
Code Block | ||||
---|---|---|---|---|
| ||||
jar -cf testlayout.jar ./com/flashphoner/frameInterceptor/TestInterceptor.javaclass |
и скопируем его в каталог, где размещены библиотеки WCS сервера
...
Code Block | ||
---|---|---|
| ||
decoded_frame_interceptor=com.flashphoner.frameInterceptor.TestInterceptor |
и перезапустить WCS.
Отдельный каталог для собственных Java библиотек
Начиная со сборки 5.2.1512, Java библиотеки (jar файлы) должны помещаться в каталог /usr/local/FlashphonerWebCallServer/lib/custom
Code Block | ||||
---|---|---|---|---|
| ||||
cp testlayout.jar /usr/local/FlashphonerWebCallServer/lib/custom |
Этот каталог сохраняется при дальнейших обновлениях сервера к более новым сборкам. Таким образом, нет необходимости снова копировать jar файлы после установки обновления.
Тестирование
1. Опубликуйте поток в примере Two Way Streaming https://test1.flashphoner.com:8444/client2/examples/demo/streaming/two_way_streaming/two_way_streaming.html, где test1.flashphoner.com - адрес WCS сервера
...
На изображении будут видны измененные пиксели.
Управление перехватчиками по REST API
В сборке 5.2.2055 добавлена возможность управления перехватчиками декодированных кадров по REST API
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
- HTTP: http://streaming.flashphoner.com:8081/rest-api/video_interceptor/set
- HTTPS: https://streaming.flashphoner.com:8444/rest-api/video_interceptor/set
Здесь:
- streaming.flashphoner.com - адрес WCS-сервера
- 8081 - стандартный REST / HTTP порт WCS-сервера
- 8444 - стандартный HTTPS порт
- rest-api - обязательный префикс
- /video_interceptor/set - используемый REST-вызов
REST методы и статусы ответа
/video_interceptor/set
Назначить потоку обработчик декодированных фреймов. Обработчик начнет работать, как только поток начнет декодироваться, например, будет добавлен в микшер. На один поток может быть назначен один обработчик
Request example
Code Block | ||||
---|---|---|---|---|
| ||||
POST /rest-api/video_interceptor/set HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"streamName":"stream1",
"className":"com.flashphoner.frameInterceptor.TestInterceptor"
} |
Response example
Code Block | ||||
---|---|---|---|---|
| ||||
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json |
Return codes
Code | Reason |
---|---|
200 | OK |
404 | Not found |
500 | Internal server error |
/video_interceptor/find_all
Найти все назначенные обработчики
Request example
Code Block | ||||
---|---|---|---|---|
| ||||
POST /rest-api/video_interceptor/find_all HTTP/1.1 Host: localhost:8081 Content-Type: application/json { "streamName":"stream1", "className":"com.flashphoner.frameInterceptor.TestInterceptor" } |
Response example
Code Block | ||||
---|---|---|---|---|
| ||||
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json
[
{
"hashcode":21982654,
"className":"com.flashphoner.frameInterceptor.TestInterceptor",
"processedFrames":169,
"streamName":"stream1",
"status":"PROCESSING"
}
] |
Return codes
Code | Reason |
---|---|
200 | OK |
404 | Not found |
/video_interceptor/remove
Удалить обработчик с указанного потока
Request example
Code Block | ||||
---|---|---|---|---|
| ||||
POST /rest-api/video_interceptor/remove HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"streamName":"stream1"
} |
Response example
Code Block | ||||
---|---|---|---|---|
| ||||
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json |
Return codes
Code | Reason |
---|---|
200 | OK |
404 | Not found |
Параметры
Параметр | Описание | Пример |
---|---|---|
streamName | Имя опубликованного потока | "streamName":"stream1" |
className | Имя класса перехватчика | "className":"com.flashphoner.frameInterceptor.TestInterceptor" |
hashcode | Идентификатор объекта перехватчика | "hashcode":21982654 |
status | Текущий статус перехватчика | "status":"PROCESSING" |
processedFrames | Количество обработанных кадров | "processedFrames":169 |
Перехватчик может находиться в одном из следующих состояний:
- WAITING - перехватчик ожидает, когда поток начнет декодироваться
- PROCESSING - перехватчик получает декодированные кадры и обрабатывает их
- UNSUPPORTED - перехват не поддерживается (например, для потоков, декодированных на GPU)