,这是一个场景:
我使用Nicecast (在OS上)对MP3流进行编码(从麦克风输入),并将其发送到运行Icecast2流服务器的Ubuntu计算机。流媒体服务器只是通过Wi路由器连接到我的局域网(而不是互联网)。iOS设备、安卓设备、Windows、Windows、most等都能听到这一流(大多数都使用VLC)。
从麦克风拾音器到通过客户端扬声器播放的音频的延迟约为1-2秒。这适用于我的申请。
但是,当出现网络拥塞(或者客户端的CPU忙于做其他事情,或者其他原因)时,流停止(中断)几秒钟,然后当一切恢复到“正常”时,Icecast发送大量数据以重新捕获实时。客户端的缓冲区接收到这种数据的爆炸,并存储它(就像它应该的那样),然后在中断的地方再次播放(这也很好,因为它意味着没有丢失或丢失音频内容,这正是我的应用程序所需要的)。但是现在延迟大约是4-5秒.
,我需要把延迟保持在1-2秒.所以我想,如果我能把播放速度加快到1.5倍,例如,几秒钟后,我们就会回到1-2秒的延迟时间。换句话说,如果缓冲区中包含“x”数据量,则以1.0x的速度播放。如果缓冲区达到'y‘的数据量或更多,播放速度为1.5倍,直到缓冲区恢复到'x’的数据量。一种“动态播放速度”(是否有更好的(或正确的)名称)。
所以,我的问题是:
任何想法和评论都将不胜感激!谢谢!
发布于 2014-08-07 11:44:27
https://stackoverflow.com/questions/23381227
复制相似问题