【发布时间】:2014-06-16 08:51:06
【问题描述】:
场景如下:
我正在使用 Nicecast(在 OS X 上)对 MP3 流(来自麦克风输入)进行编码,并将其发送到运行 Icecast2 流服务器的 Ubuntu 计算机。流媒体服务器通过 Wi-Fi 路由器仅连接到我的 LAN(而不是互联网)。该流被以下设备收听:iOS 设备、Android 设备、Windows 手机、Windows 计算机、Mac 计算机等(大多数使用 VLC)。
从麦克风拾音到通过客户的扬声器播放音频的延迟约为 1-2 秒。这对我的应用程序来说没问题。
但是,当网络拥塞(或客户端的 CPU 忙于做其他事情,或任何数量的原因)时,流会停止(中断)几秒钟,然后当一切恢复“正常”时,Icecast发送大量数据以再次赶上实时。客户端的缓冲区接收到大量数据并将其存储(应该如此)并从中断的地方重新开始播放(这也很好,因为这意味着没有音频内容丢失或丢失,这是我的应用程序所需要的) .但现在延迟约为4-5秒。
我需要将延迟控制在 1-2 秒左右。所以我想如果我可以将播放速度提高到 1.5 倍,例如,几秒钟后,我们就会回到 1-2 秒的延迟。换句话说,如果缓冲区中有“x”个数据量,则以 1.0 倍的速度播放。如果缓冲区达到“y”数据量或更多,则以 1.5 倍速度播放,直到缓冲区恢复到“x”数据量。一种“动态播放速度”(有更好(或正确)的名称吗?)。
所以,我的问题:
- 我可以使用 VLC(客户端)来提供这个解决方案吗?
- 还有其他流式客户端可以很好地处理这个问题吗? (尤其是在多个平台上工作的)
- 或者是否有其他流媒体平台可以处理此问题 自动,还是稍作配置?
任何想法和 cmets 将不胜感激!谢谢!
【问题讨论】:
标签: audio stream real-time audio-streaming playback