2011-05-07 77 views
0

我使用下面的AS3代碼建立一個在線電臺播放器AS3-ID3事件:在網絡電臺

private var soundChannel:SoundChannel; 
private var stationUrl:String = "h t t p ://205.188.215.230:8002/"; 

sound = new Sound(); 
sound.addEventListener(Event.ID3, onID3Change); 
sound.load(new URLRequest(stationUrl)); 
soundChannel = sound.play(); 

private function onID3Change(e:Event):void 
{ 
     .... 
} 

聲音成功播放,但問題是,ID3事件永遠不會觸發!

有誰知道如何解決這個問題?

回答

1

在這樣的互聯網廣播流中不存在ID3。我假設你正在談論SHOUTcast/IceCast流。

爲此,您需要實現冰冷元數據協議。對於Flash,這通常是在外部完成的。

看到這個參考:http://www.smackfu.com/stuff/programming/shoutcast.html

基本上,你在你的GET請求的標頭中發送icy-metadata: 1。然後,服務器將元數據直接插入到流的中間,在將數據發送到正在播放流的任何內容之前將其拉出。我不確定這在Flash中是否可行,但是可以在PHP(或任何服務器端語言)中執行此操作,並讓Flash應用程序向您的PHP腳本發出請求以獲取元數據。