以编程方式从Flash中的视频中提取帧
问题描述:
我需要编写一个小型Flash应用程序,它需要从正在播放的视频中提取视频帧。它不需要保存到用户的硬盘。我只需要获取图像数据并将其显示在Flash电影中。提取的框架将由用户选择,这就是为什么我想纯粹在客户端完成此操作(尽管我知道我可以从服务器端完成)。以编程方式从Flash中的视频中提取帧
我试过寻找解决方案,但没有得到任何有用的结果。作为一名Flash新手,我还没有看到任何代码,因为我不知道从哪里开始。
所以闪存大师,有没有办法做到这一点?
答
如果您使用BitmapData's draw() method在Flash中对DisplayObject进行“屏幕抓取”。
如果你有什么某处显示FLV有点向右,或向下,你可以试试:
var cloneData:BitmapData = new BitmapData(video.width,video.height,false,0x000000);
cloneData.draw(video);
//test
addChild(new Bitmap(cloneData));
古德勒克!
答
在阅读乔治的答案后,这就是我想出的概念证明。在这里发布,所以它不污染原来的问题。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="video.load()">
<mx:VideoDisplay id="video" x="0" y="0" source="/content/content.flv" />
<mx:Button x="10" y="10" label="Grab" click="grabClick()"/>
<mx:Button x="71" y="10" label="Play" click="video.play()"/>
<mx:Button x="130" y="10" label="Pause" click="video.pause()"/>
<mx:Script>
<![CDATA[
import mx.controls.*;
import flash.display.BitmapData;
private function grabClick():void {
var bitdata:BitmapData = new BitmapData(video.width, video.height, false, 0x0);
bitdata.draw(video);
var grabResult:Image = new Image();
grabResult.x = 0;
grabResult.y = video.height;
grabResult.source = new Bitmap(bitdata);
addChild(grabResult);
}
]]>
</mx:Script>
</mx:Application>
完美,非常感谢 - 已张贴了我的概念证明全为他人,但是这是导致分辨率的答案:) – 2009-12-29 02:17:55