Chinaunix首页 | 论坛 | 博客
  • 博客访问: 152098
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 749
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-19 11:38
文章分类
文章存档

2014年(38)

2013年(37)

我的朋友

分类: Windows平台

2013-12-23 16:22:53

在中,当启用了视频捕捉器时,可以在预览、录制以及回放中捕捉视频帧。这个视频捕捉器可以插入到预览流、捕捉流或是两者之间。同时这个帧可以捕捉到内存位图、BMP文件、JPEG文件、剪贴板(CF_BITMAP)。

一、直接复制来自OnFrameBitmap事件的当前视频帧的BITMAP HANDLE

对于每个经过视图的视频帧,会发生OnFrameBitmap事件,并允许直接捕捉位视图字节。

这个方法需要更少的CPU,然而由于这个OnFrameBitmap事件是直接从一个线程调用,这个位图handle以及位图字节只是在事件发生的时候有效,所以你必须复制它们到另一个缓冲区。

这种方法的问题就在于它可能会减缓成像并造成一个不平稳的预览,由于你添加到事件中的处理时间是包含在帧间隔中的,所以如果处理2帧的时间比帧率更长,这个帧就会被丢弃。

所以,建议通过调用StartPreview进行视图预览时,如果在这种情况下,如果在录制(这个可能会产生一个不平稳的录制)或是在回放期间(也可能会不平稳),丢弃帧也不是那么重要。

二、直接捕捉当前帧(或是之前帧)

调用GetLastFrameAsHBitmap (所有版本)或 GetLastFrameAsTBitmap (仅Delphi / C + + 生成器版本),根据你选择的尺寸以及是否覆盖来捕捉当前帧(或是之前帧)帧。这种方法并不会减慢成像,同时也不会出现丢帧的现象。

三、当前帧捕捉(或是在连拍模式下自动捕捉接下来的帧)

通过使用CaptureFrameTo(或启用突发模式)以及OnFrameCaptureCompleted的事件。这种方法也不会减慢成像,同时也不会出现丢帧的现象。

阅读(861) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~