基于DirectShow视频及图片捕获软件的开发

基于DirectShow视频及图片捕获软件的开发
基于DirectShow视频及图片捕获软件的开发

我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。

笔者使用visual studio 2005 来开发了基于DirectShow的视频捕获软件,并用开发的软件对映美精相机进行了测试。本软件不但可以实现对相机的视频捕获,而且还可以抓取图像帧。软件运行时自动搜索所连接的相机,预览后可以对相机参数进行设置。下面是软件的主界面。

预览视频后可以对视频格式和图像参数进行设置。开始预览时,捕获的视频是黑白的,我们将颜色空间设置为UYVY即可捕获彩色视频。

下面是捕获的一帧图像,图像质量虽然没有映美精自带的软件效果好,但已经实现了所需各项基本功能,接下来的工作将会进一步提高软件性能。

另外我们还可以捕获视频,点击“捕获视频”按钮,输入要保持的文件名,注意要以.avi后缀结尾,点确定就开始捕获视频。

从我们开发的软件可以看到,映美精的相机能够很好的支持DirectShow的驱动,我们的软件对映美精相机的识别是如此的容易。接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。我们将逐步开放我们的源代码,以便更多的同行一起来探讨相机的图像采集技术。

下面是详细的软件开发过程。

一、安装DirectShow和visual studio 2005

首先我们安装DirectShow SDK,它有许多版本,作者使用的是2003年发布的,安装在D盘的DXSDK下。软件下载地址为。

然后安装好visual studio 2005。安装完以后我们将进行开发环境的配置。

二、开发环境配置

开发环境的配置主要有两个工作要做:一是在使用Directshow SDK开发自己的程序时需要的DirectShow的有关静态库的配置,二是visual C++开发环境的配置。

1、生成DirectShow SDK开发库

使用DirectShow SDK开发用户自己的程序需要几个静态链接库:、、和。中间两个lib需要用户自己编译生成,而其他两个微软已经提供。下表列出了

基于VC++2005开发软件使用DirectShow SDK,首先需要用户编译DirectShow自带的源代码工程baseclasses,以生成DirectShow SDK的不同版本的库。

同时由于DirectShow SDK是早期的VC开发软件,所以使用VC++2005编译DirectShow SDK会出现很多编译问题。下面列出了详细的编译过程和问题分析、解决方法。

编译工程baseclasses工程

启动VS2005,选择“文件”→“打开”→“项目/解决方案”命令,在弹出的对话框中打开“BaseClasses”项目。

打开“”项目。如果VS2005有提问,则默认同意或确定。现在就开始编译该项目。按“F7”快捷键可以编译生成项目。初次编译VS2005会报很多错误或者警告,有的需要我们手工修改程序,或者修改VS2005环境配置或编译选项;有的是一类问题,解决方法也有很多种。具体解决方法请参考路锦正的《Visual C++音频/视频处理技术及工程实践》第225页-229页。

Visual C++开发环境配置

有了DirectShow SDK库,用户就可以使用这些库来开发自己的程序了。为了能让VC++自动搜寻到SDK库和头文件,还需要对VC++的开发环境进行配置。添加库或路径的时候,根据你的要求添加Debug、Release、Debug_Unicode、Release_Unicode版本的库所在路径。下面假定添加非Unicode版本的库或路径。

首先确定VC2005是否已经包含了库和头文件所在的路径,因为在安装VC2005时,它会自动添加该目录。如果没有,则需要用户手工添加。

1.更改添加的include内容:

D:\DXSDK\Include

D:\DXSDK\Samples\C++\DirectShow\BaseClasses

D:\DXSDK\Samples\C++\Common\Include

添加过程如下。选择“工具”→“选项”命令,在“项目和解决方案下”选择“VC++目录”,在下拉框中选择“包含文件”选项,将上面的三个Include 内容添加进去。

2.更改添加lib路径

要添加的lib内容:

D:\DXSDK\Lib

D:\DXSDK\ Samples\C++\DirectShow\BaseClasses\Debug

D:\DXSDK\ Samples\C++\DirectShow\BaseClasses\Debug_Unicode

D:\DXSDK\ Samples\C++\DirectShow\BaseClasses\Release

D:\DXSDK\ Samples\C++\DirectShow\BaseClasses\Release_Unicode

添加过程和Include内容相似,只是在下拉框中选择“库文件”选项。

3.添加链接库支持

上面的设置是在VC2005的开发环境的目录(Directories)中,添加用户在开发中可能用到的库或头文件“路径”,需要明确的事文件夹,而不是具体的文件。所以,要使用相关的库支持,还要用户明确地把要使用的库包含、添加到开发环境中。

基于DirectShow SDK开发流媒体应用程序,一般需要链接和,前者定义了DirectShow标准的类标识符CLSID和接口标识IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用这个函数,也可以不链接这个库)。

在编译生成DirectShow的BaseClasses库、时,由于该工程是生成库而不是应用程序,所以在编译该项目时VC++2005没有“链接器”选项。但是在开发其他应用可执行程序时,需要添加DirectShow SDK库的支持。添加路径:项目→属性→配置属性→链接器→输入→附加依赖项,输入,库名之间用空格分开。另外,在程序中使用DirectShow SDK类或接口的代码程序中,还要添加

#include<>。

在添加链接库时,除了以上配置VC的开发环境外,也可以在源程序文件开头部分,直接语句编程引入#pragma comment(lib,””)。

如果程序中没有使用,而是包含了,则库文件需要链接、,在源程序文件开头添加:

#pragma comment(lib,””)

#pragma comment(lib,””)

#include <>

不过,编译器会报出以下的错误。

error C2146:语法错误为缺少“;”(在标识符“m_pString”的前面)。

问题定位在(329)中。经分析得知,由于某种原因,编译器认为PTCHAR没有定义,那用户可以在类外定义:typedef WCHAR *PTCHAR; 再编译项目。

三、开发过程

