我想从本地文件上用RTP传输的mpegts复制一堆SD源。 (VBR mpeg2video,mp2音频)。它工作正常的一个组播源用下面的命令:Ubuntu中的FFmpeg RTP网络问题
ffmpeg -i rtp://@IP1:PORT -c copy video1.mpg
但是当我跑了第二ffmpeg的情况下使用下面的命令:
ffmpeg -i rtp://@IP2:PORT -c copy video2.mpg
然后我得到了来自FFmpeg的情况下错误(” RTP:丢弃收到的旧数据包太晚“),并在两个文件(video1.mpg和video2.mpg)中录制来自第二个来源(rtp:// @ IP2:PORT)的视频。
这个问题只发生在Linux(我查了Ubuntu 14.04 - 16.04)。我在Windows中没有问题,并且可以正确地从文件并行转码视频。在Ubuntu下,即使两个调谐到不同来源的ffplay实例也会播放相同的内容(来自最后打开的来源)。我试着用VLC回放,没有这样的问题。
我可以使用FFmpeg的使用-f选项时解决此问题:
ffmpeg的-f MPEGTS -i RTP:// @ IP1:PORT -c复制video1.mpg
和
ffmpeg的-f MPEGTS -i rtp:// @ IP2:PORT -c复制video2.mpg,但后来出现以下错误:“[mpegts @ 0x306e240] PES数据包大小不匹配”并接收这两个文件(video1.mpg和video2 .mpg)与工件和冻结效果。两个操作系统都会出现此问题。
如何在Ubuntu下同时在多个RTP流中使用FFmpeg对视频进行编码转换,而不会出现错误和伪像?
你解决你的问题?我得到了RTP包丢失,并且图片丢失了错误。 –
使用udp到http代理(udpxy)为我解决了这个问题。 –
我想在android中运行ffmpeg,所以我想我不能使用udpxy解决方案。你同意增加最大UDP缓冲区大小可以帮助吗? –