【发布时间】:2015-08-14 07:29:50
【问题描述】:
我想从本地文件上使用 RTP 传输的 mpeg 复制一堆 SD 源。 (VBR mpeg2video、mp2 音频)。它适用于一个多播源,使用以下命令:
ffmpeg -i rtp://@IP1:PORT -c copy video1.mpg
但是当我使用以下命令运行第二个 ffmpeg 实例时:
ffmpeg -i rtp://@IP2:PORT -c copy video2.mpg
然后我从两个 FFmpeg 实例 ("RTP: drop old packet received too late") 和两个文件(video1.mpg 和 video2.mpg)中都收到了来自第二个来源( rtp://@IP2:PORT)。
此问题仅在 Linux 中出现(我检查了 Ubuntu 14.04 - 16.04)。我在 Windows 中没有问题,并且可以从文件并行正确地转码视频。在 Ubuntu 下,甚至两个调整到不同源的 ffplay 实例也会播放相同的内容(从最后打开的源)。我试过用 VLC 回放,没有这样的问题。
当使用带有 -f 选项的 FFmpeg 时,我可以解决这个问题:
ffmpeg -f mpegts -i rtp://@IP1:PORT -c copy video1.mpg
和
ffmpeg -f mpegts -i rtp://@IP2:PORT -c 复制 video2.mpg,但随后出现以下错误:"[mpegts @ 0x306e240 ] PES 数据包大小不匹配" 并接收带有伪像和冻结效果的两个文件(video1.mpg 和 video2.mpg)。两个操作系统都会出现此问题。
如何在 Ubuntu 下使用 FFmpeg 同时录制|转码来自多个 RTP 流的视频而不会出现错误和伪影?
【问题讨论】:
-
你的问题解决了吗?!我得到了 RTP 数据包丢失和图片丢失错误。
-
使用 udp 到 http 代理 (udpxy) 为我解决了这个问题。
-
我想在android中运行ffmpeg,所以我想我不能使用udpxy解决方案。您同意增加最大 UDP 缓冲区大小会有所帮助吗?
-
在我的情况下它没有帮助。
标签: ubuntu ffmpeg network-programming video-streaming rtp