我正在尝试创建一个带有循环,无缝视频背景的AS3应用。背景是从flv加载的。到目前为止,问题在于无缝位,因为我所遇到的关于AS3的所有视频循环策略似乎总是在视频结束时有短暂但明显的暂停,然后再回到开始并再次播放。
我决定处理这个问题的最好方法是播放视频并将视频帧缓冲为BitmapData对象到一个定义长度的队列中(不将视频添加到舞台上)。这样渲染视频就会真正涉及将每个BitmapDatas弹出到Bitmap中 对象以定时方式附加到我的舞台上,然后被绘制出来。
类似:
/*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的帧抓取方面吗?
由于
答案 0 :(得分:2)
我知道这是一个非常晚的答案,但我有一个无缝flv播放的解决方案,如下所述:http://blog.redannick.com/seamlessly-looping-video-files-in-as3-with-netstream-appendbytes/
答案 1 :(得分:1)
你和我最好的开源朋友:Doob先生,为了救援。
它旨在加载SWF并将帧转换为一系列BitmapData对象。它应该更新为使用向量等,因为自2008年以来它还没有更新,但它就是答案。
使用视频随时随地进行操作绝对比较棘手,但是如果您可以在时间轴上嵌入视频(获得正确的帧速率!)并导出SWF以便稍后加载,那么它是值得的并且有效好。