如何通过 wifi 修复断断续续的 ffmpeg RTP 流?
How can I fix choppy ffmpeg RTP streaming over wifi?
我有一个 Raspberry Pi,连接了 USB 麦克风和 WiFi 加密狗。
我正在尝试仅从 Pi 流式传输音频,目的是通过 wifi 将流式传输到使用 VLCKit 的自定义 iOS 移动应用程序。我在 Pi 上使用 ffmpeg,因为我需要这个项目的延迟相当低(<2s),并且使用 Icecast/Darkice 给出了大约 15s 的延迟。
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 相同。
我怎样才能 decrease/remove 这种斩波,即使这样做会稍微增加延迟?
RTP 多播是一种基于 UDP 的协议。特别是 UDP 的多播模式通常受到 WiFi 路由器的限制(关于带宽、数据包数量等),因此简单的多播发现协议(如 Bonjour、UPnP、SAP 等)通常使用 WiFi 可以正常工作,但编码多媒体内容的数据传输是如此(它适用于我的家庭路由器,但在工作中失败等)。
因此,我建议您不要使用组播 UDP 协议在 WiFi 上进行流式传输,而是使用单播 UDP 或基于 TCP 的方法。
我有一个 Raspberry Pi,连接了 USB 麦克风和 WiFi 加密狗。
我正在尝试仅从 Pi 流式传输音频,目的是通过 wifi 将流式传输到使用 VLCKit 的自定义 iOS 移动应用程序。我在 Pi 上使用 ffmpeg,因为我需要这个项目的延迟相当低(<2s),并且使用 Icecast/Darkice 给出了大约 15s 的延迟。
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 相同。
我怎样才能 decrease/remove 这种斩波,即使这样做会稍微增加延迟?
RTP 多播是一种基于 UDP 的协议。特别是 UDP 的多播模式通常受到 WiFi 路由器的限制(关于带宽、数据包数量等),因此简单的多播发现协议(如 Bonjour、UPnP、SAP 等)通常使用 WiFi 可以正常工作,但编码多媒体内容的数据传输是如此(它适用于我的家庭路由器,但在工作中失败等)。 因此,我建议您不要使用组播 UDP 协议在 WiFi 上进行流式传输,而是使用单播 UDP 或基于 TCP 的方法。