处理声音流文件

如果在声音文件或视频文件的数据加载过程中播放该文件,则称为“流式传输”。通常,将对从远程服务器加载的声音文件进行流式传输,以使用户不必等待加载完所有声音数据再收听声音。

SoundMixer.bufferTime 属性表示应用程序在允许播放声音之前收集多长时间的声音数据(以毫秒为单位)。也就是说,如果将 bufferTime 属性设置为 5000,在开始播放声音之前,该应用程序将从声音文件中加载至少相当于 5000 毫秒的数据。 SoundMixer.bufferTime 默认值为 1000。

通过在加载声音时显式地指定新的 bufferTime 值,应用程序可以覆盖单个声音的全局 SoundMixer.bufferTime 值。若要覆盖默认缓冲时间,请先创建一个 SoundLoaderContext 类实例,设置其 bufferTime 属性,然后将其作为参数传递给 Sound.load() 方法。以下示例说明了这一过程:

var s = new air.Sound(); 
var url = "http://www.example.com/sounds/bigSound.mp3"; 
var req = new air.URLRequest(url); 
var context = new air.SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

在播放继续进行时,AIR 尝试将声音缓冲区保持在相同大小或更大。如果声音数据的加载速度比播放速度快,播放将连续进行而不会中断。但是,如果数据加载速率由于网络限制而减慢,播放头可能会到达声音缓冲区的结尾。如果发生这种情况,播放会暂停,但播放会在已加载更多声音数据后自动恢复。

若要查明播放暂停是否是由于 AIR 正在等待加载数据,请使用 Sound.isBuffering 属性。