我在Flash中使用NetStream流式傳輸MP3資源。onMetaData從來沒有呼籲MP3流
要顯示歌曲的進度,我需要歌曲的持續時間。
但是onMetaData永遠不會被調用NetStream對象。
下面的代碼http://pastebin.com/VZvdqTF5
更新:好像MP3資源不提供對MP3資源必需的元數據。所以這不是代碼的問題,它與我在應用程序中使用的流媒體服務器有關。
我在Flash中使用NetStream流式傳輸MP3資源。onMetaData從來沒有呼籲MP3流
要顯示歌曲的進度,我需要歌曲的持續時間。
但是onMetaData永遠不會被調用NetStream對象。
下面的代碼http://pastebin.com/VZvdqTF5
更新:好像MP3資源不提供對MP3資源必需的元數據。所以這不是代碼的問題,它與我在應用程序中使用的流媒體服務器有關。
請確定您正在設置NetStream類的client的正確性。
客戶端屬性:指定對其調用回調方法以處理 流或F4V/FLV文件數據的對象。默認對象是這個,創建的NetStream對象是 。如果將客戶端屬性設置爲 另一個對象,則會在該另一個對象上調用回調方法。 NetStream.client對象可以調用以下函數並接收關聯的數據對象onCuePoint(),onImageData(),onMetaData(), onPlayStatus(),onSeekPoint(),onTextData()和onXMPData()。
yourNetStreamInstance.client = {onMetaData:onMetaData};
function onMetaData(metaData:Object):void
{
trace(metaData.duration); // duration
}
我爲我的** NetStream **對象設置了** client **屬性,像這樣'myNetStream.client = this;' 另外我還定義了** onMetaData **函數。 –
所以,如果你添加你的代碼,可能會有所幫助。我也實現了這個功能,並且沒有問題。也許還有別的東西缺失。 – gabriel
這裏是我測試的代碼http://pastebin.com/VZvdqTF5 –
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);
}
}
發佈一些代碼..我們不是魔術師! :) –
forMetadata被稱爲MP3需要有元數據,並非總是如此。一旦完全加載,您可以找出mp3的持續時間。 – BotMaster