我正在使用Flash中的NetStream来传输MP3资源。
要显示歌曲的进度,我需要歌曲的持续时间。
但永远不会为NetStream对象调用 onMetaData 。
这是代码http://pastebin.com/VZvdqTF5
更新:似乎MP3资源没有为MP3资源提供必要的MetaData。所以这不是代码的问题,它与我在应用程序中使用的流媒体服务器有关。
答案 0 :(得分:0)
客户端属性:指定调用回调方法来处理的对象 流式传输或F4V / FLV文件数据。默认对象是这个, 正在创建NetStream对象。如果将client属性设置为 另一个对象,在另一个对象上调用回调方法。该 NetStream.client对象可以调用以下函数并接收 关联的数据对象:onCuePoint(),onImageData(),onMetaData(), onPlayStatus(),onSeekPoint(),onTextData()和onXMPData()。
yourNetStreamInstance.client = {onMetaData:onMetaData};
function onMetaData(metaData:Object):void
{
trace(metaData.duration); // duration
}
答案 1 :(得分:0)
ns.client = new ConnectionClient(this);
在底部的NetStream类中定义该类
class ConnectionClient {
private var _owner:YourNSStreamObjectClass;
public function ConnectionClient(owner:YourNSStreamObjectClass) : void {
_owner = owner;
}
public function onMetaData(info : Object) : void {
//_owner.setMetaData(info);
}
public function onCuePoint(info : Object) : void {
//trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type);
}
public function onXMPData(info : Object) : void {
//trace("xmp data = " + info);
}
public function onPlayStatus(info : Object) : void {
//trace("onPlayStatus data = " + info);
}
}