RTSP KeyFrame

pride

Member
Добрый день, могу ли я управлять количеством ключевых кадров в потоке RTSP (h264) c WCS?

WebRTC -> RTSP -> Стороний приемник потока
 

Max

Administrator
Staff member
Управление количеством ключевых кадров возможно только при транскодинге потока.

Code:
/transcoder/startup

{
 "uri": "transcoder://tcode1",
 "remoteStreamName": "test",
 "localStreamName": "testT",
 "encoder": {
  "width": 640,
  "height": 480,
  "keyFrameInterval": 30,
  "fps": 30,
  "watermark": "Test.png"
 }
}

В результате будет так:

WebRTC -> Transcoder > RTSP -> Стороний приемник потока
 

pride

Member
Хм, а в самом RTSP ключевые пролетают 1 в час. Т.е без перекодировании на стороне приемника, картинка вообще не формируется.
 

pride

Member
ffprobe -select_streams v -show_frames -show_entries frame=pict_type -v quiet -of csv="p=0" rtsp://ip:554/test
В этом случае летят только P кадры, I прлетают очень редко
 

pride

Member
И еще вопрос, в потоке rtmp я так же не могу управлять кадрами без транскодера?
 

Max

Administrator
Staff member
WCS может попросить у WebRTC endpoint (браузера) высылать К-фрейм, например каждые 5 секунд.

Code:
periodic_fir_request = true
periodic_fir_request_interval = 5000
Браузер будет высылать К-фреймы если сможет.

Суть в том, что ключевыми фреймами может управлять только тот, кто эти фреймы производит.
А производит фреймы энкодер WebRTC потока на стороне браузера. Если мы транскодируем поток на стороне сервера, то включается энкодер на стороне сервера, который может управлять К - фреймами.

И еще вопрос, в потоке rtmp я так же не могу управлять кадрами без транскодера?
Можно только попросить энкодер RTMP потока поменять интервал. Если энкодер позволяет это сделать, то поменяет.
Иначе придется транскодировать, также как в случае с WebRTC.
 

Max

Administrator
Staff member
Хм, а в самом RTSP ключевые пролетают 1 в час
Если имеется ввиду, что по RTSP играем WebRTC поток, то такое может быть, если WebRTC стрим идет в кодеке VP8.
Если переключиться на H.264, то ключевые кадры должны идти регулярно.
 

pride

Member
Если имеется ввиду, что по RTSP играем WebRTC поток, то такое может быть, если WebRTC стрим идет в кодеке VP8.
Если переключиться на H.264, то ключевые кадры должны идти регулярно.
Огромное спасибо. Моя проблема решена ;)
 

pride

Member
И еще Тут для параметров periodic_fir_request, periodic_fir_request_interval стоит false в столбце "Требуется перезапуск", но это скорее всего не так. Так как результата небыло при переобудликовании потока, а вот после перезагрузки пошли кадры.
 

Max

Administrator
Staff member
И еще Тут для параметров periodic_fir_request, periodic_fir_request_interval стоит false в столбце "Требуется перезапуск", но это скорее всего не так. Так как результата небыло при переобудликовании потока, а вот после перезагрузки пошли кадры.
Динамические (не требующие перезапуска) настройки нужно менять следующим образом:
1. Меняем настройку в файле flashphoner.properties
2. Заходим по SSH на сервер, затем заходим в CLI WCS сервера
Code:
ssh admin@localhost -p 2001
3. Выполняем команду
Code:
reload node-settings
Проверили на последней сборке 5.2.1671, настройка в этом случае применяется, ключевые фреймы после публикации WebRTC начинают идти регулярно.
 

pride

Member
Динамические (не требующие перезапуска) настройки нужно менять следующим образом:
1. Меняем настройку в файле flashphoner.properties
2. Заходим по SSH на сервер, затем заходим в CLI WCS сервера
Code:
ssh admin@localhost -p 2001
3. Выполняем команду
Code:
reload node-settings
Проверили на последней сборке 5.2.1671, настройка в этом случае применяется, ключевые фреймы после публикации WebRTC начинают идти регулярно.
Понял, спасибо.
 
Top