你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:文章管理 / 本期精品文章
用Delphi实现网络视频编程
 

朱明东

摘要 本文结合一个简单的视频聊天程序,阐述了网络视频技术的基本原理、开发步骤,并详细介绍了用Delphi开发网络视频程序的过程。

关键词 Delphi,视频聊天,AVICap

MSNQQ等聊天类的应用程序中,都应用到了网络视频技术。Delphi使用是Object Pascal语言是一种完全面向对象语言,可以开发出灵活强大的程序,开发视网络频程序也不在话下。一个完整的网络视频程序应包括以下几个关键技术:视频频捕、视频压缩与解压、数据传输。

一、视频频捕

1.基本概念

微软为软件开发人员提供了一个专门用于视频捕获的VFW (Video for Windows) SDK,为在Windows系统中实现视频捕获提供了标准的接口,从而大大方便了视频捕获程序的开发。由于VFW SDK只有VCVB版,没有Delphi版,因此需要在Delphi中重新声明DLL中的各个函数和变量(可以参考MSDN中的VC的函数声明以及变量定义,也可以从网上下载写好的头文件vfw.pas)。

VFWMicrosoft 1992年推出的关于数字视频的一个软件包,它能使应用程序数字化并播放从传统模拟视频源得到的视频剪辑。VFW的一个关键思想是播放时不需要专用硬件,为了解决数字视频数据量大的问题,需要对数据进行压缩。它引进了一种叫AVI的文件标准,该标准未规定如何对视频进行捕获、压缩及播放,仅规定视频和音频该如何存储在硬盘上,在AVI文件中交替存储视频帧和与之相匹配的音频数据。VFW给程序员提供VBXAVICap窗口类的高级编程工具,使程序员能通过发送消息或设置属性来捕获、播放和编辑视频剪辑。

2AVICap编程

AVICap支持实时的视频流捕获和单帧捕获并提供对视频源的控制,它能直接访问视频缓冲区,不需要生成中间文件,实时性很强,效率很高。同时,它也可将数字视频捕获到文件。AVICap编程的基本步骤包括:

第一步,创建AVICap窗口。通过capCreateCaptureWindow函数创建一个捕获窗,所有的捕获操作及其设置都以它为基础。窗口风格一般为WS_CHILDWS_VISIBLE

第二步,设置AVICap窗口的相关属性。通过capPreviewRate函数设置视频捕获速率;通过capPreview函数或capOverlay函数设置显示视频时的模式(普通的摄像头不能用overlay的方式);通过capSetVideoFormat函数设置视频格式(包括长度、宽度等);通过capDlgVideoSourcecapDlgVideoFormatcapDlgVideoCompression显示控制视频源、视频格式、视频压缩的对话框。

第三步,定义回调函数。定义捕获帧回调函数,获得每一帧的数据,并对每一帧的数据进行处理,比如压缩、传输到客户端等;定义窗口状态回调函数,获得窗口的状态;定义错误回调函数,获得并处理错误信息。

3.相关控件

虽然利用上面介绍的API可以实现视频捕获编程,但如果将这些API封装成一个控件则编程更为方便,这样的控件可以从常用Delphi网站找到。本文以TvideoCap控件为例,实现视频捕获。

(1)    相关属性及方法

DriverIndex该属性是用来指定视频捕获设备序号,从0开始。

DriverOpen该属性是用来确定是否打开指定的视频捕获设备。设置为True表示打开,False表示关闭。

CapToFile该属性是用来确定捕获的同时是否将捕获的画面保存成AVI格式的视频文件。设置为True表示保存,False表示不保存。

VideoPreview该属性是确定捕获的同时是否预览。设置为True表示预览,False表示不预览。

StartCapture该方法是用来捕获视频数据,执行该方法后才会触发相关事件。

其他的属性和方法这里就不一一介绍。

(2)    相关事件

OnVideoStream当捕获视频数据时触发该事件,在这里可以获得每一帧的数据,进行相关处理,发送到客户端。

 

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089