Ошибка пропущенных пакетов при потоковой передаче rtsp в rtmp с использованием ffmpeg

#ffmpeg #stream #rtsp #rtmp #sdp

#ffmpeg #поток #rtsp #rtmp #sdp

Вопрос:

Я использую ffmpeg для потоковой передачи RTSP в RTMP, входным сигналом является sdp-файл, описывающий один видеопоток и один аудиопоток, когда я тестирую RTSP с помощью ffplay, он работает нормально

 ffplay -protocol_whitelist "file,udp,rtp" -strict -2 -i media.sdp
  

но когда я переключаюсь на ffmpeg для потоковой передачи, я получаю много ошибок, связанных с отсутствием пакетов

 ffmpeg -protocol_whitelist "file,udp,rtp" -strict -2  -i media.sdp   -c copy -f flv "rtmp://liveaddress"
  

журнал ошибок:

 [sdp @ 000001f1f4cea400] max delay reached. need to consume packet
[sdp @ 000001f1f4cea400] RTP: missed 321 packets
[sdp @ 000001f1f4cea400] max delay reached. need to consume 
[sdp @ 000001f1f4cea400] RTP: missed 14 packets
[sdp @ 000001f1f4cea400] max delay reached. need to consume packet
[sdp @ 000001f1f4cea400] RTP: missed 7 packets
  

файл sdp:

 SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
t=0 0
a=tool:libavformat 58.12.100
m=video 5555 RTP/AVP 96
c=IN IP4 127.0.0.1
b=AS:2000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z0LAINoBQBbsBagICAoAAAfSAAOpgR4wZUA=,aM4fIA==; profile-level-id=42c020
m=audio 6666 RTP/AVP 96
c=IN IP4 127.0.0.1
b=AS:125
a=rtpmap:96 MPEG4-GENERIC/44100/2
a=fmtp:96 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1210
  

Ответ №1:

После некоторых исследований в Интернете я нашел решение: добавьте аргумент команды -buffer_size в ffmpeg, потому что мое видео H264 с RTSP-сервера имеет переменную скорость передачи данных, я полагаю.

Комментарии:

1. Какое значение вы установили?

2. Какое значение вы установили?

Ответ №2:

У меня была аналогичная проблема, решаемая с -rtsp_transport tcp -protocol_whiteliste rtp,file,udp,tcp