0
我有一个类加载和播放FLV视频文件。我的问题是,我如何在主代码中获得flv的持续时间? .. 这是我的视频类:FLV持续时间从类
package src {
import flash.display.Sprite;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.Event;
import flash.events.MouseEvent;
public class vplayer extends Sprite{
public var vid:Video = new Video(1920,1080);
private var nc:NetConnection = new NetConnection();
public var ns:NetStream;
public var listener:Object = new Object();
public function vplayer():void{
addChild(vid);
nc.connect(null);
ns = new NetStream(nc);
vid.attachNetStream(ns);
listener.onMetaData = metaDataHandler;
ns.client = listener;
//customClient.onCuePoint = cuePointHandler;
}
public var time00:Number = 0;
public function playVideo00():void{
ns.play("image00/mov00.flv");
}
public function stopVideo00():void{
ns.close();
}
/*public function cuePointHandler(infoObject:Object):void {
trace("cuePoint");
}*/
public function metaDataHandler(infoObject:Object):void {
trace (" Time: " + infoObject["duration"]);
}
}
}
..和我的主类,我有:
Veed = new vplayer();
addChild(Veed);
Veed.playVideo00();
运行程序后,我有“时间:6.76”,在输出窗口,它起着FLV罚款,这是正确的,但我想
var myTD:int = Veed.getDuration();
在我的主类获得持续时间。这看起来很简单,但我无法完成!任何帮助?
我做到了这一点,我张贴这个......它显示0 .. !!! ..我不知道为什么.. – 2011-05-31 06:54:43
我认为,因为metaDataHandler是异步调用(不是立即)。这是因为需要首先检索元数据。尝试添加一个计时器,看看它是否有效?我会告诉你一个例子。 – Marty 2011-05-31 06:56:54
是的,它工作.. :)),但有没有更好的方式来实现FLV文件的这种重要功能?我很幸运,因为我已经有一个'addEventListener(Event.ENTER_FRAME,mainLoop);'在我的代码中..' – 2011-05-31 07:11:48