无线视频点播系统、方法及avi文件解析、流化方法

文档序号:7973052阅读:176来源:国知局
专利名称:无线视频点播系统、方法及avi文件解析、流化方法
技术领域
本发明涉及提供信息服务的系统和方法,实现了一套无线异构局域网环境下的视频点播系统,并提出若干优化无线异构局域网条件下的流媒体播放效果的方法。
背景技术
随着计算机多媒体技术和网络技术的发展,流媒体播放技术已得到了广泛的应用。这项技术允许观众在线收看多媒体节目,从而可以实现视频点播、视频会议等一系列的功能。在用于视频服务器的开放源代码软件中,RealNetworks公司的Helix Server和Apple公司的Darwin Stream Server,使用广泛,稳定性较高,性能优秀,但代码量大,结构复杂,不适合作结构上的改进,可扩展性相对较差;而采用LGPL协议开放源代码的LIVE.COMStreaming Media,提供了对多种流媒体和视频压缩格式的支持、对RTP/RTCP协议的支持,具有较强的稳定性、实用性,封装成库,结构清晰,适于在其基础上搭建服务器。LIVE.COM Streaming Media同样可用于客户端。
另一方面,无线通信技术在近年来高速发展。手机在几年内得到普及,掌上电脑(包括Pocket PC和Palm)也走进了千家万户。Pocket PC2003操作系统不支持DirectX,因此在PDA上开发播放器时DirectShow、DirectDraw、DirectSound等多媒体开发库无法使用;Pocket PC本身提供了一套开源播放器——PocketMVP,可以用于开发。
无线局域网与同级别的有线网相比,带宽和数据传输速率总要低一些,在传输多媒体流这样高带宽需求的数据时会带来一定限制。Pocket PC的主频和内存都不能和台式机相比。

发明内容
本发明的目的是提供一种基于无线异构局域网的视频点播系统,该系统将流媒体技术中的视频点播与无线通信结合起来,能让PDA通过无线网络播放流媒体数据,而且系统效率高。
为实现上述目的,本发明基于无线异构局域网的视频点播系统,包括接入无线局域网的流媒体服务器和至少一个客户端,流媒体服务器和各客户端采用RTP、RTCP和RTSP协议通信;其中,所述流媒体服务器采用单线程并发服务器,它包括RTSP服务器和任务管理器,该任务管理器用以监听RTSP协议的连接端口并负责调度各路媒体流,当流媒体服务器接到点播指令后,在其任务管理器中注册所点播的媒体流,使任务管理器每隔一定时间调用RTSP服务器,将该媒体流的媒体数据读入缓冲区、封装成RTP数据报发送给客户端;所述客户端采用PDA,每个客户端均包括一个任务管理器,每个客户端通过其任务管理器的调度,完成该客户端RTP数据报的接收和RTCP报告的收发。
上述视频点播系统的点播方法,包括以下步骤流媒体服务器创建一个RTSP服务器的实例并初始化,流媒体服务器建立一个任务管理器实例用以监听RTSP协议的连接端口,并负责调度各路媒体流;客户端通过无线局域网向流媒体服务器发出连接请求,当接到客户端连接请求后,RTSP服务器新建一个RTSPClientSession对象,RTSPClientSession对象与所述客户端进行RTSP协议规定的对话,并从MediaSession和MediaSubsession类对象实例中获取流的信息,调用GroupSock类对象实例将所获取的流的信息发送给所述客户端。
其中,RTSPClientSession对象与所述客户端进行的RTSP对话至少包括流媒体服务器在接到SETUP指令后,建立FramedSource类对象实例,从文件读入媒体数据到FramedBuffer缓冲区,建立RTPSink类对象实例,将FramedBuffer缓冲区的媒体数据进行RTP封装并发送,建立MediaSession和MediaSubSession类对象实例,描述会话和媒体流;以及,流媒体服务器接到PLAY指令后,在其任务管理器中注册待播放的媒体流。
上述视频点播系统的AVI文件解析和流化方法,包括以下步骤解析AVI文件,分成音频流和视频流两路;解析所述视频流,抽取出视频帧,封装为RTP数据报的格式后发送到客户端;同时,解析所述音频流,抽取出音频块,封装为RTP数据报的格式后发送到客户端。
在将视频帧封装为RTP数据报前,还可包括对该视频帧进行编码转换的步骤,编码转换的方式采用下述三种方式中的至少一种提高压缩比例、采用解码算法较简单的编码方法和降低视频分辨率。
本发明将流媒体技术中的视频点播与无线通信结合起来,让PDA能通过无线网络播放流媒体数据,具有广泛的商用、军用和民用价值。其流媒体服务器采用单线程模型,通过计时器控制,由一个线程负责包括连接客户端、进行RTSP会话、读取流媒体文件、发送RTP和RTCP包等所有的工作,彻底避免了多线程间反复切换需要消耗大量系统资源的缺陷。
流媒体服务器是采用LIVE.COM Streaming Media流媒体软件开发库实现的,其结构清晰,具有较强的稳定性、实用性,并且支持多种流媒体和视频压缩格式。
流媒体服务器将视频帧封装为RTP数据报前,还对视频帧进行编码转换、码率控制等优化,来减少通过无线网络传输的数据量和PDA上的解码运算量,从而使得在无线局域网带宽和数据传输速率低,PDA主频和内存较低的情况下,在PDA上能够还原出流畅的视频画面。


