博文

DirectShow视频捕捉应用研究(2006-01-15 14:04:00)

摘要:  摘要 本文将对从捕捉设备和从播放文件中进行视频捕捉涉及的有关驱动(Driver)与应用的模型和接口进行研究和分析,比较其Windows与Windows CE中的不同,从而提出在Windows CE下实现视频捕捉数据流的方法。 关键字 DirectShow,视频捕捉,驱动,Windows CE系统

  引言

  随着多媒体技术的不断发展,相应的软件与硬件层出不穷,现在与多媒体视频会议(Video Conference)、视频对话相关的软硬件正成为人们关注和谈论的热点应用。而在这些应用中无不涉及视频数据的捕捉。

  视频捕捉

  1、从工具上讲:一般从宏观上我们讨论的视频捕捉都是指的我们依赖于一定的软件和硬件快速获取和处理音/视频数据,实现照相、抓图、字幕、视频翻转/镜像等操作。

   视频捕捉硬件一般有:视频捕捉卡、摄像头(CAMERA)、摄像机或称摄影机(DV)等;

   视频捕捉软件是指相应捕捉硬件的驱动程序和实现捕捉、回放功能的应用软件。如:HyperCam,iuVCR ,WinCAM 2000 等。

  2、静态和动态视频捕捉

   静态视频捕捉成的一般为图片文件,如.BMP的文件等,其分辨率的大小可以通过程序或设备属性设定。

   动态视频捕捉的可以是.WAI等具有连续动作的视频低自定格式的文件,用一般的播放软件可以播放。   基于DirectShow的视频捕捉过程

  1、DirectShow技术   在一般的软件开发工具中(比如VB,VC)都可以直接调用windows系统下的MCI控制接口)函数或者媒体播放控件(WMP等),设定相关的文件名等属性就可以实现视频的捕捉或回放。随着多媒体技术的迅速发展,各种压缩算法在该领域的应用,MCI技术越来越显的力不从心,最明显的是它不支持可变比特率的压缩算法,对于处理DVD等近年出现的多种新的媒体格式已显得无能为力。随后,微软又适时推出了建立在DirectX(包含DirectDraw、DirectSound、Direct3D)之上的DirectShow技术,它也是一种API(应用程序接口),每个DirectX部件都是用户可调用的API的总和,通过它应用程序可以直......

阅读全文(5115) | 评论:1

DirectShow系统概述(2006-01-14 11:28:00)

摘要:  流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,事半功倍。此时,微软的DirectShow,给了我们一个不错的选择。   DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。目前,DirectX最新版本为8.1。

  那么,DirectShow能够做些什么呢?且看,DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。

  接下去,我们需要对DirectShow系统有个整体的印象。参见以下DirectShow的系统示意图:



  图中央最大的一块即是DirectShow系统。DirectShow使用一种叫Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。大家可以看到,按照功能来分,Filter大致分为三类:Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等,然后将数据往下传输;Transform Fitlers主要负责数据的格式转换、传输;Rendering Filtes主要负责数据的最终去向,我们可以将数据送给声卡、显卡进行多媒体的演示,也可以输出到文件进行存储。值得注意的是,三个部分并......

阅读全文(5321) | 评论:2

SVG问题精华(2006-01-14 11:00:00)

摘要:    什么是SVG?   SVG(Scalable Vector Graphic)是一个标准开放的矢量图像格式.它使你设计的网页可以更加精彩,更加细致.使用简单的文本命令,SVG甚至可以做出诸如色彩线性变化,自定义置入字体,透明,动态效果,虑镜效果等各式常见的图像效果.   SVG图像是基于XML(可扩展标识语言--未来的网络语言)的应用,并由W3C组织的SVG开发组负责详细的研究和开发.更多详细请参看下列站点: W3C SVG technical specifications W3C SVG overview and press links   W3C组织的成员

  W3C组织的SVG开发组成员包括了各大国际著名电脑公司,如Apple, Autodesk, BitFlash, Corel, HP, IBM, ILOG, INSO, Macromedia, Microsoft, Netscape, OASIS, Quark, RAL (CCLRC), Sun, Visio, Xerox,等等. 语言。   什么是标准开放?这有什么意义??

  作为标准开放的SVG,就意味着它并不属于任何个体的专利,而是一个工业标准,一个通过协作共同开发的标准.正是因为这点,将使得SVG能够得到更迅速的开发和应用.目前已经有少数公司推出了各自的支持SVG创作,编辑和浏览的工具或软件.

  W3C为什么要开发SVG?

  W3C是作为一个国际性的工业联盟而创建的,目的是领导整个互联网协作的发展和创新,以实现科技的进步和共同发展.为了保证网络图像能够顺利的和目前已经由W3C开发的DOM1, DOM2, CSS, XML, XPointer, XSLT, XSL, SMIL, HTML, XHTML 技术以及其他标准化技术,如ICC, URI, UNICODE, sRGB, ECMAScript/JavaScript, Java协调一致,W3C推出了基于XML,并能和上述各项技术融会的SVG,新一代的网络图像各式.

  什么是DOM?

  DOM (Document Object Model,文档物件模型),是一种文档平台,它允许程序或脚本动态的存储和上传文件的内容,结构......

