使用ffmpeg将rtsp流到rtmp时丢失数据包错误

时间:2019-04-11 04:10:56

标签: ffmpeg stream rtsp rtmp sdp

我正在使用ffmpeg将RTSP转换为RTMP流,输入是一个描述一个视频流和一个音频流的sdp文件,当我使用ffplay测试RTSP时,效果很好

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

2 个答案:

答案 0 :(得分:0)

在网上进行了一些研究之后,我找到了一个解决方案: 向ffmpeg添加-buffer_size命令arg,因为我猜我来自RTSP服务器的H264视频的比特率可变。

答案 1 :(得分:0)

我遇到了类似的问题,已通过 -rtsp_transport tcp -protocol_whiteliste rtp,file,udp,tcp

解决