XGroupOne
 
Audio & Video Capture
一个为开发音/视频监控软件量身定做的ActiveX控件!
 
 
  • 基于DirectShow过滤器组件技术设计!

  • 完整的ActiveX封装,可用于多种软件开发平台!

  • 全面支持1394、USB热拔插数字视频捕捉设备!

  • 允许在视频的任何位置插入定制的字幕信息!

  • 视频翻转和镜像,即使摄像头倒着放也能轻松应付!

  • 工程化的软件开发和测试,提供近乎商业级的稳定性!

 
AVCapture 1.0 (Bate1)
应用说明
 
    AVCapture是一个基于Microsoft的DirectShow技术开发的音视频讯号捕捉ActiveX 控件,它可以帮助那些准备开发音/视频捕捉相关软件的程序员获取和处理音/视频数据。

    AVCapture支持对来自各种模拟或/数字捕捉设备的音/视频讯息进行预览、压缩及存储,程序员可以根据需要在视频讯息中任意插入定制字幕,还可以翻转和镜像视频讯息。例如:你可以将通过模拟视频捕捉卡获得的视频进行翻转,并在视频的左上角插入系统时间作为字幕,然后在实时显示的同时将经过“改造”的视频压缩成MP4格式的AVI文件保存起来。当然,如果你是用一台P133来干这事儿,为了保证视频的流畅你可能就需要将视频捕捉分辨率降低一点,例如160x120或更低。

    你不需要编程!如果你需要的只是缩短开发时间而不需要字幕,不需要将视频翻转或镜像,也不需要复杂的交互,那么你只要在你的应用程序或页面中放一个AVCapture,你的软件就可以支持音/视频捕捉了!因为在缺省情况下,AVCapture 会提供一个弹出式菜单,这个菜单实现了大部分常规操作,鼠标右键单击上面的控件马上就可以看到这个菜单。当然,你也可以通过设置EnableDefaultMenu 属性来禁止这个菜单,以便实现更具个性的交互。

    你需要编程?那么你也许需要下面了解这些内容!

    ★ 关于捕捉设备

    ★ 关于音/视频流压缩和存储

    ★ 关于照相和抓图

    ★ 关于字幕

    ★ 关于视频翻转和镜像

    ★ 关于事件

    你有DirectX 8.x吗?由于AVCapture用到了DirectX 8.0提供的一些新组件来实现抓图、照像和字幕功能,因此如果你需要这些功能则应该在你的系统中安装8.0或更高版本的DirectX。

    由于时间关系,Bate1版的AVCapture 1.0仅在Windows 98/2K/XP平台上进行了测试,但是对Windows NT/Me平台稍后也将进行测试。AVCapture将不考虑Windows 95或更低版本的操作系统!

    XGroupOne非常感谢您下载及试用AVCapture 1.0(Bate1),如果您在使用过程中发现任何问题或对软件有任何建议,欢迎来信与XGroupOne技术组员Rechard讨论。再次感谢您对AVCapture 1.0(Bate1)的支持!

 

 

关于捕捉设备

    这里的捕捉设备专指用于计算机输入音频或视频信号的外围设备。声卡就是最常见的音频捕捉设备,常见的视频捕捉设备则有模拟视频捕捉卡、数字摄像相机和数字摄像头等等。

    AVCapture利用一个由系统提供的叫做“system device enumerator”的COM对象枚举系统中所有被支持的音/视频捕捉设备,AVCapture的两个只读属性ACDCounts和VCDCounts分别表示枚举到的音频捕捉设备和视频捕捉设备的数量。

    AVCapture内部将枚举到的所有音频和视频捕捉设备分为两个序列,属性CurACD和CurVCD通过从0开始的序号来决定当前使用的音频和视频捕捉设备。方法GetACDName和GetVCDName得到有序号指定的音/视频捕捉设备的名称。用惯VC的朋友会发现AVCapture 对捕捉设备的管理及后面要提到的对音/视频压缩器的管理与在VC中使用组合框非常相似。CurACD和CurVCD都是持久化属性,在开发环境中通过属性设置栏即可完成选择。

关于音/视频流压缩和存储

    AVCapture可以将音/视频流捕捉到的捕捉到一个指定的文件,并且在捕捉过程中对音/视频数据进行实时压缩。与对捕捉设备的管理类似,AVCapture 枚举系统中所有的音频和视频压缩引擎组件分成两个序列,对应的也有两个只读属性ACompCounts和VCompCounts分别表示系统中音频和视频压引擎缩组件的数量,CurAComp和CurVComp两个属性则用来选压缩引擎组件,当然还有GetACompName和GetVCompName两个用来获取压缩引擎组件名称的方法。

    具体可以对音/视频数据进行什么格式的压缩,取决与系统中已经安装的压缩引擎组件。

