/rest-api/stream/startRecording

pride

Member
Добрый день, можно ли при запросе на принудительную запись указать имя файла в запросе?
 

pride

Member
В доках в параметрах к запросу есть вот такое:
Code:
mediaSessionId
config: <Config>
но нет описание атрибутов конфига.
 

Max

Administrator
Staff member
Здравствуйте.

Здесь есть примеры использования конфига:

Там два поля: fileTemplate, rotation

Code:
{
 "mediaSessionId": "5a072377-73c1-4caf-abd3",
  "config": {
    "fileTemplate": "{streamName}-{startTime}-{endTime}",
    "rotation": "20M"
  }
}
можно ли при запросе на принудительную запись указать имя файла в запросе?
Попробуйте указать в конфиге:

Code:
"fileTemplate": "stream2023"
Но при этом, нужно следить за уникальностью. Если две записи попытаются использовать одно и то же имя файла, будет конфликт.
 

pride

Member
POST: https://domain:8444/rest-api/stream/startRecording
{
"mediaSessionId": "5a072377-73c1-4caf-abd3",
"config": {
"fileTemplate": "{streamName}-{startTime}-{endTime}-blablabla"
}
}
/usr/local/FlashphonerWebCallServer/records/undefined-undefined-undefined-blablabla.mp4
WCS: 5.2.1611-055e3115e6990ce22800c299491ae59849eb8fe4
Но в целом мне blablabla достаточно, но для информации патерны не работают)))
 

Max

Administrator
Staff member

pride

Member
Здравствуйте. После перезагрузки, при запросе:
/rest-api/stream/startRecording
Code:
{
  "mediaSessionId": "3a0cb890-b9b7-11ee-b862-89a85c96f12b",
  "config" : {
    "fileTemplate": "testtest123"
  }
}
Получаю 200, при этом запись не стартует, а в логах вижу такое:
Code:
05:12:05,827 ERROR              NodeApi - HTTP-pool-7-thread-2 Failed to start recording on stream id f1ade410-b9ad-11ee-97eb-b5881e45b858
05:12:06,252 ERROR          RtspSession - RTSP-pool-50-thread-1 Received PLAY request but not ready to play, state CONNECTED
Куда копать?
 

pride

Member
И что то новое, периодически получаю при запросе на старт записи 500:
Code:
  "exception": "com.flashphoner.rest.server.exception.InternalErrorException",
  "reason": "com.flashphoner.rest.server.exception.InternalErrorException, Internal Server Error, Failed to start fileRecorder java.lang.reflect.InvocationTargetException, ts: 1705992600883, path: /rest-api/stream/startRecording",
  "path": "/rest-api/stream/startRecording",
  "error": "Internal Server Error",
  "message": "Failed to start fileRecorder java.lang.reflect.InvocationTargetException",
  "timestamp": 1705992600883,
  "status": 500
}
 

pride

Member
Так же замечаю периодически на ззапросы:
Code:
/connection/find
/connection/terminate
/stream/terminate
/stream/find
/connection/terminate
Ошибку http ECONNRESET причем периодически, запросы межсерверные, фильтры и фаирволы отключены.
500 поймал локальным запросом на апи прода.
PS: Таймаут на запросах 5 сек.
 

Max

Administrator
Staff member
Добрый день.
"mediaSessionId": "3a0cb890-b9b7-11ee-b862-89a85c96f12b",
Failed to start recording on stream id f1ade410-b9ad-11ee-97eb-b5881e45b858
Эти сообщения относятся к разным стримам, судя по id. Проверьте, что на разделе, где создаются файлы записей, достаточно места. Также для старта записи необходимо, чтобы в публикуемом потоке проходили ключевые фреймы (можно посмотреть в метриках потока: Получение метрик потока, метрика VIDEO_K_FRAMES должна монотонно расти)
периодически получаю при запросе на старт записи 500
Пожалуйста, соберите отчет: Сбор отладочных логов при помощи скрипта report.sh и пришлите, используя эту форму
 

pride

Member
Добрый день.


Эти сообщения относятся к разным стримам, судя по id. Проверьте, что на разделе, где создаются файлы записей, достаточно места. Также для старта записи необходимо, чтобы в публикуемом потоке проходили ключевые фреймы (можно посмотреть в метриках потока: Получение метрик потока, метрика VIDEO_K_FRAMES должна монотонно расти)

