在网络电台

问题描述:

我使用下面的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事件永远不会触发!

有谁知道如何解决这个问题?

在这样的互联网广播流中不存在ID3。我假设你正在谈论SHOUTcast/IceCast流。

为此,您需要实现冰冷元数据协议。对于Flash,这通常是在外部完成的。

看到这个参考:http://www.smackfu.com/stuff/programming/shoutcast.html

基本上,你在你的GET请求的标头中发送icy-metadata: 1。然后,服务器将元数据直接插入到流的中间,在将数据发送到正在播放流的任何内容之前将其拉出。我不确定这在Flash中是否可行,但是可以在PHP(或任何服务器端语言)中执行此操作,并让Flash应用程序向您的PHP脚本发出请求以获取元数据。