提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郝浩|2013-09-06 14:32:15.000|阅读 830 次
概述:在TVideoGrabber中,当启用了视频捕捉器时,可以在预览、录制以及回放中捕捉视频帧。这个视频捕捉器可以插入到预览流、捕捉流或是两者之间。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
在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以及制定底部替代顶部,或是左侧替代右侧就可以实现这种方式的捕捉。
>>>TVideoGrabber 下载
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都控件本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
TVideoGrabber是一个功能全面、易于使用的视频捕捉工具和多媒体播放器,它可以为您的视频应用程序开发节省大量的时间、金钱和人力。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