详解如何用TVideoGrabber捕捉视频帧

操作方法

  • 01

    在TVideoGrabber中,当启用了视频捕捉器时,可以在预览、录制以及回放中捕捉视频帧。这个视频捕捉器可以插入到预览流、捕捉流或是两者之间。同时这个帧可以捕捉到内存位图、BMP文件、JPEG文件、剪贴板(CF_BITMAP)。 一、直接复制来自OnFrameBitmap事件的当前视频帧的BITMAP HANDLE。 对于每个经过视图的视频帧,会发生OnFrameBitmap事件,并允许直接捕捉位视图字节。 这个方法需要更少的CPU,然而由于这个OnFrameBitmap事件是直接从一个线程调用,这个位图handle以及位图字节只是在事件发生的时候有效,所以你必须复制它们到另一个缓冲区。 这种方法的问题就在于它可能会减缓成像并造成一个不平稳的预览,由于你添加到事件中的处理时间是包含在帧间隔中的,所以如果处理2帧的时间比帧率更长,这个帧就会被丢弃。 所以,建议通过调用StartPreview进行视图预览时,如果在这种情况下,如果在录制(这个可能会产生一个不平稳的录制)或是在回放期间(也可能会不平稳),丢弃帧也不是那么重要。 二、直接捕捉当前帧(或是之前帧) 调用GetLastFrameAsHBitmap (所有版本)或 GetLastFrameAsTBitmap (仅Delphi / C + + 生成器版本),根据你选择的尺寸以及是否覆盖来捕捉当前帧(或是之前帧)帧。这种方法并不会减慢成像,同时也不会出现丢帧的现象。 三、当前帧捕捉(或是在连拍模式下自动捕捉接下来的帧) 通过使用CaptureFrameTo(或启用突发模式)以及OnFrameCaptureCompleted的事件。这种方法也不会减慢成像,同时也不会出现丢帧的现象。 有或没有覆盖: 如果应用程序执行的图形或文字重叠,默认情况下,帧捕获就会覆盖。 启用FrameCaptureWithoutOverlay的属性,捕捉帧时就不会有覆盖。 1、异步与同步帧捕获 A、异步帧捕获 调用CaptureFrameTo一帧接一帧的捕捉,这个函数就会发送“捕捉秩序”并立即退出。然后这个捕捉帧就会通过OnFrameCaptureCompleted事件返回。 突发模式自动捕捉帧 突发模式允许自动捕获帧,模式可以通过启用BurstMode属性激活。 根据BurstType属性,可捕捉帧到TBitmap、 BMP文件或是JPEG 文件。 如果BurstCount = 0,可以无限制的捕捉帧,否则当帧的一个BurstCount数被捕捉到,帧捕捉就会停止。 如果BurstInterval > 0,帧的一个BurstInterval数就会在每个帧捕捉之间跳过。 通过启用BurstMode,就会激活突发模式。 突发模式无效的方法: ——禁用BurstMode ——如果BurstCount > 0,帧的一个BurstCount数就被捕捉到了。 当捕捉视频帧到BMP和JPEG文件: ——当调用CaptureFrameTo或CaptureFrameSyncTo时,如果没有文件名被调用,这个文件名就会自动生成(1) ——在突发模式中,文件名总是自动的生成(1) (1)根据StoragePath,AutoFileName和AutoFilePrefix。 当执行帧叠加时,捕捉未修改的帧 通过使用帧叠加功能,当通过视频帧绘制时,在默认的情况下,在帧已经重叠之后这个帧捕捉就会发生。 在叠加之前,启用FrameCaptureWithoutOverlay的属性来捕捉为修改的帧。 异步帧捕获的例子 在打开剪辑之前,需要在这里设置UseClock = false,达到最大的播放速度。 VideoGrabber.BurstMode =true VideoGrabber.BurstCount = 5 VideoGrabber.BurstInterval = 10 VideoGrabber.BurstType = fc_BmpFile VideoGrabber.PlayerFileName ="... the file name of my video clip..." VideoGrabber.UseClock =false VideoGrabber.OpenPlayer 捕获的帧的大小 默认值 ——默认情况下,捕获的帧的大小是当前视频帧的尺寸,也就是VideoWidth 和 VideoHeight 属性返回的尺寸。 尺寸缩放 ——通过指定一个FrameCaptureZoomSize的百分比实现捕捉帧的大小的缩放。默认的值是100 (100%)。 自定义大小 ——通过对FrameCaptureWidth和 FrameCaptureHeight指定值,可以拉伸帧的尺寸搭配到指定的宽度、 高度。对于这两个属性默认的值是-1,也就是禁用。 B、同步帧捕获 该函数在返回之前将会等待的帧捕捉完成。 调用CaptureFrameSyncTo,这个函数将会等待帧捕捉,并通过OnFrameCaptureCompleted返回帧,成功后通过这个函数返回true,酷似上述的异步CaptureFrameTo。 如何捕获矩形视频帧 在调用CaptureFrameTo或CaptureFrameSyncTo之前调用SetFrameCaptureBounds(左,上,右,下) ,来实现一个矩形捕捉。 如何伸展捕获视频帧 指定FrameCaptureWidth或FrameCaptureHeight的值,随意的调整视频帧。 如何缩放捕获的视频帧 指定FrameCaptureZoomSize的缩放比例,调整捕获帧的尺寸。 上下以及左右帧捕捉 调用SetFrameCaptureBounds以及制定底部替代顶部,或是左侧替代右侧就可以实现这种方式的捕捉。

