网络广播中的 AS3-ID3 事件

Posted

技术标签:

【中文标题】网络广播中的 AS3-ID3 事件【英文标题】:AS3-ID3 event in a web radio 【发布时间】:2011-08-20 16:27:02 【问题描述】:

我正在使用下面的 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事件从未触发!

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

ID3 不存在于像这样的网络广播流中。我假设您说的是 SHOUTcast/IceCast 流。

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

请参阅此参考:http://www.smackfu.com/stuff/programming/shoutcast.html

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

【讨论】:

以上是关于网络广播中的 AS3-ID3 事件的主要内容,如果未能解决你的问题,请参考以下文章

如何检测服务和广播接收器中的关键事件

如何在AngularJS中的两个控制器之间广播事件

Angularjs中的事件广播 —全面解析$broadcast,$emit,$on

Reactor事件模型在Redis中的应用

如何检测服务和广播接收器中的关键事件

覆盖 Twitter Bootstrap 3 的广播组“onclick”事件