使用串流聲音檔案

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 屬性。