(0)

相关推荐

  • 图文详解PPT中怎么插入视频

    一起来学习下吧。 方法一:插入对象播放视频 这种方法是将视频文件作为对 象插入到幻灯片中的,它可以随心所欲地选择实际需要播放的视频片段,然后再播放。具体操作步骤如下: 1. 打开需要插入视频文件的幻灯 ...

  • [视频演示]微软Win10最新触摸板手势功能详解

    Win10之家报道,昨日微软在西班牙巴塞罗那举行了TechED欧洲大会。Windows开发部门负责人Joe Belfiore展示了一系列Win10的新元素,其中包括一系列企业级安全性的demo展示,以 ...

  • 如何用剪映将视频帧设置为封面

    剪映是一款功能强大的视频编辑软件,有些用户不知道如何用剪映将视频帧设置为封面,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步打开手机中的[剪映]App,根据下图箭头所指,点击[开 ...

  • 如何用Pr给视频添加抽帧效果

    Pr是一款功能强大的视频编辑软件,有些新用户不知道如何用Pr给视频添加抽帧效果,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步打开电脑中的Pr软件,先导入需要编辑的视频,接着根据 ...

  • 录摄像头视频方法详解

    小小的摄像头可以帮助我们实现很多功能.可以进行QQ视频聊天.录制自己弹吉他.演奏古筝等乐器的视频.如何捕捉摄像头视频,保存为常用的视频格式?国内最流行的全能录像软件<超级捕快>,不仅支持捕 ...

  • ae怎么破解?Adobe After Effects CC 2015安装+破解图文教程详解

    ae cc 2015,全称为adobe after effects cc 2015,它是adobe官方推出的最新版本的视频剪辑及设计软件,也是目前工作和生活中用于高端视频特效合成的最佳软件.新版本功能 ...

  • 怎么看显示器参数?电脑显示器参数详解

    显示器参数怎么看?就为大家带来电脑显示器参数详解,感兴趣的朋友可以一起看看 操作方法 01 显示器参数详解: 1.尺寸 目前显示器的尺寸实际上就是其显示部分的对角线长度,单位是英寸(1英寸=2.54c ...

  • 安卓4.0和2.3的区别在哪里?图文详解

    安卓4.0推出已经有一段时间 但对于想升级4.0的朋友来说 4.0区别自己以前2.3的差异在哪里? 到底自己要不要升级4.0了? 下面就来看看4.0有什么区别 相比2.3,安卓4.0在系统上的9大改进 ...

  • DiskAid怎么安装使用?iOS神器DiskAid图文注册使用教程详解

    虽然苹果系统相对安卓来说比较封闭一些,但自从小编发现一款名为DiskAid的软件之后,感觉这是要让iOS散发第二春啊!轻松让iOS设备无需连接数据线的情况下在Wifi环境下进行管理,还能让我们闲置的内 ...