• 3. 使用DSPack打开摄像头


    现在我们来看看(DSPackDir)\Demos\D6-D7目录下的PlayVideoCap,这是一个打开本机的视频输入设备的例子。

    在这个例子中,又用到了一个新类:TFilter。

    在我们依葫芦画瓢之前,你要装个摄像头或虚拟摄像头。虚拟摄像头可以用VCDCut、Softcam或Vcam等软件,也可以使用9158(http://www.9158.com/)或MVBox(http://www.mvbox.cn/)的虚拟视频。

    先跟上次一样:

    1. 新建一个应用,在界面上先放4、5个按钮,这次多放一个Listbox,这个列表框中将列出系统中安装的视频输入设备。
    2. 在控件面板上选择DSPack那页,把前两个控件(TFilterGraph和TVideoWindow)在窗口上各放一个。

    下面该有所不同了

    3.在DSPack中选择TFilter控件,放到窗口上。
    4.选中FilterGraph1控件,在属性窗口中将Mode属性设为gmCapture。
    5. 关联
       选中VideoWindow1控件,将FilterGraph属性设置为FilterGraph1。
       选中Filter1控件,将FilterGraph属性设置为FilterGraph1。

    6. 在代码模式中,在Interface后的Uses中增加
    DSUtil, DirectShow9,
    在implementation前面的Var中增加
    SysDev: TSysDevEnum;


    7. 为Form1增加一个onCreate事件处理程序,读取系统中的视频输入设备。
    内容为:
    var
    i: integer;
    begin
    // 读取系统中的视频输入设备
    SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
    if SysDev.CountFilters > 0 then
        for i := 0 to SysDev.CountFilters - 1 do
        begin
          Listbox1.Items.Add(SysDev.Filters[i].FriendlyName)
        end;

    end;

    7. 同前。为Form1增加一个onCloseQuery事件处理程序。
    内容为:
        SysDev.Free;
        FilterGraph1.ClearGraph;
        FilterGraph1.Active := false ;

    8. 为Listbox1增加一个onClick事件处理程序
    内容为:
    FilterGraph1.ClearGraph;
    FilterGraph1.Active := false;
    //设filter为所选视频输入设备
    Filter1.BaseFilter.Moniker := SysDev.GetMoniker(Listbox1.ItemIndex);
    FilterGraph1.Active := true;
    // 打开所选的视频输入设备
    with FilterGraph1 as ICaptureGraphBuilder2 do
        RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, nil, VideoWindow1 as IbaseFilter);
    // 显示出来
    FilterGraph1.Play;


    运行一下试试,看是否能看到自己的摄像头的内容。


    几个按钮没用,等到下一个例子用吧。

  • 相关阅读:
    快速排序算法C++实现[评注版]
    浮躁的程序员
    扬长避短使用Windbg和Visual Studio高效调试调试你的代码
    程序员,代码,理想,老男孩
    Windows Server 2008 R2 如何启动kernel dbg进行双机内核调试『续bcdedit 用法详解』
    Windows Server 2008 R2 如何启动kernel dbg进行双机内核调试『配置详解』
    忙着活或忙着死[转]
    SQL2005使用游标的实例(SBO中计算到期应收账款)
    C#编写的Windows计算器源代码
    请登录真正的BBS
  • 原文地址:https://www.cnblogs.com/zhusd/p/1760134.html
Copyright © 2020-2023  润新知