13

我正在尝试通过服务器流式传输音频。我已经设置了所有内容,并且可以正常录制和播放静态音频,但是当我尝试流式传输音频时,播放端会出现延迟。

我做了谷歌搜索,但找不到正确的方法。我正在使用 AudioRecord 和 Audiotrack Android 媒体 API 来发送和接收音频数据。谁能告诉我如何处理这种延迟?

我已经在GOOGLE GROUP 上添加了我的代码以获得清晰的图片

我曾尝试过这种方式,将 5 块音频数据保存在一个缓冲区中,该缓冲区来自服务器并在填充 5 块数据时播放,然后再次获取下 5 块音频数据并像这样填充它直到 1024 字节数据(它写入音轨并调用播放方法)。这也有延迟,还有其他解决方案吗?

4

1 回答 1

2

如果您真的想无缓冲地执行此操作,请确保您使用的任何播放工具都试图在没有缓冲的情况下播放它。您将很难没有延迟。电视、广播等上没有什么是真正“直播”的——总会有某种延迟。使用互联网流,您会不断地发送大量数据。即使除了传输时间之外,所有这些数据都必须按特定顺序保存,并且在最终用户的计算机尝试播放时,没有人希望播放断断续续。我有用于主要网络的闪存播放器在处理播放时在我的计算机上保留大量缓存文件,但它们的播放器不会跳过/等待缓冲/等。(如果您加载某些内容并注意到使用了 100 MB 的额外内存,在播放期间甚至可能更多,那就是这样。)

使用 VLC,您可能能够摆脱非常小的缓冲区(过去的标准是 30-60 秒,许多玩家仍然默认使用此)。我已经能够将其缓冲区设置得非常低,但它在质量非常低的流/视频上。虽然我猜你遇到的最大问题是你的播放设置缓冲区,如果你的播放设置为 60 秒缓冲区,那么你在服务器端做什么都没关系......客户端会等到它有那么多块,然后开始播放。

于 2012-10-18T17:03:27.553 回答