基于DirectShow的网络视频点播系统设计方法创新
0 引 言
在人们平时的生活中,经常希望能够随时收看到错过的视频节目,随着视频点播系统的问世,使这种想法慢慢变为现实。视频点播系统是集通信网络技术、多媒体技术、计算机和数据库技术于一体的崭新的视频服务系统。此系统还运用了智能视频流技术,针对不同的网络带宽和传输速度采取不同的传输方式。视频点播是近年来新兴的传媒方式,它是在原有的文字、图片等静态信息浏览的基础上,增加了视频和音频的动态浏览等多媒体点播服务[1?2]。这样,用户就可以随时随地浏览视频,极大地丰富了人们的网络生活内容[3]。
1 DirectShow技术
DirectShow[4]是一个基于Windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括MPEG、AVI、MP3和WAV文件,同时也支持使用WDM驱动或早期的VFW驱动来进行多媒体流的采集。DirectShow还整合了其他的 DirectX技术,不仅可以自动侦测并使用可利用的音视频硬件加速,还支持没有硬件加速的系统。DirectShow使用了一种叫Filter Graph的模型来管理整个数据流的处理过程,参与数据处理的各个功能模块叫作过滤器(Filter),各个模块的Filter在Filter Graph中按一定的顺序连接成一条“流水线”式的工作模式来协同工作。
2 系统设计
本文设计的基于DirectShow的网络视频点播服务系统,实现的主要功能包括视频文件的播放、网络接收及客户端与服务器的连接等。具体来讲,它包括服务器框架的搭建与实现,视频信息的显示、播放,视频管理中的添加、修改、删除等。系统授权的用户可以在线点播视频文件,部分用户还可以向服务器上传视频,编辑视频信息,删除自己以前上传的视频 [5?6]。
网络视频点播服务系统主要分为服务器框架的设计与实现、客户端的设计与实现、服务器与客户端的网络连接与网络数据的接收[7?8]。
2.1 服务器框架的设计与实现
服务器一般要求具有较高的处理速度和大的存储容量,用于存放媒体文件和管理整个网络。服务器程序负责管理本地的文件资源,获取文件的描述信息,维护节目列表,并在客户机发出访问请求时,及时准确地响应客户机的请求,提供节目列表给客户机查看或者点播。
2.2 客户端的设计与实现
客户端程序与服务器建立连接、向服务器发送指令、接收来自服务器的媒体数据。为了使客户机接收到的媒体数据同步播放,这里使用DirectShow来实现。DirectShow中采用开发Source Filter的方式接收网络数据,并将数据引入到Filter Graph中。
图2为客户端的VC工作区结构。
图2 客户端的VC工作区结构
2.3 基于Socket的C/S交互模型
通信开始前,对于客户机与服务器分别创建一个基于CSocket类的新类CClientSocket和CServerSocket , 然后分别构造一个客户机套接字和服务器套接字进行通信。图3为TCP流程的基于Socket的C/S交互模型。
2.4 网络数据接收
在网络数据接收时,DirectX定义了一系列类处理数据的来源,当需要读取数据到缓存时,通过这些类将需要的数据传送出去,这种方式即拉模式。在拉模式下,为了将Source Filter内的数据读出,需要在Source Filter上创建一个接口,以便播放网络接收来的文件。
图3 基于Socket的C/S交互模型
图4为网络接收的VC工作区结构。
图4 网络接收的VC工作区结构
3 运行结果测试
3.1 服务器程序
服务器端的程序运行后如图5所示。
图5 服务器的程序界面
各部分表示如下:
① 显示服务器端可以提供给客户机的节目列表。服务器负责整个网络中文件信息的管理,并将可点播的节目列表提供给客户机,其中包含的信息如文件名及路径、文件类型(MPEG1、MPEG2、MP3、AVI等)、文件的大小、该文件的数字代号(Program ID,PID)。
② 节目列表文件增加按钮。点击按钮后,用户可以根据文件浏览对话框通过路径找到需要添加的文件,并加入到节目列表中。当用户确定选择添加某个文件后,系统会弹出如图6所示的对话框,用户可给该文件指定一个PID操作。
③ 节目列表文件删除按钮。当用户需要从文件列表中删除某一文件时,选中文件后,用户首先要单击本按钮即可将节目列表中的文件删除。
④ 节目项的编辑按钮。当用户需要改变文件列表中的某一文件时,首先选择要编辑的文件,然后单击本按钮即可在弹出的对话框中对文件的属性如PID等进行编辑了。
⑤ 服务器程序的状态信息栏。显示服务器的主机名、IP地址、命令控制端口等信息。
添加、编辑按钮触发后的程序界面,如图6所示。
图6 添加、编辑按钮触发后的程序图
各部分表示如下:
① 文件的完整路径(用户指定)。
② 文件大小(自动检测)。
③ 文件类型(自动检测)。
④ 该文件的惟一数字代号(用户指定)。
⑤ 确定将所选文件加入到节目列表中。
⑥ 取消将所选文件加入到节目列表中。
3.2 客户端程序 [本文由WWw. 提供,专业写作毕业论文和教学教育职称论文,欢迎光临]
服务器端的程序运行后如图7所示,各部分说明如下:
① 客户机从服务器查询到的可供点播的节目列表。当客户机与服务器成功建立网络连接之后,客户机通过访问服务器,可以获得服务器端的点播文件节目列表。
② 连接按钮。当客户端需要连接服务器时,用户单击本按钮可以指定需要连接的服务器的IP地址,然后尝试与指定的服务器IP地址建立连接,弹出的对话框,如图9所示。
③ 刷新节目列表按钮。当服务器端的节目列表变动后,客户端可以通过点击本按钮,刷新服务器上的节目列表。
④ 节目播放按钮。当用户从节目列表中选定好需要播放的文件后,单击本按钮就可以对需要播放的文件进行播放。
⑤ 暂停播放按钮。可以对正在播放的文件进行暂停播放。
⑥ 停止播放按钮。可以对正在播放的文件进行停止播放操作。
⑦ 信息栏。在客户端信息档,可以用于显示客户机的主机名、IP地址等信息。
⑧ 状态栏。可以用于显示客户机与服务器端是否建立连接,是否有文件播放等状态信息。
图7 客户端的程序界面
客户机与服务器连接时IP地址对话框,如图8所示。
图8 IP地址对话框
3.3 视频播放
图9为视频播放界面,当点击客户端文件列表中的视频,会进行相应的视频文件播放,测试中使用的视频格式为AVI格式文件。
图9 视频播放画面
4 结 论
网络视频点播是伴随着音频、视频处理技术及网络通信的快速发展而日益受到人们欢迎的技术,也是多媒体应用技术中的热门方向,它涉及到的知识面很广泛,技术含量比较高。本文从系统设计,分模块设计,到编码测试,最终实现了视频点播功能,为校园多媒体教室点播系统等提供了技术参考。
参考文献
[1] 杨键.VOD互动业务建设的若干问题研究[J].科技传播,2012,6(12):199?200.
[2] [荷]柳伯斯 P,[美]阿伯斯 B,[美]萨利姆 5程序设计[M].2版.北京:人民邮电出版社,2012.
[3] 张海藩.软件工程导论[M].北京:清华大学出版社,2004.
[4] 陆琪明.DirectShow 实务精选[M].北京:科学出版社,2004.
[5] 谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[6] 郑莉,董渊.C++语言程序设计[M].北京:清华大学出版社,2001.
[7] [美]WILLIAMS C#.NET技术内幕[M].北京:清华大学出版社,2004.
[8] BAIN Tony, GOSNELL Denise. 和SQL Server 2000高级编程?创建高效数据层[M].北京:清华大学出版社,2002.