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

标签 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

最佳答案

在网上查了一些资料,找到了解决办法: 将 -buffer_size 命令 arg 添加到 ffmpeg,因为我猜我来自 RTSP 服务器的 H264 视频具有可变比特率。

关于ffmpeg - 使用ffmpeg将rtsp流式传输到rtmp时丢失数据包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624569/

相关文章:

video - 使用 ffmpeg 将平面视频合并为 360 视频

angular - 我怎样才能让 fluent-ffmpeg 在 Angular 8 中工作

ffmpeg - 使用 ffmpeg 合并视频

python - 将 yuv420p 原始数据转换为图像 opencv

java - 获取 javax.xml.stream.XMLStreamReader 读入的字节数

visual-c++ - 使用 ffmpeg 输出 RTSP 流

javascript - CoffeeScript:请求返回看起来像是流的内容

ffmpeg - 我想要 ffmpeg 在 youtube 上直播 1 文件夹

FFmpeg记录rtsp流到文件错误

android - 无法在 Android 中播放 H.264 RTP 流