阅读全文(3592) | 评论:0

配置网络,另僻蹊径——Netsh命令(2006-01-09 17:44:00)

摘要:
  上网冲浪之前,必须正确配置好网络参数,而配置参数通常需要在TCP/IP属性窗口中进行;倘若你突然发现自己无法打开TCP/IP属性窗口时(例如系统染上病毒,或无意中删除了网络组件,都能引发这种现象),是不是就束手无策了呢?其实,Win2000以上版本的操作系统,都支持在DOS环境下配置网络参数的功能。只要利用Netsh命令,进入到DOS下的网络配置状态,就能实现各种网络配置。
  
  进入IP设置模式

 
  在DOS环境中,设置网络参数之前,必须先进入IP设置模式才可以。先打开系统运行对话框,执行“CMD”命令,将主界面切换到DOS环境中,在命令行中输入“Netsh”命令,单击回车键后,DOS命令提示符将自动变为“netsh>”,再依次执行“Interface”|“IP”命令后,DOS命令提示符就会变成“Interface ip>”(如图1所示),此时你就进入了IP设置模式。在该模式下,你可以利用“set”命令设置网络IP地址、网络掩码、DNS服务器,也可以利用“show”命令,查看各种网络参数,包括与本机建立的各种TCP/IP连接等。
  
  设置IP地址
    
  在IP设置模式下,执行“set address name static [addr] [mask] [gateway] [gwmetric]”命令,就能给指定网络连接分配IP地址、掩码地址、网关地址。其中,“set address”是设置IP地址的专用命令,name表示指定的网络连接名称,Win2000下的name应设置为“Internet连接”,WinXP、Win2003下的name应设置为“本地连接”;static是表示设置静态地址,“[addr]”指的是具体IP地址,“[mask]”指的是具体掩码地址,“[gateway]”指的是具体网关地址,“[gwmetric]”指的是具体网关跃点数,一般情况下,该数值应设置为“1”。
  
  例如,现在要为局域网中的某Win2000工作站,分配一固定IP地址为“10.19......

阅读全文(3928) | 评论:0

和设备文件对话(写和IOCTLS)(2006-01-09 17:39:00)

