0

我创建了一个 MediaStreamSource 来解码实时互联网音频流并将其传递给 BackgroundAudioPlayer。现在这在设备上运行良好。但是我现在想实现某种形式的缓冲控制。目前一切都在 WLAN 上运行良好 - 但是我担心在移动运营商网络上的实时情况下,流中会有很多切入。我想知道的是,是否有人对如何最好地实现缓冲有任何建议。

  • 背景音频播放器本身是否会在开始播放之前建立某种缓冲区,如果是这样,是否可以在必要时增加其大小?

  • 有什么我可以在采样时设置以帮助缓冲,还是我只需要实现一种存储缓冲区,因为我从网络中检索流并在采样之前在此建立大量储备。

其他人对这个问题采取了什么方法?谢谢,布赖恩

4

2 回答 2

1

我见过的一种方法是让两个进程管理流。第一个获取流并将其写入隔离存储中的一系列顺序编号的文件。第二个读取文件并播放它们。
显然这是一个非常简化的描述,但希望你能明白。

于 2012-02-02T01:50:51.537 回答
0

我不知道使用 MediaStreamSource 可能会如何影响这一点,但根据使用简单的后台音频播放器代理直接从远程 MP3 文件或 MP3 直播广播流流式传输的经验:

  • 播放器会在开始播放您的曲目之前建立从服务器接收到的数据缓冲区。
  • 您无法控制此缓冲区的大小或填充该缓冲区所需的时间(我已经看到在某些情况下它需要超过一分钟的缓冲时间)。
  • 一旦播放开始,如果您失去连接或带宽太低以至于您的缓冲区在流开始后被清空,那么播放器不会尝试重新缓冲音频,因此您可能会完全丢失音频,或者它可以切入或切出。
  • 你也无法控制。

实施 Matt's answer 中的建议通过允许您控制缓冲并巧妙地分离下载和播放来解决这个问题。

于 2012-02-02T20:00:21.860 回答