DirectShow SDK的视频采集经典技术是使用ICaptureGraphBuilder2标准接口,利用其方法RenderStream自动建立、连接滤波器链表。RenderStream方法在预览、捕获视频时引脚的类型分为PIN_CATEGORY_PREVIEW和PIN_CATEGORY_CAPTURE,媒体类型均为MEDIATYPE_Video。此实例要完成的目的有两个:一是实时预览采集的视频数据;二是在预览图像的同时,实时地把捕获数据保存到文件中。首先我们使用GraphEdit模拟实现该过程。

1、GraphEdit模拟实现

步骤一、添加"Video Capture Sources"视频捕获设备,如图1所示。

图1、添加视频捕获设备

步骤二、视频捕获滤波器只有一个Pin,而我们要求在预览数据的同时还能够保存数据,即需要一个组件把捕获的流分成两个。DirectShow SDK为此提供了Smart Tee滤波器,把捕捉的视频流分成两个流供使用。在GraphEdit中单击"DirectShow Filters"按钮,插入"Smart Tee"滤波器,如图2所示

图2添加Smart Tee滤波器

步骤三、采集捕捉的视频数据保存到文件,以AVI格式写文件。插入"AVI Mux"滤波器,如图3所示。

图3添加AVI Mux滤波器

步骤四、插入"File writer"滤波器,保存文件命名为""。如图4所示

图4插入File writer

步骤五、插入"SampleGrabber"和"Video Renderer"滤波器,如图5所示

图5插入SampleGrabber和Video Renderer滤波器

步骤六、最后把所有的滤波器用鼠标连接起来,完成构建滤波器链表,如图6所示

图6视频预览、保存滤波器链表

步骤七、运行滤波器链表,单击"Graph"→"Play"按钮执行视频数据的预览、保存。

1、视频捕获类CCaptureClass的实现

详细讲述CCaptureClass类的成员变量和其他成员方法的实现,剖析其完成视频采集、保存的技术过程。

1)定义CCaptureClass类

退出本程序时,由于视频捕获类CCaptureClass的析构函数已经包含了释放资源、指针的工作,所以退出应用程序时不用释放任何资源,只是关闭应用程序。

其他工作

在对话框的初始化OnInitDialog中枚举本系统的视频采集设备,添加到列表框并默认显示第一

至此我们详细介绍了软件的开发过程。在开发过程中我们遇到了许多问题,如对于图片捕获有很多种方法,不同的方法将在很大程度上影响软件的稳定性和捕获图片的效果。当然程序还存在许多有待改进的地方,我们将进一步完善它。关于本软件及其源代码,我们将于近期在中国视觉网上公布并提供下载,希望大家及时关注我们的网站。

视频管理系统需求及解决方案1.0版1.doc

视频管理系统需求及解决方案1.0版1 公司内部视频部门对于视频管理软件的需求 对于视频项目组来说,常常需要一些适合的视频片段、图片和音频(统称素材),来制作一些需要的原创节目、宣传片等视频片子。但是素材的查找、利用是一个很棘手的问题,所以需要一套素材管理系统。 该系统所需功能: 1、采集功能: 自动采集音视频资源 2、上载模块: 把本地收集、采集的原始音视频文件,以及其附件(说明文档、展示图片)添加到上载页面,提交上载完成。 3、素材编目: 对原始文件进行分类、编目,正题名、关键字、时间、作者等元数据,最后确定分类标识,提交完成文件编目。对视频资源、音频资源、以及图片资源划分管理;方便维护不同属性节目资源通过设置片段素材的入点和出点,完成片段素材的截取。通过在视频素材中,任意抓取关键帧来截取图片素材,形成单张图片,完成图片素材的获取。 4、修改功能:

可以对上载后的素材进行信息的修改和删除功能。 5、检索下载: 按照分类、关键字、编目属性等检索素材,对要找到的素材节目整篇下载,也可以通过在线预览,找到自己想要的素材视频片段,确定片段的入点和出点,提交信息,就可以把自己所需的片段下载到本地。如果想要获取某个内容的系列图像,也可以直接抽取关键帧,下载到本地应用。(注:检索方式需要提供模糊检索、全文检索、关键字检索、分类检索、等多种检索方式。) 6、字典表: 系统满足分类标引和编目著录属性的自定义功能。系统应用过程中,只要对字典表进行自定义配置,就可以满足个性需求。 7、用户管理: 管理员用户2个,负责具体的素材整理、编目、修改、上传等工作。对素材进行统一的管理。视频组其他人员及其他部门人员,可以进入素材库浏览所有素材,并下载使用。但不具有管理员权限。 传奇媒体资产管理系统功能说明 传奇媒体资产管理系统(ParaMAM 帕玛)是面向广电、政府机关、院校、图书馆、医院等单位的多媒体数字资料管理,是针对视音频资料、音频资料、图形图象资料和富媒体资料的采集上载、编目、分类标引、审核发布、预览下载的综合管理的应用系统。

DirectShow之接口实战篇

