Actionscript 3 onMetaData从未要求MP3流

Actionscript 3 onMetaData从未要求MP3流,actionscript-3,flash,Actionscript 3,Flash,我正在使用Flash中的NetStream播放MP3资源 要显示歌曲的进度,我需要歌曲的持续时间 但是NetStream对象永远不会调用onMetaData 这是密码 更新:MP3资源似乎没有为MP3资源提供必要的元数据。因此,这不是代码的问题,它与我在应用程序中使用的流媒体服务器有关。请确保您正在设置类的适当性 客户端属性:指定调用回调方法以处理的对象 流式传输或F4V/FLV文件数据。默认对象是这个 正在创建NetStream对象。如果将客户端属性设置为 在另一个对象上调用回调方法。这个 N

我正在使用Flash中的NetStream播放MP3资源

要显示歌曲的进度,我需要歌曲的持续时间

但是NetStream对象永远不会调用onMetaData

这是密码


更新:MP3资源似乎没有为MP3资源提供必要的元数据。因此,这不是代码的问题,它与我在应用程序中使用的流媒体服务器有关。

请确保您正在设置类的适当性

客户端属性:指定调用回调方法以处理的对象 流式传输或F4V/FLV文件数据。默认对象是这个 正在创建NetStream对象。如果将客户端属性设置为 在另一个对象上调用回调方法。这个 NetStream.client对象可以调用以下函数并接收 关联的数据对象:onCuePoint()、onImageData()、onMetaData(), onPlayStatus()、onSeekPoint()、onTextData()和onXMPData()

在底部的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);
    }
}

发布一些代码。。我们不是魔术师!:)要调用onMetadata,mp3需要有元数据,但情况并非总是如此。您可以在mp3完全加载后找到它的持续时间netStream.client=this到这个:
netStream.client={onMetaData:onMetaData}如我在回答中所列。@ManmohanBishnoi检查函数是否到达,并检查您的netstream源是否确实为函数提供了要接收的元数据。@Vesper您是对的,netstream源根本不提供元数据
m_metaData=null
ns.client = new ConnectionClient(this);
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);
    }
}