首页>论文>正文
日期
09/08
2006
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

一种网络视频传输的实现
收藏
2006-09-08 09:18:26来源: 铁武辉

摘要:视频传输整个过程中涉及到:视频图像压缩、解压缩,以及网络传输协议UDP/IP、TCP/IP。其中图像压缩模块H.263为国际电联的一个草案标准,它是一个面向运动图像实时传输的压缩方法,每秒可以达到30帧,达到了运动图像的要求。本文所做的主要介绍了视频传输,压缩、解压缩技术;如何实现视频传输。

关键字    视频   网络传输   H.263

1 引言

网络化与多媒体图像,已经成为计算机系统今后发展的两个重要的趋势。如今,网络技术与多媒体技术已经运用到数字娱乐、视频会议、远程医疗等诸多方面,两种技术不断融合和发展,逐渐改变了人们的生活和工作的方式。其中,视频图像的传输,关乎视频系统的质量。所以在有关视频及传输的开发中,要充分的考虑传输网络,压缩、解压缩效率等各个因素。

目前,许多试验性的高速宽带网络都把视频传输技术和应用作为研究的重点课题。在Internet传输数据由许多的困难,尤其对于多媒体数据,比如视频数据,其数据量非常的大,这就成为了网络传输的一个瓶颈;另一个网络传输的巨大瓶颈,其主要原因为:Internet为一个无连续的数据包转发机制,主要是为突发性的数据传输设计,这就不适于对连续媒体流的传输。为了在Internet上有效的、高质量的视频流,需要有多种技术的支持,其中数字视频的解压缩编码技术是Internet视频传输的最大关键技术之一。

最为常用的编/解码标准有国际电联的H.261和H.263和国际标准化组织的MPEG系列。其中H.263  为国际电联的一个标准草案,是为低码率通信而设计的。它在许多的应用中可以取代H.261。其算法与H.261一样,但做了一些改善,以提高性能和纠错能力。本文采用了H.263标准,作为压缩算法,实现了基于普通网络的一种视频传输。

2 视频传输实现

   视频传输中包含了,视频采集、视频的压缩、解压缩,视频显示。可将整个的过程划分为:采集模块、转换压缩模块、网络传输模块,转换解压缩模块,显示部分模块。(参见图2.1)

2.1  视频捕获及VFW
在视频传输中,获得数字视频是一个关键的前提。因为这是后续工作的前提。在Video For Windows(VFW)出现之前,捕捉数字视频是一项非常复杂的工作。自从Visual C++ 4.0 版支持VFW后,就给视频捕获编程带来了很大的方便。

VFW的一个关键思想是播放时,不需要专用硬件。VFW给程序员提供.VBX和.AVICap窗口类的高级编程工具,使得程序员能够方便的捕捉视频、播放和编辑视频剪辑。现在的用户不必安装VFW了,Windows 95及以上本身包括了VFW。 VFW主要由六个模块组成。分别为:AVICAP.DLL、MSVIDEO.DLL、MCIAVI.DRV、AVIFILE.DLL、压缩管理器(ICM),音频压缩管理器(ACM)。

AVICAP.DLL包含了执行视频捕获的函数,为视频设备(如USB摄像头)驱动提供了一个高级接口。MSVIDEO.DLL用一套特殊的DrawDib函数来处理屏幕上的视频操作,可以较好的显示视频数据。

2.2  UDP传输协议简介
用户数据包协议(UDP)是一个简单的面向数据报的运输层transport layer协议。UDP是一个无连接协议,传送数据之前源端和终端不需要建立连接,当它要传送数据时,就是简单的把来自应用程序的数据尽可能快的送到网络上面;而由于传送数据不建立连接,因此就不需要维护连接状态,包括收发状态等,因此一个服务器可同时向多个客户端发送相同的信息。UDP在这种机制下,吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、网络带宽、源端和终端主机的性能。

虽然UDP为一个不可靠的协议,但它是分发信息的一个理想协,特别如数据量较大,但相对传输质量要求不是很高的数据,如视频数据、音频数据,图像数据等。所以采用UDP协议其特点更为突出。

2.3  H.263简介
IP视频的关键技术是压缩,有了压缩才使得网络的传送成为可能,用户就可以不必升级现有的网络,这就节省了很大的成本。

H.263提供了一种有效的方法,使用户提高带宽的利用率:例如以128kbps的速率即能达到完全动画视频(30帧/秒)的效果。H.263经过不断的升级完善,如今已经逐渐成熟,它在低带宽上传输高质量的视频而受到欢迎。而且H.263的码率很低,单位码率可以小于64k,支持很多的图像格式,包括了在视频和电视信号中常见的QCIF,CIF,EDTV等。H.263采用运动视频编码中常见的编码方式,将编码方式分为帧内编码和帧间编码两个部分。H.263的编码速度快,其设计的编码延时不超过150ms。为了达到这些目标,H.263采用了如下的方法:⑴信源编码器基于通用中间格式(CIF),使其可以同时应用于625线和525线两种电视标准;⑵采用可减少时间冗余的帧间预测和可减少空间冗余的残留信号编码方式。⑶允许采用无限制运动矢量模式,在该模式中,运动矢量被允许指到图片的外部,可使用更大的运动矢量;⑷信源编码器的主要原理是预测,块变换和量化。H.263有五种标准的图像格式为:sub-QCIF,QCIF,CIF,4CIF和16CIF。

3  实现过程

开发环境:Windows 2000 Professional   Visual C++ 6.0  H.263开发包
单向数据流:

                 

3.1  采集模块
所需库类:VFW32.lib   加载vfw(Video for Window)开发包
       Winmm.lib   支持多媒体编程的接口
方法成员与属性变量为,参见下图UML图为。

 

3.2  Socket传输模块
 类名:Dsocket  : public Csocket
下面为UML图   DSocket类图

 

3.3  压缩解压缩模块
压缩、解压缩模块为核心模块。
支持库:H.263快速开发包。
编码器  H.263编码器的使用方法
//初始化编码库
  InitH263Encoder(&cparams);
//如果需要转换RGB到YUV,先需要调用下面的函数初始化
InitLookupTable();
//把RGB转化为与YUV
ConvertRGB2YUV(IMAGE_WIDTH,IMAGE_HEIGHT,data,yuv);
// Finally, terminate the encoder
// ExitH263Encoder();
解码器  解码的使用方法:
//初始化解码器
   InitH263Decoder();

结构为图为;

     

参考文献

[1] Davis Chapman著 骆常乐译-《学用Visual C++ 6.0》 北京-清华大学出版社
[2] 求实科技-黄超编著《Windows网络编程》2003年1月第一版 北京-人民邮电出版社
[3] 《DirectShow实务精选》 陆其明
[4]  《H.263视频压缩协议介绍》 慧聪网安防行业频道  2005-1-1
[5]  余振建  周 健  戴梅萼-《面向运动图像远程实时传输的H.263压缩方法的分析与优化》 文章类型:设计应用   2004-10-17
[6]  《H.263 Video Coding》  ftp://mm-ftp.cs.berkeley.edu/