在正确安装好DirectX SDK后,我们必须设置DirectX SDK的头文件和库文件,使其在Visual Studio的搜索路径内。对于Visual Studio .NET 2003可如下进行设置:菜单→工具→选项→项目→VC++目录,在包含文件中加入D:\DXSDK\Include,在库文件中加入 D:\DXSDK\lib(我的SDK的安装路径是D:\DXSDK): 头文件 文件名称描述 Dshow.h所有的DirectShow应用都必须包含库文件 文件名称描述 Strmiids.lib此库文件中导出类标识(CLSID)和接口标识 (IID),所有的DirectShow应用都必须包含此 文件。 Quartz.lib此库文件中导出函数AMGetErrorText,如果 你的程序中调用了此函数,则必须包含此库 文件。 DirectShow之接口实战篇(一) 现今自己编程做一个多媒体播放工具是一件很令人开心愉悦的事情,但如果使用MediaPlay 控件开发则会受到很多限制,自己的很多好的创意想法都无法或者很难实现,如果利用微软的DirectX接口开发则可以充分的将作者的独特想法付诸于实现,何乐而不为呢!!不过关于DirectShow接口的开发说明文档实在是少之又少,仅有的一些不是英文的就是一些关于理论方面的,真正关于接口实战编程而且是用Delphi开发工具实现的更是凤毛麟角,使很多人都望而却步。在这里,我把我应用Directshow开发的心得以及我搜集到一些资料重新整理编辑出来公布,希望对所有由此兴趣的同仁有所帮助,就算达到了我的目的。废话少说,进入正文。 既然是接口实战篇,就先把一些常用的接口列出来,让大家有一些基本的认识,都是用来做什么的,什么时候我们会需要用到此接口。 IFilterGraph 过滤通道接口 IFilterGraph2 增强的IFilterGraph IGraphBuilder 最为重用的COM接口,用于手动或者自动构造过滤通道Filter Graph Manager IMediaControl 用来控制流媒体,例如流的启动和停止暂停等,播放控制接口 IMediaEvent 播放事件接口,该接口在Filter Graph发生一些事件时用来创建事件的标志信息并传送给应用程序 IMediaEventEx 扩展播放事件接口 IMediaPosition 播放的位置和速度控制接口(控制播放位置只能为设置时间控制方式) IMediaSeeking 另一个播放的位置和播放速度控制接口,在位置选择方面功能较强.设置播放格式,多种控制播放方式.常用的有:(1)TIME_FORMAT_MEDIA_TIME单位100纳秒。(2)TIME_FORMAT_FRAME按帧播放 IBasicAudio 声音控制接口

利用DirectShow开发自己的filter

学习directshow已经有几天了,下面将自己的学习心得写下来,希望对其他的人有帮助。Filter实质是个COM组件,所以学习开发Filter之前你应该对com的知识有点了解。Com组件的实质是一个实现了纯虚指针接口的C++对象。关于com的东西,这里不多讲。 一给vc配置DirectShow的开发环境 无论开发Filter还是开发Dshow的应用程序都要配置一下开发环境的,其实就是包含一下dshow用到的头文件和动态库。选择Tools菜单下面的Options。在弹出的Option对话框配置如下 图1 添加头文件 选择动态库文件添加到工程中

图2 添加动态库 二创建工程以及Filter的入口函数 创建工程 一般情况下,创建Filter使用一个普通的Win32 DLL项目。而且,一般Filter项目不使用MFC。这时,应用程序通过CoCreateInstance函数Filter实例;Filter与应用程序在二进制级别的协作。另外一种方法,也可以在MFC的应用程序项目中创建Filter。 在vc里新建一个工程,选择win32动态库,如下图 图3 图4

这样生成了一个简单的DLL,只有一个Dllmain入口函数。 下面我要给这个filter添加入口函数了。 Filter是个基于DLL的com组件,所以一般的Filter都要实现下面几个入口函数 首先定义导出函数 要导出这些函数有两种方法,一是在定义函数时使用导出关键字_declspec(dllexport),另外一种方法是在创建DLL文件时使用模块定义文件.Def。使用导出函数关键字_declspec(dllexport)创建MyDll.dll就是在 .h文件中定义定义函数如下: 为了用.def文件创建DLL,往该工程中加入一个文本文件,命名为MyDll.def,再在该文件中加入如下代码: LIBRARY MyFilter.ax EXPORTS DllMain PRIVATE DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE 其中LIBRARY语句说明该def文件是属于相应DLL的,EXPORTS语句下列出要导出的函数名称。我们可以在.def文件中的导出函数后加@n,如Max@1,Min@2,表示要导出的函数顺序号,在进行显式连时可以用到它。该DLL编译成功后,打开工程中的Debug目录,同样也会看到MyDll.dll和MyDll.lib文件。 然后要定义这些函数的实现了,其实这些工作dshow的基类里都已经替我们做好了,我们所要做的就拿来用就是了,最重要的三个函数的实现一般如下

视频管理系统需求及解决方案

公司内部视频部门对于视频管理软件的需求 对于视频项目组来说,常常需要一些适合的视频片段、图片和音频(统称素材),来制作一些需要的原创节目、宣传片等视频片子。但是素材的查找、利用是一个很棘手的问题,所以需要一套素材管理系统。 该系统所需功能: 1、采集功能: 自动采集音视频资源 2、上载模块: 把本地收集、采集的原始音视频文件,以及其附件(说明文档、展示图片)添加到上载页面,提交上载完成。 3、素材编目: 对原始文件进行分类、编目,正题名、关键字、时间、作者等元数据,最后确定分类标识,提交完成文件编目。对视频资源、音频资源、以及图片资源划分管理;方便维护不同属性节目资源通过设置片段素材的入点和出点,完成片段素材的截取。通过在视频素材中,任意抓取关键帧来截取图片素材,形成单张图片,完成图片素材的获取。 4、修改功能: 可以对上载后的素材进行信息的修改和删除功能。 5、检索下载: 按照分类、关键字、编目属性等检索素材,对要找到的素材节目整篇下载,也可以通过在线预览,找到自己想要的素材视频片段,确定片段的入点和出点,提交信息,就可以把自己所需的片段下载到本地。如果想要获取某个内容的系列图像,也可以直接抽取关键帧,下载到本地应用。(注:检索方式需要提供模糊检索、全文检索、关键字检索、分类检索、等多种检索方式。) 6、字典表: 系统满足分类标引和编目著录属性的自定义功能。系统应用过程中,只要对字典表进行自定义配置,就可以满足个性需求。 7、用户管理: 管理员用户2个,负责具体的素材整理、编目、修改、上传等工作。对素材进行统一的管理。视频组其他人员及其他部门人员,可以进入素材库浏览所有素材,并下载使用。但不具有管理员权限。

实现DirectShow技术开发准备

