循环视频缓冲在ActionScript3



我试图创建一个AS3应用程序与循环,无缝视频背景。背景是从flv加载的。到目前为止,问题在于无缝位,因为我所遇到的所有关于AS3的视频循环策略似乎总是在视频结束时出现短暂但明显的停顿,然后回到开始并再次播放。

我决定处理这个问题的最好方法是播放视频并将视频帧缓冲为BitmapData对象到定义长度的队列中(不将视频添加到舞台)。这样渲染视频就会涉及到将每个bitmapdata弹出到位图中对象以定时的方式附着在我的舞台上,然后被绘制。

有点像:

/*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
}

我不在乎声音

然而,我似乎不知道如何实现这个所需的videobuffer类,因为我不知道如何播放视频,而不将其添加到舞台上并从中抓取帧。有人知道有这样的类已经这样做了吗或者有人能给我一些指导如何实现videobuffer的帧抓取方面?

谢谢

我知道这是一个很晚的答案,但我有一个无缝flv播放的解决方案,描述在这里:http://blog.redannick.com/seamlessly-looping-video-files-in-as3-with-netstream-appendbytes/

示例代码的要点在这里:https://gist.github.com/redannick/7772246

你和我最好的开源朋友:Doob先生,来拯救你。

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

它被设计用来加载SWF并将帧转换为BitmapData对象序列。它应该更新为使用矢量等,因为它自2008年以来没有更新,但它是答案。

用视频在飞行中做到这一点绝对是棘手的,但如果你有在时间轴上嵌入视频的奢侈(让那些帧率正确!)并导出一个SWF稍后加载,这是值得的,而且工作得很好。

最新更新