2011-12-07 67 views

回答

0

我一直在尋找爲以下幾點:

 private function capture(filename:String):void 
     { 
      var bitmapData:BitmapData = new BitmapData(videoDisplay.width, videoDisplay.height);    
      bitmapData.draw(videoDisplay,new Matrix()); 

      var bitmap : Bitmap = new Bitmap(bitmapData); 
      var jpg:JPEGEncoder = new JPEGEncoder(); 
      var ba:ByteArray = jpg.encode(bitmapData); 
      var newImage:File = File.desktopDirectory.resolvePath("foldername/"+filename+".jpg"); 

      fileStream = new FileStream(); 
      fileStream.open(newImage, FileMode.UPDATE); 
      fileStream.writeBytes(ba); 
      fileStream.close(); 


     } 

這是一個被稱爲當用戶點擊record..so我搶照片用作方法拇指!我希望以上內容也能幫助別人尋找類似的東西...... 非常感謝!

1

this answer

var frameGrab:BitmapData = new BitmapData(clip.width, clip.height, false, 0); 
frameGrab.draw(clip); // the .draw() method will copy the frame from your video. 
var frame:Bitmap = new Bitmap(frameGrab); 
0

另一種方式來做到這一點: 附加一個事件偵聽器的視頻流(即NetStream),像這樣:

var vConnection:NetConnection = new NetConnection(); 
vConnection.connect(null); 
var vStream:NetStream = new NetStream(vConnection); 
vStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatusChange); 

然後偵聽器看起來是這樣的:

protected function onNetStatusChange(event:NetStatusEvent):void 
{ 
    switch(event.info.code) 
    { 
     case "NetStream.Play.Start": 
     { 
      vStream.seek(1); // seek to key frame 
      break; 
     } 
     case "NetStream.Video.DimensionChange": 
     { 
      // after a dimension change we have a loaded frame 
      // do whatever you want here, but keep in mind 
      // that the video needs to be on the display list 
      // if you want to draw it 
      break; 
     } 
     default: break; 
    } 
}