C#实现DirectShow技术开发准备 时间:2009-10-21 23:45 点击:73次字体:[大中小] DirectShow组件在“C:WINDOWSsystem32”目录下的Quartz.dll动态库中,要使C#代码引用COM对象和接口,必须将COM类型库转换为.NET框架元数据,从而有效地创建一个可以从任何托管语言调用的托管包装。在转换过程中需要使用FrameWork SDK自带的TlbImp命令工具,该命令工具在“D:Program FilesMicrosoft Visual Studio 8SDKv2.0BinTlbImp.exe”目录下(取决于Visual Studio 2005的安装路径)。该命令的使用方法为: TlbImp C:WINDOWSsystem32quartz.dll out:C:WINDOWSsystem32quartzDriectShow.dll 在DOS命令下执行转换成功。 转换完成后需在应用程序引用quartzDriectShow,引用quartzDriectShow.dll组件步骤如下: (1)在Visual Studio 2005开发环境中,选择菜单“项目”/“添加引用”命令,弹出“添加引用”对话框。 (2)选择“浏览”选项卡,通过浏览找到引用quartzDriectShow.dll所在的位置,并引用到程序中来。 (3)最后引入using quartzDriectShow,在程序中可以开发相关多媒体程序了。 开发人员还可以通过编写自己的过滤器扩展DirectShow多媒体支持。下面是DirectShow组件的接口。 l IFilterGraph:过滤通道接口。 l IFilterGraph2:增强的IfilterGraph。 l IGraphBuilder:最为重用的COM接口,用于手动或者自动构造过滤通道Filter Graph Manager。 l IMediaControl:用来控制流媒体(如流的启动和停止暂停等)播放控制接口。 l IMediaEvent:播放事件接口,该接口在FilterGraph发生一些事件时用来创建事件的标志信息并传送给应用程序。 l IMediaEventEx:扩展播放事件窗口。 l IMediaPosition:播放的位置和速度控制接口(控制播放放置只能为设置时间控制方式)。 l IMediaSeeking:另一个播放的位置和播放速度控制接口,在位置选择方面功能较强,设置播放格式。常用的控制播放方式有:TIME_FORMAT_MEDIA_TIME单位100纳秒;TIME_FORMAT_FRAME按帧播放。 l IBasicAudio:声音控制接口。

基于DirectShow视频及图片捕获软件的开发

基于DirectShow视频及图片捕获软件的开发 我们知道目前很多工业相机的图像数据采集都是基于DirectShow的,常见的有映美精等。DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。 笔者使用visual studio 2005 来开发了基于DirectShow的视频捕获软件,并用开发的软件对映美精相机进行了测试。本软件不但可以实现对相机的视频捕获,而且还可以抓取图像帧。软件运行时自动搜索所连接的相机,预览后可以对相机参数进行设置。下面是软件的主界面。 预览视频后可以对视频格式和图像参数进行设置。开始预览时,捕获的视频是黑白的,我们将颜色空间设置为UYVY即可捕获彩色视频。

下面是捕获的一帧图像,图像质量虽然没有映美精自带的软件效果好,但已经实现了所需各项基本功能,接下来的工作将会进一步提高软件性能。 另外我们还可以捕获视频,点击“捕获视频”按钮,输入要保持的文件名,注意要以.avi后缀结尾,点确定就开始捕获视频。 从我们开发的软件可以看到,映美精的相机能够很好的支持DirectShow的驱动,我们的软件对映美精相机的识别是如此的容易。接下来我们将继续开发基于其它驱动的图像捕获软件,为最终实现在一个软件中识别各种相机而努力。我们将逐步开放我们的源代码,以便更多的同行一起来探讨相机的图像采集技术。 下面是详细的软件开发过程。 一、安装DirectShow和visual studio 2005 首先我们安装DirectShow SDK,它有许多版本,作者使用的是2003年发布的dx90bsdk.exe,安装在D盘的DXSDK下。软件下载地址为 https://www.360docs.net/doc/2611292197.html,/download/b/6/a/b6ab32f3-39e8-4096-9445-d38e6675de85/dx90bsdk.exe。 然后安装好visual studio 2005。安装完以后我们将进行开发环境的配置。 二、开发环境配置

视频云管理系统登录

视频云管理系统 1.登录 输入网址,进入注册登录页面,该页面提供一个登录入口,输入账户密码,点击“登入”按钮,登陆高速视频云管理系统。 2.首页 登录成功后,进入首页,左侧为功能导航边栏,右侧为功能展示区域。

3.直播 3.1. 域名管理 本系统提供域名管理功能,用户可以通过该功能配置推流、播放、回看等功能需要使用的域名。该功能提供创建、修改、删除、启用、停止域名的操作。 3.2. 默认配置 默认配置提供针对客户的直播相关的默认配置功能。通过该功能可以配置接入模式、是否转码、是否开启截图、截图模板、截图保存时间、是否开启录制、直播分片大小、录制分片时长、录制保存时间、配置是否启用、扩展配置等功能。

3.3. 频道管理 频道管理提供对于各个高速摄像头的管理。每一个频道就代表一路摄像头。用户可以通过该功能可以配置频道名称、频道代码、GPS、高速代码、频道状态、配置规则、接入模式等配置。对于自定义规则配置也提供直播源、存储规则、截图配置、转码配置功能。

3.4. 频道告警 频道告警页面提供频道告警功能,该功能提供对于各个频道的告警事件的展示,方便维护人员快速定位出现告警的频道。 3.5. 客户报表 客户报表可以提供用户资源使用情况的汇总展示。用户通过该页面查看频道接入、用户分发、接入带宽、输出带宽、频道请求、分发请求数、接入流量、分发流量等情况展示。可以选择报表类型、客户、报表时间等筛选报表展示的内容。

3.6. 自动截图资源 自动截图资源页面提供各个频道自动截图资源的查看功能。可以通过日期、客户、频道筛选数据。

3.7. 手动截图/视频资源 手动截图/视频资源页面提供用户手动触发的截图和录制资源的查看功能。可以通过客户、频道筛选数据。 3.8. 自动截图模板 自动截图模板页面提供通用截图规则的配置功能,用户可以配置模板名称、状态、优先级、截图规则选择、截图间隔等属性的配置。 3.9. 频道监控 频道监控功能提供对于各个频道状态的监控功能,用户可以在该页面查看各个频道的实时状态。以及提供查看各个频道直播,回看视频截图,短视频截取等功能。

DirectShow获取一张图片

