軟件:
1、流媒體服務器EasyDarwin-windows-8.1.0-1901141151
2、ffmpeg-20181001-dcbd89e-win64-static
3、直播源:rtsp://192.168.1.168/0
4、流媒體服務器EasyDarwin地址rtsp://192.168.1.28/3
問題現象
[rtsp @ 0000000000122bc0] max delay reached. need to consume packet [rtsp @ 0000000000122bc0] RTP: missed 33 packets [rtsp @ 0000000000122bc0] max delay reached. need to consume packet [rtsp @ 0000000000122bc0] RTP: missed 166 packets [h264 @ 0000000002f4b280] out of range intra chroma pred mode [h264 @ 0000000002f4b280] error while decoding MB 27 39 [h264 @ 0000000002f4b280] concealing 502 DC, 502 AC, 502 MV errors in P f [h264 @ 0000000002ed08c0] Increasing reorder buffer to 8 frame= 964 fps= 30 q=29.0 size=N/A time=00:00:33.26 bitrate=N/A dup=141 frame= 999 fps= 31 q=29.0 size=N/A time=00:00:33.77 bitrate=N/A dup=170 [rtsp @ 0000000000122bc0] max delay reached. need to consume packet [rtsp @ 0000000000122bc0] RTP: missed 12 packets [h264 @ 0000000002ed1000] corrupted macroblock 55 32 (total_coeff=-1) [h264 @ 0000000002ed1000] error while decoding MB 55 32
解決方法:
采用以下命令進行拉流轉發,運行了幾個小時,幾乎沒有出現丟包現象
ffmpeg -rtsp_transport tcp -i rtsp://192.168.1.168/0 -vcodec copy -f rtsp rtsp://192.168.1.28/11
原因:這是rtsp協議默認使用udp導致的問題,所以rtsp強制使用tcp方式可以一定程度避免丟包。
如果是拉rtsp轉rtmp,命令是(沒測試)
ffmpeg -rtsp_transport tcp -i rtsp://admin:password@192.168.1.11:554 -vcodec copy -f flv -an rtmp://localhost/live/tests