关于照相和抓图

    照相和抓图都可以在捕捉到的视频流中抓取一帧视频,不同的是照相操作将抓到的视频保存到一个标准的DIB文件(*.DIB;*.BMP)中,而抓图操作则将抓到的视频以DIB位图的格式放到系统剪贴板中。通过照相和抓图获取的DIB文件或DIB位图的分辨率和色彩深度由抓取时的视频格式决定。

    照相和抓图使用同一个方法调用TakePictureToFile,如果调用TakePictureToFile时指定一个合法的文件名作为参数,抓取的视频将被保存到指定的文件中。而如果指定一个空字符串作为参数,则抓取的视频被放到系统剪贴板中。

VC示例代码:

    m_ctrlAVCapture.TakePictureToFile(_T("C:\\Video.bmp")); //照相
    m_ctrlAVCapture.TakePictureToFile(_T(""));
//抓图

VB示例代码:

    AVCapture1.TakePictureToFile "C:\Video.bmp" '照相
    AVCapture1.TakePictureToFile ""
'抓图

关于字幕

    AVCapture支持在视频的任意位置插入定制的字幕信息。可以通过只读属性TitleGenerator 来设置字幕特性包括:位置、字体、文本颜色、边框颜色、风格和文本内容。属性TitleGenerator 是一个ITitleGenerator接口,该接口由一个视频样例加工引擎组件对象实现,视频样例加工引擎在关于视频翻转和镜像一节中另述。

VC示例代码:

    CTitleGenerator oTG; //MFC自动封装的字幕对象
    COleFont oFont;
//MFC自动封装的字体对象

    oTG = m_ctrlAVCapture.GetTitleGenerator();
//获取字幕属性

    oTG.SetText("Test OK!");
//设置字幕文本

    oFont = oTG.GetFont();
//获取字幕的字体属性

    oFont.SetName("Arial");
//字体名称
    CY cyFontSize;
    cyFontSize.Hi = 0;
    cyFontSize.Lo = 480000l;
    oFont.SetSize(cyFontSize);
//字体尺寸
    oFont.SetItalic(TRUE);
//倾斜
    oFont.SetUnderline(TRUE);
//下划线

VB示例代码:

    AVCapture1.TitleGenerator.Text = "Test OK!" '设置字幕文本
    AVCapture1.TitleGenerator.Font.Name = "Arial"
'字体名称
    AVCapture1.TitleGenerator.Font.Size = 48
'字体尺寸
    AVCapture1.TitleGenerator.Font.Italic = True
'倾斜
    AVCapture1.TitleGenerator.Font.Underline = True
'下划线

关于视频翻转和镜像

    AVCapture支持视频垂直翻转和水平镜像。在摄像设备必须倒置或反射摄像的场合,AVCapture提供的这两项功能将非常有用。

    AVCapture 通过安装一个视频样例加工引擎来实现视频垂直翻转、水平镜像以及前面提到的字幕操作。在缺省情况下,AVCapture 会自动安装一个预制的视频样例加工引擎,利用属性VideoSampleMachining可以访问这个视频样例加工引擎,也可以为AVCapture 安装另一个视频样例加工引擎。如果用户希望自己实现一个定制的视频样例加工引擎,那么这个引擎组件必须实现三个COM接口:ISampleGrabberCB、IVideoSampleMachining以及前面提到过的ITitleGenerator。

VC示例代码:

    CVideoSampleMachining oVSM; //MFC自动封装的视频样例加工引擎对象

    oVSM = m_ctrlAVCapture.GetVideoSampleMachining();
//获取视频样例加工引擎

    oVSM.SetInversion(TRUE);
//允许视频垂直翻转
    oVSM.SetMirrorImage(TRUE);
//允许视频水平镜像

VB示例代码:

    AVCapture1.VideoSampleMachining.Inversion = True '允许视频垂直翻转
    AVCapture1.VideoSampleMachining.MirrorImage = True
'允许视频水平镜像

关于事件

    当AVCapture因为错误而终止运行时,AVCapture会触发ErrorAbort事件,最常见的错误就是因为磁盘空间不足而提前终止将视频和音频流捕捉到磁盘文件。ErrorAbort事件定义了一个long型的事件参数,该参数是一个标准的系统错误代码,它将指明是因何种错误而终止运行。

    当一个正在被AVCapture 选用的捕捉设备被删除时,AVCapture会触发SelectedDeviceRemoved事件,如果用户使用的是一个1394或USB接口的捕捉设备,这种情况将会经常发生。

    SelectedDeviceRemovedAvcapture事件定义了以下三个事件参数:

    strName - 设备被删除前的名称字符串。
    lIndex - 设备被删除前的序号。
    eType - 被删除设备的类型,可能的类型包括:
      UnknownDevice(0) 未知设备
      AudioCaptureDevice(1) 音频捕捉设备
      VideoCaptureDevice(2) 视频捕捉设备