我有一个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相同。
如何降低/消除此斩波,即使这样做会增加延迟?
答案 0 :(得分:2)
RTP组播是基于UDP的协议。特别是UDP的组播模式通常受到WiFi路由器的限制(关于带宽,数据包数量等),因此简单的多播发现协议(如Bonjour,UPnP,SAP等)通常使用WiFi工作正常,但编码多媒体内容的数据传输是所以(它适用于我的家用路由器,但在工作中失败等)。 因此,我建议您不要在WiFi上使用多播UDP协议进行流式传输,而应使用单播UDP或基于TCP的方法。