DirectShow:图片的抓取 zz 在播放媒体文件的过程中,有一个很有用的功能,就是在当前播放的位置抓取图,实现这种图片抓取功能的方法很多,我们这里只介绍常用的两种。 第1种方法最简单,它使用1BasicVideo::GetCurrentImage接口方法,代码如下。 boolSnapshotBitmap(IBasicVideo*pBa8icVideo,ê? constchar*OutFile) if (pBasicVldeo) { long bitmapSize=0;ê? //首先获得图像大小 if(SUCCEEDED(pEasicVidee->GetcurrentImage(&bitmapSize,ê?0))) { bool pass=false;ê? //分¤?配?图a?像?帧?内¨2存?? unsignedchar*buffer=newunsignedchar[bitmapSize]; //获?取¨?图a?像?帧?数oy据Y if(SUCCEEDED(pBasicVideo->GetCurrentImage(&bitmapSize,(long*)buffer)) ) { BITMAPFILEHEADER hdr;ê? LPBITMAPINFOHEADER ipbi;ê? ipbi=(LPBITMAPINFOHEADER)buffer;ê? int nColors=1<biBitCount;ê? if(nColors>256) //always is”?àBM”?à hdr.bfType =((WORD)(‘?M’?¥<<8)|’?¥B’?¥);ê? hdr.ê?bfSize =bitmapSize+sizeof(hdr);ê? hdr.ê?bfReservedl =0; hdr.ê?bfReserved2 =0;ê? hdr.ê?bfOffBits =(DWORD) (sizeof(BITMAPFILEHEADER)+lpbi->biSize+nColors*sizeof(RGBQUAD)); CFilebitmapFile(outFile,ê?CFile:êo:êomodeReadWrite | CFile:êo:êomodeCreate | CFile:êo:êotypeBinary);ê? //写??入¨?位?图a?文?件t头a?¤ bitmapFile.ê?Write{&hdr,ê?sizeof 【?BITMApFILEHEADER)); //写??入¨?图a?像?帧?数oy据Y(包?¨1括¤?§BITMAPINFOHEADER信?息?é) bitmapFile.ê?Write(buffer,ê?bitmapSize);ê? bitmapFile.ê?Close();ê?

教学视频资源管理系统V新

教学视频资源管理系统§1.1系统概述 随着数字校园的推进,使用网络系统辅助教学活动已日渐普遍。对于学习系统,用户的需求主要集中在资源管理、作业管理、互动教学、课程教学内容展示等方面。同时随着用户对录播设备的认可,越来越多录播设备投入校园使用,如何合理并最大化使用设备,也是用户日渐关注的问题。 A V A公司在充分调研了各学校教育技术部门、一线教师的基础上,认为在高校信息化进程中,必须采用新模式的学习系统,释放大量的管理人员繁重的工作,合理设计教学单元,实现教学案例的多人评价,并且在此基础上,实现教学资源的整合及再利用,由此我们提出全新的解决方案,即“A V A教学视频资源管理系统”,简称“ACM”。 §1.2用户需求 ●教学视频录制设备无统一管理,录播课室利用率未能得到最大发挥, 该问题造成学校资源的浪费,大量的教学视频录制管理工作也面临极大挑战。 ●教学资源的管理简单,知识单元内容单一化,未能支持多种格式的文 件混合打包,也无法实现知识单元内容的导入、导出、共享。 ●教学资源的再利用较困难,检索、浏览以及共享的方式有限,极大限 制教学资源价值的发挥。 ●不能提供专业的教学资源评价系统,主要未能满足师生多人打点评价 评分要求。 ●需要系统提供人性化点播界面,实现视频资源的点播,同时尽可能增

加分享的可能。 §1.3系统技术要求 ●以“高效、规范、安全管理各种教学资源”为目标而设计 ●可自定义高教课程分类级别和列表,能实现多级管理; ●不限制资源上传,并自动读取教师、教师任教课程等信息; ●多纬度搜索,可按教师、知识点等各种纬度; ●支持上传多种格式(word、ppt等)文档管理,实现视频+教改方案、 案例说明、课件等教学单元管理方式; ●支持按权限随时更改上传文档; ●支持文档的单一下载和打包下载; ●实现资源共建共享,支持知识点用户完善、文档贡献(可设审核); ●点播界面类似全球优秀的C2C分享社区“豆丁网”,友好人性的应用界 面; ●提供多种分享(订阅、下载等)渠道,创新引入WEB 2.0分享窗口, 让学生随时随地使用资源; ●可根据教师、知识点,订阅喜欢的教学单元,审核后资源会第一时间 推送到用户界面; ●支持收藏教学单元,实现对教学单元的快速访问; ●实现教学资源的权限保护,为原创者提供版权保护; ●支持点播界面的智能推荐,即可自动推送与点播相关教师、知识点的 教学单元; ●支持对对教学单元视频进行打点并记录评价,支持按打点信息控制视 频进度;

利用DirectShow实现视频文件播放

DirectShow 媒体文件回放总结收藏 作者:Inkick 1.概述 DirectShow中媒体文件回放的过程也就是一个为媒体文件选择相应所需的Filter、构建Filter Graph、并对Filter Graph的状态进行维持、控制的过程。这里所说的媒体文件,不仅仅是指音频、视频文件,同时也包括bmp、jpeg、gif等图形图像格式以及midi等数字化音乐序列。 因此,使用DirectShow进行媒体文件的回放需要经过以下的步骤: 2.构建Filter Graph Filter Graph为Filter提供了一个容器,一个构建完整的Filter Graph也就是一个完整的Filter 连路,这个连路对于程序是透明的,可控制的。而对于每一个媒体文件来说,Filter Graph 与媒体文件存在着对应的关系。也就是说,一个Filter Graph只能实现一个(种)文件的回放。 在DirectShow中,Filter Graph是由接口对象IGraphBuilder实现的,我们可以调用Win32 API 函数CoCreateInstance()建立一个实体。Filter Graph实体建立之后并不具有任何的Filter,因此不具有任何实际用途。因此我们需要连接需要的Filter来完成FilterGraph的构建。 智能连接这个术语覆盖了一系列Filter Graph Manager用于构建所有或部份filter graph的算法。任何时候,当Filter Graph Manager需要添加filter来完成graph时,它大致做以下几件事情: 如果有一个filter存在于graph中,而且这个filter有至少一个没有连接的input pin,Filter Graph Manager试着去试用这个filter。 否则,Filter Graph Manager在已注册的filter中寻找连接时可以接受合适的媒体类型的filter。每一个filter都注册有一个Merit值,这个值用以标记哪个filter最容易被Filter Graph Manager 选中来完成graph。Filter Graph Manager按Merit值的顺序来选择filter,Merit值越大,被选中的机会越大。对于每种流类型(如音频、视频、MIDI),默认的renderer具有一个很高的Merit值,解码器同样是,专用filter具有低Merit值。 如果Filter Graph Manager选择的filter不合适,它会返回来尝试另外的filter组合。 我们有三种构建graph的途径: 1.filter graph manager构建整个graph 2.filter graph manager构建部分graph

DirectShow视频采集方案

2.3 DirectShow视频采集方案 流媒体处理技术以其复杂性和技术性一直受到人们的关注。随着网络技术的不断发展,流媒体在网络上得到了广泛地应用。如何能够简单、有效地进行流媒体处理,已成为一个焦点问题。为此,Microsoft推出了DirectShow,DirectShow 是Microsoft推出的基于Windows平台的流媒体处理开发包,它与DirectX一起发布。DirectShow对流媒体的捕捉、回放提供了强大的支持,使用它还可以在基于WDM驱动的采集卡上进行数据捕捉。本节将介绍有关DirectShow的相关知识。 2.3.1 DirectShow系统结构分析 DirectShow主要由过滤器(Filter Graph)图表构成。过滤图表中包含了各种Filter,这些Filter能够按一定顺序连接在一起,构成一条流水线。从功能的角度划分,Filter大体可以分为3类,Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责获取数据,可以是一个文件、一个采集卡、声卡或数码相机等。Transform Filters负责数据的转换、传输。例如各种编码器、解码器等。Rendering Filters负责数据的最终去向,例如将数据传送到声卡、显卡或存储为文件。 在开发DirectShow应用程序时,通常需要设计一个过滤图表(Filter Graph),向过滤图表中添加相应的过滤器,最后连接过滤器的引脚就完成了功能的设计。例如,实现一个简单的视频预览功能,需要向过滤图表中添加一个视频捕捉源过滤器和一个Video Renderer过滤器,将视频捕捉源过滤器的输出引脚与Video Renderer过滤器的输入引脚相连就可以了。而在程序中只需要按照设计过滤图表的捕捉添加过滤器并连接过滤器引脚就可以了。在连接过滤器引脚时需要注意:只能是输出过滤器引脚与输入过滤器引脚相连,两个输出过滤器或两个输入过滤器引脚是不能相连的。 为了在程序中使用DirectShow,需要单独安装DirectX,当前DirectX的最新版本为9.0,即DirectX9.0,用户可以从Microsoft的官方网站上免费下载。在安装DirectX之后,程序中需要引用“dshow.h”头文件,并导入“Strmiids.lib”库文件和“quartz.lib”库文件才可以使用DirectShow。代码如下: #pragma comment (lib,"Strmiids") #pragma comment (lib,"quartz") #include 2.3.2 Filter图表设计 为了方便用户设计过滤图表,DirectX提供了一个Graph Edit工具。用户可以单击“开始”菜单下的“Microsoft DirectX 9 SDK\DirectX Utilities\Graph Edit”菜单项打开Graph Edit工具,如图2.10所示。

(完整word版)视频综合管理平台系统Easy 7

1.1视频综合管理平台系统Easy 7 天地伟业Easy7视频综合管理平台是面向大中型用户跨区域网络化视频集中管理领域的专业平台级安防管理软件,具备信息资源管理、设备管理、用户管理、网络管理、安全管理等功能,可实现监控中心对所有视频图像集中管理,支持多品牌设备联网,保证联网视频传输质量,提供资源统一检索和数据共享。与现有的中小型网络监控相比,在网络拥塞控制、QoS网络音视频传输、高质量低码率视频处理、系统负载均衡、大容量并发数据网络存储和内容检索等方面采用了创新技术,支持对重要监控录像的精确比对和智能备份,支持统一身份认证和权限管理,保证信息数据的安全。把小范围的集中式局域性监控,扩展到大范围多网络结构的分布式监控;把单机管理存储,扩展到集中式存储和分布式存储;把单一的音视频监控,扩展到参与视频会议、生产调度、实战指挥等多种管理系统的信息共享和策略联动。 该平台充分支持公安视频信息专网系统协议,充分兼顾公安业务需求和技术发展,充分考虑与公安其他信息系统的连接,建设可扩展的开放平台,充分发挥视频监控系统在加强社会管理、提升警务效率、组织群防群治、预防和打击违法犯罪等方面的作用。支持实时视频监控检索、信息数据上传下调,并能实现与卡口识别系统、区域联网报警系统、警用PGIS系统集成联动。可广泛适用于平安城市综合治安防范系统,有效整合视频监控资源,在公安派出所、区(县)公安局、市公安局和省公安厅之间实现授权共享,最大限度实现跨地区、跨部门视频监控资源共享和互联互通互控,可以为城管、交通、环保、水利等政府其他管理部门预留图像接口,实现资源共享。 一、平台综合性能

1、统一的视频监控管理平台,可在监控终端上浏览前端视频信号,通过统 一界面控制所有的摄像机、硬盘录像机、视频服务器等设备; 2、采用中间件组件复用技术,在J2EE三层体系结构基础上构建的面向业 务的四层体系架构模式,可确保新需求的增加无需改变软件核心模块; 3、采用B/S和C/S相结合的架构,支持SOA面向服务体系架构,WEB服 务基于Web2.0技术和XML协议标准,便于被上层B/S架构业务系统集成; 4、使用Oracle9.0或Mysql5.0版本以上的企业级数据库软件,采用数据库 代理、数据库中间件等数据库访问技术,保证数据库系统安全可靠; 5、支持SSL协议等加密方式进行传输,保证身份认证的安全性; 6、通过中间件服务器访问数据库,保证数据库访问的安全性,有效防止 DOS攻击; 7、各服务模块可安装在通用服务器硬件设备,支持分布式部署方式,可以 根据业务发展要求分批部署,灵活扩充; 8、支持热备或互备方式,防止单点故障,提升系统可靠性; 9、采用模块化开发技术,支持设备快速接入,任何插件的修改升级不影响 已经完成的功能模块,保证系统稳定性。 10、具备自动连接功能,当网络中断后再复通,管理平台中的所有设备能够 自动连接到监控系统并正常工作;

VS2010 C++学习(5):基于DirectShow视频预览录像程序

VS2010C++学习(5):基于DirectShow的视频 预览录像程序 学习VC++编制的基于DirectShow视频捕获程序,主要练习基于DirectShow程序的应用。 一、主要内容: 1.基于DirectShow视频预览; 2.基于DirectShow视频录像; 二、设计实现: (一)、安装DirectShow 首先我们安装DirectShow SDK,由于现在directShow没有和direcxtx一起发布,而是和windows sdk打包发布了,可以到官网下载最新的windows sdk开发包。一个可用的下载地址为https://www.360docs.net/doc/2611292197.html,/07/hh/DXSDK_Feb10.rar 然后安装好windows SDK。安装完DirectShow SDK的目录为C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow。 (二)、开发环境配置 开发环境的配置主要有两个工作要做: 一是在使用Directshow SDK开发自己的程序时需要的DirectShow的有关静态库的配置, 二是visual C++开发环境的配置。 1)生成DirectShow SDK开发库

使用DirectShow SDK开发用户自己的程序需要几个静态链接库:quartz.lib、strmbasd.lib、STRMBASE.lib和strmiids.lib。中间两个lib需要用户自己编译生成,而其他两个微软已经提供。下表列出了使用DirectShow SDK开发程序所有要使用的库。 2)更改添加的include内容: C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses; C:\Program Files\Microsoft SDKs\Windows\v7.1\Include; 添加过程如下。选择“Ex005属性”→“选项”→“VC++目录”→“包含目录”,将上面的2个Include内容添加进去。 3)更改添加lib路径 要添加的lib内容: C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug; C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib; 添加过程和Include内容相似,选择“Ex005属性”→“选项”→“VC++目录”→“库文件”选项。 4)添加链接库支持 C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\Debug;

