我正在尝试通过服务器流式传输音频。我已设置好所有内容,录制和播放静态音频时工作正常,但当我尝试流式传输音频时,播放端出现延迟。
我进行了 Google 搜索,但找不到正确的方法。我正在使用 AudioRecord 和 Audiotrack Android 媒体 API 来发送和接收音频数据。谁能告诉我如何处理这种延迟?
我已经在 GOOGLE GROUP to get clear picture 上添加了我的代码.
我曾尝试过这种方式,将 5 个音频数据 block 保存在一个缓冲区中,该缓冲区来自服务器并在它填充 5 个数据 block 时播放,然后再次获取下一个 5 个音频数据 block 并像往常一样填充它直到 1024 字节的数据(它写入音轨并调用播放方法)。这也有延迟,还有其他解决方案吗??
最佳答案
如果您真的想无缓冲地执行此操作,请确保您使用的任何播放工具都在尝试无缓冲地播放它。您将很难不延迟。电视、 radio 等都不是真正的“直播”——总会有某种延迟。使用 Internet 流,您会不断发送大量数据。即使除了传输时间之外,所有这些数据都必须按特定顺序保存,没有人希望在最终用户的计算机尝试播放时出现断断续续的播放。我有主要网络的 Flash 播放器在处理播放时在我的计算机上保留大量缓存文件,但他们的播放器不会跳过/等待缓冲/等。 (如果你加载了一些东西并注意到使用了几百 MB 的额外内存,在播放过程中可能更多,就是这样。)
您可以使用 VLC 以非常小的缓冲区(过去的标准是 30-60 秒,许多播放器仍然默认为此设置)逃脱。我已经能够将其缓冲区设置得非常低,但它的流/视频质量非常低。虽然我猜你遇到的大问题是你的播放设置了缓冲区,如果你的播放设置为 60 秒缓冲区,那么你在服务器端做什么并不重要......客户端会等到它有那么多 block ,然后开始播放。
关于android - 流式音频延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12576045/