为什么在ffmpeg中合并两个网络流会引起RTP错误?

时间:2018-12-27 13:39:36

标签: ffmpeg

我想从网络流A中获取视频流,而从网络流B中获取音频流。

我尝试了以下命令:

ffmpeg -i rtsp://192.168.1.1 -i http://192.168.1.2 -c copy -map 0:v:0 -map 1:a:0 -f mp4 out.mp4

这会不断出现以下错误:

[rtsp @ 0x564b44779f60] max delay reached. need to consume packet
[rtsp @ 0x564b44779f60] RTP: missed 591 packets

同时使用命令

ffmpeg -i rtsp://192.168.1.1 -c copy -f mp4 out.mp4

ffmpeg -i http://192.168.1.2 -c copy -f mp3 out.mp3

工作顺利。

视频流是HEVC,音频流是MP3。我想念什么?

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题:

一次使用两个或多个源时,数据包丢失似乎增加了。如果有人知道为什么,那么对此的答案仍然会很感激。

但是,使用TCP作为RTSP的传输协议,显然可以防止数据包丢失:

ffmpeg -rtsp_transport tcp -i rtsp://...

通过另外提高thread_queue_size可以获得更好的结果:

-thread_queue_size 1024

上述两个选项都是输入选项,必须放在-i之前。