教学资源管理系统

《教学资源管理系统》需求分析设计说明书 学院:信息学院研 13级 学号: 66 姓名:杨涛

目录 一. 引言 (3) 教学资源管理系统的发展 (3) 教学资源管理系统功能和特点 (3) 教学资源管理系统设计目的 (3) 教学资源管理系统开发步骤 (4) 二. 需求说明 (4) 需求分析 (4) 可行性分析 (4) 技术可行性 (4) 经济可行性 (5) 操作可行性 (5) 三. 系统构架及开发工具简介 (5) 应用系统架构方式 (5) B/S架构概述 (5) 系统体系结构 (6) 开发工具简介 (7) 系统开发技术JSP (7) ORACLE简介 (7) 四. 概要设计 (8) 系统具体功能 (8) 系统的整体功能模块 (8) 系统的不同用户操作权限介绍 (8) 系统整体界面设计 (8) 系统整体结构设计 (8) 一般用户登陆操作流程介绍 (9) 一般用户登陆后台验证流程介绍 (9) 数据库设计 (10) 逻辑设计 (11) 数据字典设计 (11)

一. 引言 教学资源管理系统的发展 随着Internet的飞速发展,教学资源的数量与日俱增。如何对这些资源进行有效的管理和组织是相当有必要的。但是,简单地实现以二进制形式组织教学资源、以计算机管理代替人工管理教学资源这个功能是不能满足信息化教育教学的要求的。随着教育改革的深入发展,改变传统课程实施过于强调学生在教室接受学习、死记硬背、机械训练的现状,倡导学生主动参与、勇于探究、勤于动手,培养学生搜集和处理信息的能力、获取新知识的能力、分析和解决问题的能力以及合作的能力是当今信息化教学的一个发展方向。即教学的重心开始由“教”转向“学”,使学生完全从教师控制的家教式、被动式学习状态转变为自主学习、双向交流的状态。 目前,美国和英国等发达国家的教育资源管理系统都往网络化方向发展。即在原有功能基础上增加一些实时的教学功能,比如:教师在线解答疑难问题、学生通过观看在线视频、视频点播或者进入虚拟教室来实时地进行学习,这也是我国教学资源管理系统的一个发展趋势。 教学资源管理系统功能和特点 本系统能实现一般教学资源管理系统应该具有的基本功能。比如:学生用户快速搜索、浏览、下载学校最新公告和其所需教程、课件;教师用户发布课件、上传相关教学辅助材料,对相关课程,教案等进行增加,编辑,删除。教学工作的开展是双向的,只有为师生之间的交流提供一个好的平台,营造出民主、和谐、平等的教学环境,才能提高教学效率,适应信息化社会对教育教学的要求。 教学资源管理系统设计目的 通过此次设计掌握教学资源管理系统软件的基础思路和方法,熟悉软件工

