处理声音流文件

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

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

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

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

import flash.media.Sound; 
import flash.media.SoundLoaderContext; 
import flash.net.URLRequest; 
 
var s:Sound = new Sound(); 
var req:URLRequest = new URLRequest("bigSound.mp3"); 
var context:SoundLoaderContext = new SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

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

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