[英]FLV duration from Class
我有一個加載和播放 flv 視頻文件的 class。 我的問題是,如何在我的主代碼中獲取 flv 的持續時間? .. 這是我的視頻 class:
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"]);
}
}
}
..在我的主要 class 我有:
Veed = new vplayer();
addChild(Veed);
Veed.playVideo00();
運行程序后,我在 output windows 中有“時間:6.76”,它播放 flv 很好,這是正確的,但我想要類似的東西var myTD:int = Veed.getDuration();
在我的主要 class 中獲取持續時間。 這似乎很容易,但我還不能完成?! 有什么幫助嗎?
在頂部添加一個私有變量:
private var _duration:Number = 0;
像這樣更新:
public function metaDataHandler(infoObject:Object):void
{
_duration = infoObject["duration"];
}
現在創建一個持續時間的吸氣劑。
public function get duration():Number
{
return _duration;
}
現在你可以做一個:
trace(Veed.duration);
元數據將在請求后甚至幾毫秒內被檢索,這意味着如果您在獲取元數據后立即嘗試獲取持續時間,則它還沒有加載。 試試這個作為例子:
addEventListener(Event.ENTER_FRAME, _wait);
function _wait(e:Event):void
{
if(Veed.duration != 0)
{
trace(Veed.duration);
removeEventListener(Event.ENTER_FRAME, _wait);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.