如何通过wifi修复波动的ffmpeg RTP流?

时间:2015-12-14 15:14:15

标签: ffmpeg streaming audio-streaming vlc libvlc

我有一个Raspberry Pi,连接了USB麦克风和WiFi加密狗加密狗。

我尝试仅从Pi流式传输音频,目的是使用VLCKit通过wifi接收流到自定义iOS移动应用。我在Pi上使用ffmpeg,因为我需要这个项目的延迟相当低(<2s),并且使用Icecast / Darkice会产生大约15秒的延迟。

在Pi上执行的代码是:

ffmpeg -f alsa -i plughw:1,0 -acodec libmp3lame -ab 128k -ac 1 -ar 44100  -f rtp rtp://234.5.5.5:1234

在Pi端,我有一个设备播放(圣诞节!)音乐不断进入USB麦克风进行测试。 Pi只通过WiFi连接 - 而不是以太网。

为了测试接收流,我使用的是VLC(在Macbook / iPhone上)。

当Mac通过以太网连接时,流可正常工作,如您所见:

https://goo.gl/photos/HZgNh7z4HgaqHBaP7

但是,当Mac通过WiFi连接时,流不稳定,如您所见:

https://goo.gl/photos/qjAVH6djqS9Jbvmh6

您还可以看到从Mac到Pi的ping跟踪以及VLC统计信息。正如你所看到的,似乎并不是这些与波动之间的相关性。

我已经尝试过VLC iOS应用程序,而且它的波动性与WiFi上的Mac相同。

如何降低/消除此斩波,即使这样做会增加延迟?

1 个答案:

答案 0 :(得分:2)

RTP组播是基于UDP的协议。特别是UDP的组播模式通常受到WiFi路由器的限制(关于带宽,数据包数量等),因此简单的多播发现协议(如Bonjour,UPnP,SAP等)通常使用WiFi工作正常,但编码多媒体内容的数据传输是所以(它适用于我的家用路由器,但在工作中失败等)。 因此,我建议您不要在WiFi上使用多播UDP协议进行流式传输,而应使用单播UDP或基于TCP的方法。