图1为本发明中流媒体服务器所采用的单线程并发模型的架构图示;图2为RTSP服务器的内部结构图示;图3为客户端和RTSP服务器的RTSPClientSession进行典型的RTSP会话的图示;图4为流媒体服务器对AVI格式媒体流的处理过程的图示;图5为播放器网络端完成音频、视频接受和RTCP控制报告的收发工作的整体架构图示。
具体实施例方式
本实施例通过实现一套台式PC机上的流媒体服务器,来向Pocket PC上的流媒体播放器提供视频点播服务。目标是完成基本的服务器,并对平台扩展,PDA在视频采集后,可利用对称编码技术完成传输;同时允许将码率控制、编码转换(Transcoding)、应用层组播等功能添加到服务器上,并完成代理服务器。服务器和播放器之间的通信,采用基于RTP、RTCP、RTSP的通信协议;其中,RTSP协议中通过SDP协议来传输流媒体的格式信息。此套视频点播系统,向流媒体播放器RealPlayer兼容,即用户可以使用普通的IBM PC兼容机上的RealPlayer与流媒体服务器通信。为此,服务器仿照Real系列产品之间的通信协议进行工作。
本实施例视频点播系统中,流媒体服务器和客户端采用802.11b协议的无线局域网连接,其理论带宽为11Mbps,覆盖范围要求较小,局限在几个AP之内。
流媒体服务器采用台式PC机,配置如下硬件配置Pentium 4 1.8GHz CPU,128 Mb SDram,IDE硬盘;操作系统Windows 2000或Windows XP;服务器软件用Microsoft Visual C++6.0开发。
客户端采用HP iPAQ Pocket PC h2210掌上电脑,配置如下硬件配置400MHz Intel XScale处理器、64Mb内存(56Mb主存)、CF 802.11无线网卡;操作系统Microsoft Pocket PC 2003;客户端的播放器用Microsoft Embedded Visual C++4.0开发。
下面以流化AVI文件为例,并结合附图,介绍一下流媒体服务器的工作流程和设计实现。
图1描述了本发明中流媒体视频服务器所采用的单线程模型,通过计时器控制,由一个线程负责包括连接客户端、进行RTSP会话、读取流媒体文件、发送RTP和RTCP包等工作。服务器启动时创建一个RTSP服务器的实例并初始化,建立一个任务管理器(TaskScheduler)实例用以监听RTSP协议的连接端口并负责调度各路媒体流。
图2描述了RTSP服务器的内部结构。当接到客户端连接请求时,RTSP服务器(RTSPServer)新建一个RTSPClientSession对象与客户端进行RTSP协议规定的对话,并从MediaSession和MediaSubsession类对象实例中获取流的信息。网络部分封装在Groupsock类及其相关类中。
图3描述了客户端和RTSPClientSession进行典型的RTSP会话的过程。流媒体服务器接到SETUP指令后建立FramedSource类对象实例用于从文件读入媒体数据,FramedBuffer缓冲区以及RTPSink类对象实例用于将媒体数据进行RTP封装并发送;建立MediaSession和MediaSubsession类对象实例用以描述会话和媒体流。服务器接到PLAY指令后,在任务管理器(TaskScheduler)中注册待播放的媒体流,使得TaskScheduler每隔一定时间调用MediaSubsession类的函数,将文件读入缓冲区,并发送RTP数据报。
图4描述了服务器对AVI格式媒体流的处理过程。AVI格式音频、视频封装在一起,流化前由服务器通过AVIDemux类和AVIProgramStreamParser类将两路流分开。随后,再通过处理视频流的AVIVideoStreamFramer、AVIVideoStreamParser和处理音频流的AVIAudioStreamFramer、AVIAudioStreamParser等类将视频帧和音频块的数据抽取出来,送往VideoRTPSink和AudioRTPSink,封装为RTP数据报的格式后发送到客户端。
为使服务器与RealPlayer兼容,要采用RTP和RTSP与RealOnePlayer通信,必须遵守RealNetworks公司自己的通信协议细节,但细节内容没有公开。服务器响应针对AVI文件的DESCRIBE指令时,AVI文件头的信息(特别是编码方式的信息)并未直接发送到客户端,而是加密后以“OpaqueData”形式发送至播放器。其中的加密解密算法是不公开的。服务器的具体作法是通过一个程序和Real Server模拟连接,截获“OpaqueData”后保存为文件,供流媒体服务器使用。
解析AVI文件时,采用了两级解析。首先把AVI文件解析成两路流,一路音频,一路视频;再分别解析这两路流,分解成音频块和视频帧,再分别封装成数据报发送出去。
流化传输时,采用RealNetworks公司系列产品的RTP封装格式,对视频帧增加8个字节的附加头,标记数据报在一个数据帧中的位置。
实现VCR操作中的快进、快退时,服务器接收到播放器通过RTSP连接连续发出的两条指令——“PAUSE”和“PLAY”。接到“PAUSE”指令后,服务器停止RTP数据报的发送,同时停止从文件读取媒体流;接到“PLAY”指令后,从头开始读取媒体流,并且根据跳跃到的位置计算需要跳过的帧数和字节数,再跳至响应位置读取数据,读入缓冲区,网络部分同时也重新开始封装并发送RTP数据报。
为了在PDA上能够还原出流畅的视频画面,流媒体服务器在将视频帧封装为RTP数据报前,还对视频帧进行编码转换,具体可采用以下方式可以提高压缩比例,减小与客户端通信时的带宽占用;或者采用解码算法较简单的编码方法,减轻客户端的解码压力;或者针对手持设备,即根据手持设备屏幕分辨率较小的特点,将原来分辨率较高的视频转换为低分辨率视频,以节省网络带宽和解码资源。
下面以AVI格式文件为例,并结合附图,介绍一下播放器的实现细节。
播放器的网络端与服务器结构类似,采用任务管理器(TaskScheduler)机制进行调度,完成音频、视频的接收和RTCP控制报告的收发工作,如图5所示。
播放器在Pocket PC自身的开源播放器——PocketMVP基础上开发。
PocketMVP本身具有细致的模块化封装,播放AVI格式文件采用了以下模块PocketMVP.exe是主程序,调用各模块,建立播放线程并完成播放功能;PlaylistEditor.exe是设置播放列表的程序;AVIStream.dll用于从中层缓冲区读取AVI流;Divx.dll是Divx的解码器;GetFileName.dll负责弹出对话框得到用户请求播放的文件或URL;init.dll用于初始化;InputMediaBuffering.dll从文件读取媒体流的内容并存入缓冲区;InputMediaHTTP.dll通过HTTP协议下载文件并存入缓冲区;InputMediaRTSP.dll通过RTSP协议连接流媒体服务器并接受RTP流媒体数据报,存入缓冲区;MP12LibCE.dll是mp1、mp2的解码器;MP3LibCE.dll是mp3的解码器。
PocketPC工作流程是利用TaskScheduler进行调度,从Source读入媒体数据,经过处理后交由Sink处理。
PocketPC中从文件读取媒体数据并存入缓冲区是一个单独的工程,并生成了单独的DLL文件,因此要重新建立一个从网络读取数据的缓冲区并替换掉原有的DLL文件。为此,运用或创建了以下相关类MultiFramedRTPSource类,继承自RTPSource类,成员函数networkReadHandler从网络读取RTP数据报,正确验证、排序、组装之后存入缓冲区,再由成员函数doGetNextFrame经过数据完整性验证、数据报附加头处理后得到一个视频帧或音频块;AVIAudioRTPSource类,继承自MultiFramedRTPSource类,将从网络收到的RTP音频数据以特定格式存入缓冲区,主要成员函数是processSpecialHeader;AVIVideoRTPSource类,继承自MultiFramedRTPSource类,将从网络收到的RTP视频数据以特定格式存入缓冲区,主要成员函数是processSpecialHeader;BufferPacket类,描述一块缓冲区,网络上接收到的RTP数据报直接存储在该缓冲区中,成员函数fillinData调用RTPInterface类的handleRead成员函数完成网络读取并保存到缓冲区的操作,成员函数use将缓冲区中的数据复制到另一个缓冲区中,以完成数据报的排序、组合;Reordering类,是客户端中间层次的缓冲区,分配块状缓冲区,向下接收RTP数据报并排序、组装、缓存,向上提供一个单独、完整、经过组装的视频帧或音频块,成员函数storePacket把收到的RTP数据报按一定的顺序和位置组装起来,缓存在一起,成员函数getNextCompletedPacket将返回已组装好的一个视频帧或音频块,若组成该帧的RTP数据报还未全部到达,则会根据时间域值等待一段时间,或者返回不完整的帧。
权利要求
1.基于无线异构局域网的视频点播系统,其特征在于包括接入无线局域网的流媒体服务器和至少一个客户端,流媒体服务器和各客户端采用RTP、RTCP和RTSP协议通信;其中,所述流媒体服务器采用单线程并发服务器,它包括RTSP服务器和任务管理器,该任务管理器用以监听RTSP协议的连接端口并负责调度各路媒体流,当流媒体服务器接到点播指令后,在其任务管理器中注册所点播的媒体流,使任务管理器每隔一定时间调用RTSP服务器,将该媒体流的媒体数据读入缓冲区、封装成RTP数据报发送给客户端;所述客户端采用PDA,每个客户端均包括一个任务管理器,每个客户端通过其任务管理器的调度,完成该客户端RTP数据报的接收和RTCP报告的收发。
2.根据权利要求1所述的基于无线异构局域网的视频点播系统,其特征在于所述流媒体服务器是采用LIVE.COM Streaming Media流媒体软件开发库实现的。
3.基于权利要求1所述视频点播系统的点播方法,其特征在于包括以下步骤流媒体服务器创建一个RTSP服务器的实例并初始化,流媒体服务器建立一个任务管理器实例用以监听RTSP协议的连接端口,并负责调度各路媒体流;客户端通过无线局域网向流媒体服务器发出连接请求,当接到客户端连接请求后,RTSP服务器新建一个RTSPClientSession对象,RTSPClientSession对象与所述客户端进行RTSP协议规定的对话,并从MediaSession和MediaSubsession类对象实例中获取流的信息,调用GroupSock类对象实例将所获取的流的信息发送给所述客户端。
4.根据权利要求3所述的点播方法,其特征在于所述RTSPClientSession对象与所述客户端进行的RTSP对话至少包括,流媒体服务器在接到SETUP指令后,建立FramedSource类对象实例,从文件读入媒体数据到FramedBuffer缓冲区,建立RTPSink类对象实例,将FramedBuffer缓冲区的媒体数据进行RTP封装并发送,建立MediaSession和MediaSubSession类对象实例,描述会话和媒体流;以及,流媒体服务器接到PLAY指令后,在其任务管理器中注册待播放的媒体流。
5.基于权利要求1所述视频点播系统的AVI文件解析和流化方法,其特征在于包括以下步骤解析AVI文件,分成音频流和视频流两路;解析所述视频流,抽取出视频帧,封装为RTP数据报的格式后发送到客户端;同时,解析所述音频流,抽取出音频块,封装为RTP数据报的格式后发送到客户端。
6.根据权利要求5所述的AVI文件解析和流化方法,其特征在于在将视频帧封装为RTP数据报前,还包括对该视频帧进行编码转换的步骤,编码转换的方式采用下述三种方式中的至少一种提高压缩比例、采用解码算法较简单的编码方法和降低视频分辨率。
全文摘要
本发明涉及基于无线异构局域网的视频点播系统及方法,该系统包括接入无线局域网的流媒体服务器和至少一个客户端,流媒体服务器和各客户端采用RTP、RTCP和RTSP协议通信;其中,所述流媒体服务器采用单线程并发服务器;所述客户端采用PDA,每个客户端均包括一个任务管理器,每个客户端通过其任务管理器的调度,完成该客户端RTP数据报的接收和RTCP报告的收发。本发明将流媒体技术中的视频点播与无线通信结合起来,让PDA能通过无线网络播放流媒体数据,具有广泛的商用、军用和民用价值。其流媒体服务器采用单线程模型,彻底避免了多线程间反复切换需要消耗大量系统资源的缺陷。
文档编号H04N7/26GK1972439SQ20061015744
公开日2007年5月30日 申请日期2006年12月8日 优先权日2006年12月8日
发明者袁春, 杨溢欣, 钟玉琢 申请人:清华大学深圳研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1