directshow安装

Visual范例宝典中采用的DirectX SDK为Microsoft Show SDK(April 2006),Direct Show SDK为DirectX SDK Extras Frebruary 2005 在这里和大家分享下DirectShow9 DirectX9.0c已经将DShow分离出去了,下载时请选DirectX9.0b或者一下一个单独的,地址为: https://www.360docs.net/doc/2611292197.html,/SDK/DX9SDK.rar 下面是配置过程: 1,使用VC向导生成一个具体项目,如Win32 Dynamic-Link; 2,包含头文件streams.h; 3,在VC的菜单中选择Project|Settings|C/C++,在弹出的对话框中的Category中选择Code generation,然后在Calling convention中选择_stdcall; 4,使用多线程语言运行时库,即在VC的菜单中选择Project|Settings|C/C++,在弹出的对话框中的Category中选择Code generation,然后在Use run-time library中,Debug版选择Debug Multithreaded,Release版选择Multithreaded。 5,配置必要的链接库文件,即在VC的菜单中选择Project|Settings|Link,在弹出的对话框中的Category 中选择General,然后在Object/library modules中输入如下代码: Debug版本strmbasd.lib, msvcrtd.lib, winmm.lib Release版本strmbase.lib, msvcrt.lib, winmm.lib 并且选中Ignore all default libraries。 DirectShow SDK建议,DirectShow应用程序应该至少连接库文件strmiids.lib和quartz.lib。前者定义了DirectShow标准的CLSID和IID,后者定义了导出函数AMGetErrorText(如果应用程序中没有使用到这个函数,也可以不连接这个库)。如果程序里包含了头文件streams.h,则一般库文件还要连接strmbasd.lib、uuid.lib、winmm.lib。 6,将DirectX SDK的Include和Lib目录配置到VC的系统目录中去,并且放在标准的VC目录之前,以保证编译器能够拿到最新版本的源文件。选择Tools|Options|Directories,在弹出的对话框中的Show directories for中选择Include files,配置如下(假设DirectX SDK安装在D:\\DXSDK目录下,VC安装在C:\\Program Files下): D:\\DXSDK\\Include D:\\DXSDK\\SAMPLES\\C++\\DIRECTSHOW\\BASECLASSES

