基于DirectShow的网络视频点播系统的设计与实现
   来源:现代电子技术     2021年01月23日 10:12

基于DirectShow的可控视野视频点播系统的设计与实现

雷文礼 任新成 张栋 高瑛

摘 要: 随着计算机技术和Internet日新月异的的发展,宽带VOD视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业的青睐。设计了一种基于DirectShow技术的视频点播系统,该系统采用VC编程语言实现,基于C/S架构搭建通信网络,通过套接字实现多台客户机与服务器间的通信。测试结果表明,系统能够正常运行,视频播放流畅,可以满足网络视频点播的需求。

关键词: 视频点播; Direct Show; C/S架构; 套接字

中图分类号: TN915.4?34 文献标识码: A 文章编号: 1004?373X(2015)07?0031?03

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 服务器框架的设计与实现

服务器一般要求具有较高的处理速度和大的存储容量,用于存放媒体文件和管理整个网络。服务器程序负责管理本地的文件资源,获取文件的描述信息,维护节目列表,并在客户机发出访问请求时,及时准确地响应客户机的请求,提供节目列表给客户机查看或者点播。

图1为服务器的VC工作区结构。

图1 服务器的VC工作区结构

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 客户端程序

服务器端的程序运行后如图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,[美]萨利姆 F.HTML5程序设计[M].2版.北京:人民邮电出版社,2012.

[3] 张海藩.软件工程导论[M].北京:清华大学出版社,2004.

[4] 陆琪明.DirectShow 实务精选[M].北京:科学出版社,2004.

[5] 谭浩强.C程序设计[M].北京:清华大学出版社,2005.

[6] 郑莉,董渊.C++语言程序设计[M].北京:清华大学出版社,2001.

[7] [美]WILLIAMS Mickey.Visual C#.NET技术内幕[M].北京:清华大学出版社,2004.

[8] BAIN Tony, GOSNELL Denise. VB.NET和SQL Server 2000高级编程?创建高效数据层[M].北京:清华大学出版社,2002.

文章 文件 服务器