2011-09-16 139 views
2

我試圖創建一個AS3應用程序與循環,無縫視頻背景。背景從flv加載。到目前爲止,問題在於無縫位,因爲所有關於AS3的視頻循環策略似乎總是在視頻結尾處有短暫而明顯的暫停,然後再回到開始並再次播放。ActionScript3中的循環視頻緩衝區

我決定處理這個問題的最佳方式是播放視頻並將視頻幀作爲BitmapData對象緩衝到定義長度的隊列中(無需將視頻添加到舞臺中)。通過這種方式渲染視頻將涉及將每個BitmapDatas彈出到一個以定時方式附加到我的舞臺上的位圖對象中,然後繪製該對象。

有點像:

/*VideoBufferer loops the input video and queues frames and then updates*/ 
var vidbuffer:VideoBufferer = new MyVideo("video.flv",outputImage) 

var outputImage:Bitmap = new Bitmap(); 
stage.addChild(outputImage); 

//forgive syntax, this is pseudoCode 
timed process that happens X times per second{ 
    outputImage.bitmapData = vidbuffer.popBitmapData(); //returns bitmap data from the queue 
} 

我不關心的聲音。

但是,我似乎不知道如何實現這個所需的VideoBufferer類,因爲我不知道如何播放視頻而無需將其添加到舞臺並從中抓取幀。有誰知道任何這樣的課程已經這樣做,或者有人可以告訴我如何實現VideoBufferer的抓取方?

謝謝

回答

1

你和我的最好的朋友開源:Doob先生,救援。

http://code.google.com/p/mrdoob/source/browse/trunk/libs/net/hires/utils/display/BitmapDataSequence.as

它被設計用來加載SWF和幀轉換爲BitmapData對象的序列。它應該更新爲使用矢量等,因爲它自2008年以來一直未更新,但它是答案。

使用視頻實現它絕對是比較棘手的,但是如果您有時間線上嵌入視頻(獲得這些幀率正確!)和導出SWF加載以後的奢侈,這是值得的,效果很好。