directshow教程(新整理)

Directshow教程0.11 MSDN翻译系列 作者:黄丁杰 说明:如果有任何问题请联系din-je@https://www.360docs.net/doc/2611292197.html,。是本人业余翻译的如果有错误请直接发到我邮箱我会立刻改正,directshow的其他文章我会在以后不断翻译出来。如果觉得好请帮我作作宣传。欢迎转载,但是禁止修改。 Directshow起步。 本章主要介绍diirectshow在编写程序时所需的基本概念。在本章你可以总揽下directshow 技术。你必须在总体上对本章的编程和媒体有所了解。 本章将介绍 。设置编译环境 。介绍directshow应用程序编程 。如何播放一个文件 设置编译环境: 你可以编译工程在命令行模式下或者在vs集成环境中 头文件 所有的directshow应用程序都使用下面的头文件。 Dshow。H 部分directshow接口需要附加的头文件。这些文件会在接口的注意中给出。 所需的库文件 directshow需要如下的库文件 strmiidl。Lib 该库包含CLSIDs和IIDs的接口。所有的directshow都需要该库。Quartz。Lib 该库包含AMGetErrorText函数。如果你没有调用该函数,该库没有用。 记住在你的编译环境中必须把directx SDK 的头文件库和连接库的目录作为vs优先搜索的路径。这样可以保证编译的时候用的是最新版本的文件。 介绍directshow应用程序编程 本章介绍编写一个directshow程序的基本技术和概念,读完本章你就可以写个你自己的directshow的应用程序了。 滤镜和图像滤镜 directshow是由被称作滤镜的东西构成的。滤镜是一个软件包用来执行对多媒体流的一些操作。比如directshow的滤镜可以 读出一个文件 从视频捕捉设备获取视频流 解码各种各样的多媒体格式,比如MPEG-1S视频。 传输视频和音频到屏幕和声卡。 滤镜几乎完成视频播放所需要的从输入到输出的所有功能。比如一个MPEG-1的滤镜。它可以输入MPEG码流然后输出图像帧用于后续显示 在directshow程序中只要执行把滤镜连接在一起就可以了。就是把一个滤镜的输入和另外一个滤镜的输出连接在一起就可以了。一组连接在一起的滤镜叫做图像滤镜。比如下面的图示

directshow实现视频捕获

directshow实现视频捕获(源码)vs2005 金钻传奇 mail@https://www.360docs.net/doc/2611292197.html, 我用visual studio 2005编了一个摄像头预览程序,还可以导出成avi文件,前提是要安装directshow,并搭建好环境,我安装的是directx 9.0b,搭建环境很简单,网上有很多,注意在项目-属性-配置属性-链接器-输入中要加上strmbasd.lib winmm.lib(中间有空格)。源代码如下: /*CaptureClass.h*/ #pragma once #include #include #include #include //ISampleGrabber接口要求的 #ifndef SAFE_RELEASE

#define SAFE_RELEASE(x) { if (x) x->Release(); x = NULL; } #endif class CCaptureClass { public: CCaptureClass(void); public: ~CCaptureClass(void); int EnumDevices(HWND hList); //void SaveGraph(TCHAR *wFileName); //保存滤波器链表 void ConfigCameraPin(HWND hwndParent); //配置摄像头的视频格式 void ConfigCameraFilter(HWND hwndParent); //配置摄像头的图像参数 HRESULT CaptureImages(CString inFileName); //捕获保存视频 HRESULT PreviewImages(int iDeviceID , HWND hWnd); //采集预览视频 private: HWND m_hWnd; //视频显示窗口的句柄 IGraphBuilder *m_pGB; //滤波器链表管理器 ICaptureGraphBuilder2 *m_pCapture; //增强型捕获滤波器链表管理器IBaseFilter *m_pBF; //捕获滤波器 IMediaControl *m_pMC; //媒体控制接口 IVideoWindow *m_pVW; //视频显示窗口接口 IBaseFilter *pMux; //写文件滤波器 protected: bool BindFilter(int deviceId,IBaseFilter **pFilter); //把指定的设备滤波器捆绑到链表中 void ResizeVideoWindow(); //更改视频显示窗口 HRESULT SetupVideoWindow(); //设置视频显示窗口的特性 HRESULT InitCaptureGraphBuilder(); //创建滤波器链表管理器,查询其各种控制接口 }; /*CaptureClass.cpp*/ #include "StdAfx.h" #include "CaptureClass.h" /************************************************************************/ /* 类构造函数实现 */ /************************************************************************/ CCaptureClass::CCaptureClass(void) { CoInitialize(NULL); //COM库初始化 m_hWnd = NULL; //视频显示窗口的句柄

相关文档
最新文档