摘要:    设备文件是用来代表物理设备的。多数物理设备是用来进行输出或输入的,所以必须由某种机制使得内核中的设备驱动从进程中得到输出送给设备。这可以通过打开输出设备文件并且写入做到,就想写入一个普通文件。在下面的例子里,这由device_write实现。这不是总能奏效的。设想你与一个连向modem的串口(技是你有一个内猫,从CPU看来它也是作为一个串口实现,所以你不需要认为这个设想太困难)。最自然要做的事情就是
使用设备文件把内容写到modem上(无论用modem命令还是电话线)或者从modem读信息(同样可以从modem命令回答或者通过电话线)。但是这留下的问题是当你需要和串口本身对话的时候需要怎样做?比如发送数据发送和接收的速率。
  回答是Unix使用一个叫做ioctl(input output control的简写)的特殊函数。每个设备都有自己的ioctl命令,这个命令可以是ioctl读的,也可以是写的,也可以是两者都是或都不是。Ioctl函数由三个参数调用:适当设备的描述子,ioctl数,和一个长整型参数,可以赋予一个角色用来传递任何东西。
  Ioctl数对设备主码、ioctl类型、编码、和参数的类型进行编码。Ioctl数通常在头文件由一个宏调用(_IO,_IOR,_IOW或_IOWR——决定于类型)。这个头文件必须包含在使用ioctl(所以它们可以产生正确的ioctl's)程序和内核模块(所以它可以理解)中。在下面的例子里,这个头文件是chardev.h,使用它的程序是ioctl.c。
  如果你希望在你自己的内核模块中使用ioctl's,最好去接受一分正式的ioctl职位,这样你就可以得到别人的ioctl's,或者他们得到你,你就可以知道哪里出了错误。如果想得到更多的信息,到'documentation/ioctl-number.txt'中查看内核源文件树。 ex chardev.c

/* chardev.c
*
* Create an input/output character device
*/
/* Copyright (C) 1998-99 by Ori Pomerantz */ /* The necessary header files */......

阅读全文(2909) | 评论:0

GDB使用帮助(2005-12-25 16:09:00)

摘要:GDB(GNU DeBugger)是GNU的调试器,一般和GCC(GNU Compiler Collection)配搭使用。要使用GDB进行调试,编译程序时要指定-g或-ggdb的编译选项。如: gcc –g main.c gcc –ggdb main.c 这样,gcc就会在生成可执行文件时产生调试讯息。-g用于产生一般的调试讯息,-ggdb则用于产生GDB特有的调试讯息。使用-ggdb时,可执行文件的尺寸会大大增加。          下面先说明GDB的基本指令:   f(ile)       :指定一个可执行文件进行调试,gdb将读取些文件的调试讯息,如f a.exe   l(ist):列程序出源文件   r(un):装载完要调试的可执行文件后,可以用run命令运行可执行文件   b(reak):设置断点(break point),如b 25,则在源程序的第25行设置一个断点,当程序执行到第25行时,就会产生中断;也可以使用b funcname,funcname为函数的名称,当程序调用些函数时,则产生中断   c(ontinue):c命令可以另中断的程序继续执行,直到下一个中断点或程序结束   p(rint):输入某个变量的值,如程序定义了一个int aa的就是,p aa就会输出aa的当前值   n(ext):程序执行到断点时中断执行,可以用n指令进行单步执行   s(tep):程序执行到断点时中断执行,可以用s指令进行单步执行进某一函数   q(uit):退出GDB            现在让我们来举一个简单的例子来说明GDB的使用,假设我们有以下的程序:   /****************************************************************************        gdb_s......

阅读全文(6557) | 评论:1

微软开发文档(下载)(2005-12-23 10:50:00)

摘要:http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/DEV205-wangxiaodong.ppt http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/DEV210-sunzhanbo.ppt http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/DEV240-wanghongchao.ppt http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/Dev201-xiexiao.ppt http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/DEV251-lubin.ppt http://download.microsoft.com/download/2/e/2/2e230a22-43ce-45b8-8465-02a96e7d44c9/DEV310-sunzhanbo.ppt http://download.microsoft.com/download/c/a/3/ca3d8b6b-7a45-4e51-b4b4-3c92a7bd3d07/DEV242-zhengquanzhan.ppt http://download.microsoft.com/download/2/e/2/2e230a22-43ce-45b8-8465-02a96e7d44c9/DEV341-saozhidong.ppt http://download.microsoft.com/download/2/e/2/2e230a22-43ce-45b8-8465-02a96e7d44c9/DEV331-fuzhongkai.ppt http://download.microsoft.com/download/2/e/2/2e230......

阅读全文(4630) | 评论:0

SVG:用代码创建图像(2005-12-20 16:42:00)

摘要:    简介
SVG(Scalable Vector Graphics)代表可升级矢量图象,是新一代图象格式的标准。它给Web开发人员提供了一种利用XML(Extensible Markup Language)创建静态图像和动态图像的方法,是图象技术上的一次革命。利用此技术,Web开发人员对页面进行更加精确的控制,SVG的动画片技术可以实现从简单的直线运动到复杂的3D螺旋变形的控制.
SVG 有许多其他图像方法所不具有的优点,下面就是其中一些:
1,和其它媒介兼容,比如无线设备等。
2,可升级的服务器端解决方案。
3,文件尺寸小,方便Web页面下载。
4,无限的颜色和字体的选择。
5,图像可任意缩放。
6,可以用脚本控制与客户的交互事件。
7,方便浏览器进行高清晰的打印。
8,可使用滤镜效果。
9,基于文本的格式,可以轻松地和其它WEB技术集成。
10,内建的国际语言支持。
11,减少维护成本。
12,轻松升级。
13,广泛的多媒体兼容性。
由于SVG和Flash有很多共同的特性,通常有人把它们放到一起进行比较,确实,两者都和其它标准有很好的兼容性。事实上,SVG比Flash有一些独特的特性。SVG可以使用CSS(Cascading Style Sheets)、Script脚本和DOM(Document Object Model ),是完全公开源代码的技术,初学者完全可以从别人的现成的作品中进行学习。而Flash采用的是独有的专利技术,并不是完全开放的标准,当你在场景上单击右键时,你看到的不是源代码。
然而,由于某些原因,SVG还并没有象Flash那样流行,但随着时间的推移,SVG也将很快流行起来的。Mozilla计划完全支持SVG技术,Microsoft也开始支持这种技术,(其实,IE6已经支持SVG。)Adobe GoLive5也宣布支持SVG。此外,SVG编辑器也开始在网络上风行,Jasc的WebDraw已经可以以可视化的方式创建SVG格式的图像了。Adobe 也有生成SVG格式图象的插件。SVG的未来不但是光明的,而且将会在不久的将来在Web领域扮演重要的角色。
目前,SVG的另一个不足之处......

阅读全文(5620) | 评论:0

SVG的脚本编程(2005-12-20 16:10:00)

摘要:  一 SVG简介

SVG,全称为Scalable Vector Graphics(可伸缩矢量图形)。它是W3C制定的、用矢量描述图形的XML应用标准。它有着许多的优点,比如可扩充性(scalable),动态的,交互性强。SVG支持无极放大,对SVG图片进行任意比例的放大都不会损害图片的显示(没有太多的失真),其他诸如BMP,JPEG格式的图片都不支持无级放大。SVG有动画元素,只要在SVG文件中嵌入SVG动画元素就可以实现动画效果了。同时SVG也定义了丰富的事件,包括鼠标事件和键盘事件,只要对SVG进行相关的脚本编程就可以实现SVG文件的交互操作。

SVG带有许多基本的图形元素,只要通过组合基本图形元素就可以构建出SVG文件。

二、           SVG脚本编程

在SVG中,可以通过脚本编程来实现一些比较复杂的交互操作。SVG用<script>元素来在SVG文档中插入脚本,它的功能几乎和HTML中的<script>标记一样。其一般格式为:

<script type=”text/javascript”>

<![CDATA[
            <!—这里插入脚本程序段-->
     ]]>
</script>
<script>有两个属性,type=”content-type”,这里指明所用的script语言的类型。默认情况下script采用的语言是javascript语言。Xlink:href=”<uri>”指明引用外部脚本文件的url。下面的例子演示了SVG中的鼠标事件。
<svg width="400" height="200">
<script><![CDATA[
function showmsg()
{
alert("you had clicked the green rect");
}
]]></script&g......

阅读全文(5393) | 评论:1

SVG简介(2005-12-20 15:31:00)

摘要:  SVG是英语「Scalable Vector Graphics」的简写。可以翻译为「可缩放的矢量图型」。它是基于XML标记语言来描述二维矢量图型的一种图形格式。SVG由W3C制定,是一个开放标准。 SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。SVG图形格式具有以下优点: 图像文件可读,易于修改和编辑 与现有技术可以互动融合。例如,SVG技术本身的动态部分(包括时序控制和动画)就是基于SMIL标准。另外,SVG文件还可嵌入JavaScript(严格的说应该是ECMAScript)脚本来控制SVG对象 SVG图形格式可以方便的建立文字索引,从而实现基于内容的图像搜索 SVG图形格式支持多种滤镜和特殊效果,在不改变图像内容的前提下可以实现位图格式中类似文字阴影的效果 SVG图形格式可以用来动态生成图形。例如,可用SVG动态生成具有交互功能的地图,嵌入网页中,并显示给终端用户 SVG Basic SVG Basic又称SVGB,是英语「Scalable Vector Graphics, Basic Profile」的简写。可以翻译为「可缩放的矢量图型标准的基本版」。它是矢量图型标准-SVG的一个子集,而主要目标是为掌上电脑等高端移动设备提供矢量图形显示格式。 SVG Tiny SVG Tiny又称SVGT,是英语「Scalable Vector Graphics, Tiny Profile」的简写。可以翻译为「可缩放的矢量图型标准的微型简化版本」。它是矢量图型标准-SVG的一个子集,而主要目标是为手机等低端移动设备提供矢量图形显示格式。 SVG技术细节 SVG主要支持以下几种显示对象: 矢量显示对象,基本矢量显示对象包括矩形、园、椭圆、多边形、直线、任意曲线等 嵌入式外部图像,包括PNG、JPEG、SVG等 文字对象 SVG可以实现动态和交互功能。在DOM模型的基础上,SVG开发设计人员可以利用ECMAScript或者SMIL来进行时序控制或对象的操纵。SVG虽然是文本格式,但是SVG支持利用gzip压缩算法减少文件尺寸,压缩後的文件通常用被称为「SVGZ文件」。 标准制定开发历史 W3C于2001年9月4日发布SVG 1.0。 ......

阅读全文(5577) | 评论:0