实时音频流到移动设备 - 动态播放速度

Posted

技术标签:

【中文标题】实时音频流到移动设备 - 动态播放速度【英文标题】:Real time audio streaming to mobile device - dynamic playback speed 【发布时间】: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 将不胜感激!谢谢!

【问题讨论】:

【参考方案1】:

我不知道有哪个播放器可以配置为这样做。

您可以使用 html5 构建一些简单的东西,正如 [这里] (variable speed control for audio playback in the browser?) 的回答。

Flashdoesn't support变速播放。

【讨论】:

以上是关于实时音频流到移动设备 - 动态播放速度的主要内容,如果未能解决你的问题,请参考以下文章

Xml 音频列表播放器在移动设备上不起作用,并且自动播放不起作用

在移动设备上预加载音频

是否可以将从移动设备获取的音频实时传输到网络服务器?

如何在移动设备上更改 HTML5 视频的播放速度?

如何使用 xamarin.forms 在移动设备中选择多个音频和/或视频文件?

通过 html 音频标签在移动浏览器上播放音频