我正在使用以下AS3代码构建在线广播播放器:
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事件永远不会被触发!
有谁知道如何解决这个问题?
答案 0 :(得分:1)
像这样的互联网广播流中不存在ID3。我假设您正在谈论SHOUTcast / IceCast流。
为此,您需要实现icy元数据协议。对于Flash,这通常只在外部完成。
请参阅此参考:http://www.smackfu.com/stuff/programming/shoutcast.html
基本上,您在GET请求的标头中发送icy-metadata: 1
。然后,服务器将元数据直接插入到流的中间,在将数据发送到播放流的任何内容之前将其拉出。我不确定这在Flash中是否可行,但它确实可以在PHP(或任何服务器端语言)中实现,并让您的Flash应用程序向您的PHP脚本请求获取该元数据。< / p>