首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu中的FFmpeg RTP网络问题

Ubuntu中的FFmpeg RTP网络问题
EN

Stack Overflow用户
提问于 2015-08-14 07:29:50
回答 2查看 3.1K关注 0票数 2

我想从mpegts复制一堆SD源,并在本地文件上使用RTP传输。(VBR mpeg2video,mp2音频)。对于一个多播源,使用以下命令可以很好地工作:

代码语言:javascript
复制
ffmpeg -i rtp://@IP1:PORT -c copy video1.mpg

但是,当我使用以下命令运行第二个ffmpeg实例时:

代码语言:javascript
复制
ffmpeg -i rtp://@IP2:PORT -c copy video2.mpg

然后,我从第二个源(rtp://@IP2 2:PORT)记录的两个FFmpeg实例("RTP:丢弃旧数据包太晚了“)和两个文件(视频1.mpg和video 2.mpg)中获得了错误。

此问题仅在Linux中发生(我查看了Ubuntu14.0416.04)。我在Windows中没有任何问题,我可以从文件中正确地转换视频。在Ubuntu下,甚至有两个调到不同源的ffplay实例回放相同的内容(来自上次打开的源代码)。我试着用VLC回放,没有这样的问题。

在使用FFmpeg和-f选项时,我可以解决这个问题:

-f mpegts -i rtp://@IP1 1:端口-c复制视频1.mpg

ffmpeg -f mpegts -i rtp://@I 2:端口-c复制视频2.mpg,但随后我得到以下错误:"mpegts @ 0x306e240 PES数据包大小不匹配“,并接收带有工件和冻结效果的两个文件(视频1.mpg和mismatch 2.mpg)。这两个操作系统都会出现此问题。

如何在Ubuntu下用FFmpeg记录来自多个RTP流的视频,没有错误和工件?

EN

回答 2

Stack Overflow用户

发布于 2015-08-14 08:38:06

更新:

如果使用多播组,则可能需要设置sources参数以接收从指定地址发送的数据包。

sources=address,地址 只接收从指定的发送方IP地址之一发送到多播组的数据包。

ffmpeg -i rtp://[multicast-address]:port?sources=xxx

这很可能是由您的Linux机器上的小尺寸接收缓冲器引起的。既然你提到了SD,它必须被设置得相当低。

可以使用以下方法获得当前值(以字节为单位):

sysctl net.core.rmem_max

并使用以下方法设置一个新值:

sysctl -w net.core.rmem_max=26214400

或编辑/etc/sysctl.conf

票数 3
EN

Stack Overflow用户

发布于 2016-03-22 07:58:04

这不是最好的解决办法,但可以解决这个问题。

我按照以下方式运行udpxyudpxy -p 5556

然后以以下方式运行ffmpeg:ffmpeg -i http://0.0.0.0:5556/rtp/239.255.1.1:5044

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32004598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档