Пожалуйста, соберите отчет: Сбор отладочных логов при помощи скрипта report.sh и пришлите, используя эту форму
Это пример, в реальности там один ид
 

Max

Administrator
Staff member
В прмисланных логах видим проблемы при попытке отправить REST hook на ваш бэкенд
1705998084795.png

В этом случае исходная операция, вызвавшая этот REST hook, работать не будет. Проверьте, что бэкенд доступен с сервера и слушает соединения на порту 7777.
Возможно, в этом и заключается проблема с записью, но в логе слишком мало информации. Необходимо выставить серверный лог в INFO в файле log4j.properties
Code:
log4j.rootLogger=INFO
После этого нужно воспроизвести проблему с записью и повторно собрать логи.
Также обращаем внимание, что настройка
1705998247138.png

устарела, используйте вместо нее настройку
Code:
rtp_activity_timeout=120
 

pride

Member
В прмисланных логах видим проблемы при попытке отправить REST hook на ваш бэкенд
View attachment 3925
В этом случае исходная операция, вызвавшая этот REST hook, работать не будет. Проверьте, что бэкенд доступен с сервера и слушает соединения на порту 7777.
Возможно, в этом и заключается проблема с записью, но в логе слишком мало информации. Необходимо выставить серверный лог в INFO в файле log4j.properties
Code:
log4j.rootLogger=INFO
После этого нужно воспроизвести проблему с записью и повторно собрать логи.
Также обращаем внимание, что настройка
View attachment 3926
устарела, используйте вместо нее настройку
Code:
rtp_activity_timeout=120
Эти ошибки это попытка перезагрузить WCS и собственно сам слушатель на REST hook. Перезагрузка не помогла, все осталось попреждему.
 

Max

Administrator
Staff member
По логу выглядит так, что запрос на запись пришел до получения первого ключевого фрейма от публикующего клиента:
Code:
08:56:04,214 INFO         RestApiRouter - HTTP-pool-7-thread-904 handleRequest method: /rest-api/stream/startRecording, params:{mediaSessionId=64926300-ba96-11ee-af58-8f18f9101270, config={fileTemplate=275400_64926300-ba96-11ee-af58-8f18f9101270}, appKey=main}
08:56:04,214 ERROR              NodeApi - HTTP-pool-7-thread-904 Failed to start recording on stream id 64926300-ba96-11ee-af58-8f18f9101270
...
08:56:04,748 WARN                     D - RTP-pool-36-thread-109 Failed to decode RTP packet, Not enough readable bytes - Need 210240, maximum is 184
08:56:04,748 WARN                     D - RTP-pool-36-thread-109 Failed to decode RTP packet, Not enough readable bytes - Need 241180, maximum is 184
08:56:04,748 WARN                     D - RTP-pool-36-thread-109 Failed to decode RTP packet, Not enough readable bytes - Need 67596, maximum is 184
08:56:04,748 WARN                     D - RTP-pool-36-thread-109 Failed to decode RTP packet, Unknown version for byte: -3
...
08:56:04,774 INFO                     D - VideoProcessor-275400-64926300-ba96-11ee-af58-8f18f9101270 Add media process decoding
08:56:04,775 INFO   WCS4CallbackHandler - VideoDistributor-PROXY-64926300-ba96-11ee-af58-8f18f9101270 notifyVideoFormat format: VideoFormat{playerVideoWidth=null, playerVideoHeight=null, streamerVideoHeight=480, streamerVideoWidth=640, playerMinBitrate=0, playerMaxBitrate=0, streamerBitrate=0, quality=0}; user - tbbh8hlsl2qk4kudrljfvtritr@null
08:56:04,775 WARN           RtspSession - VideoDistributor-PROXY-64926300-ba96-11ee-af58-8f18f9101270 Unknown ssrc in RTCP SR:329557905, audio:0, video:0
Поток публикуется по UDP, поэтому могут быть потери, которые и приводят к проблеме. Рекомендуется в таких случаях публиковать потоки по TCP
Code:
ice_tcp_transport=true
Также в настройках видим
Code:
periodic_fir_request_interval=300
При этом PLI запросы высылаются публикующему клиенту каждые 300 мс, это слишком часто. Не рекомендуется выставлять это настройку меньше 1 секунды
Code:
periodic_fir_request_interval=1000
 

pride

Member
Помогла переустановка WCS полностью. Проблемы ушли сразу.
Эти проблемы возникли при смене адреса бека и перезагрузки. Может совпадение, а может и нет..
 
Top