在网络电台
问题描述:
我使用下面的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脚本发出请求以获取元数据。