- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于DELPHI的网络视频编程
摘要:Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC、VC++等编程语言相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色,集成了多种语言的特点,可以开发出灵活强大的程序。在各种聊天程序、聊天室中,常常用到网络视频技术,开发网络视频程序的工具有很多,Delphi是很多程序员喜爱的一种。本文就笔者开发的基于Delphi的网络视频编程进行分析阐述,并给出部分Delphi的相关代码。
关键词:Delphi;网络视频;编程
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)14-3619-02
1 引言
在各种聊天程序、聊天室中,常常用到网络视频技术。Delphi具有强大的功能,也可以用Delphi来开发网络视频。本文就笔者开发的基于Delphi的网络视频编程进行分析阐述,并给出部分Delphi的相关代码。
2 视频捕获
视频捕获,可以使用微软提供的专门用于视频捕获的VFW(Video for Windows)SDK。VFW SDK为在Windows系统中实现视频捕获提供了标准的接口,从而大大方便了程序员的设计开发。
VFW是微软公司推出的关于数字视频的一个软件包,它能使应用程序通过数字化设备从传统的模拟视频源得到数字化的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。VFW使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。
VFW主要由以下6个模块组成:① AVICAP.DLL:包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口;② MSVIDEO.DLL:包含一套特殊的DrawDib函数,用来处理屏幕上的视频操作;③ MCIAVI.DRV:包括对VFW 的MCI命令解释器的驱动程序;④AVIFILE.DLL:包含由标准多媒体I/O(MMIO)函数提供的更高的命令,用来访问.AVI文件;⑤压缩管理器(ICM):用于管理的视频压缩/解压缩的编译码器(CodeC);⑥ 音频压缩管理器ACM:提供与ICM相似的服务,适用于波形音频。
AVICAP为应用程序提供了一个简单的、基于消息的接口,使之能访问视频和波形音频硬件,并能在将视频流捕获到硬盘上的过程中进行控制。AVICAP支持实时的视频流捕获和图像捕获并提供对视频源的控制。AVICAP在捕获视频方面具有一定的优势,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获到文件。
利用AVICAP进行视频捕获的开发步骤有:① 创建“捕获窗”;② 关联捕获窗和驱动程序;③ 设置视频设备的属性;④ 打开预览。
通过以上4步就可以建立一个基本的视频捕获程序。下面介绍实现基于Delphi的视频捕获。
使用微软的AVICAP32.DLL实现对视频摄像头控制:
1) 打开Delphi,新建一个工程,并新建一个窗口。先定义一个函数和部分常量(定义成全局类型)。
const WM_AP_START=WM_USER;
const DRIVER_CONNECT=WM_CAP_START+10
const SET_PREVIEW=WM_CAP_START+50
const SET_CALLBACK_VIDE05TREAM=WM_CAP_START+6;
const SET_SCALE=WM_ CAP_TART+53;
const SET_PREVIEWRATE=WM_CAP_START+52
const DRIVER_DISCONNECT=WM_CAP_START+11;
function capCreateCaptureWindowA(1pszWindowName:PCHAR;
dwStyleaongint;x:integer;y:integer;nWidth:integer;
nHeight:integer;ParentWin:HWND;nId:integer):HWND;
STDCALL EXTERNAL AVICAP32.DLL
2) 在窗口上放置一个Panel,添加2个按钮,Caption设置为“开始”和“停止”,并定义一个全局变量,var CWin2:THandle;//定义捕捉窗句柄。
“开始”按钮代码如下:
CWin2: =capCreateCapture WindowA(My CAPWin, WS_CHILD or WS_VISIBLE,
Panell.Left, Panell.Top, P
文档评论(0)