基于Web Service的流媒体测试系统
发布时间:2006-10-14 4:14:04   收集提供:gaoqian
李金通 诸瑾文 沈泽敏 中国电信上海技术研究院


  摘要:随着流媒体业务的发展,我们需要一种有效的手段能够对流媒体的播放质量状况进行测试。本文提出了一种将Web Service与自行开发的客户端点播程序相结合的方案,从而得到一种少量人工干预、自动化程度高、结果精确的流媒体测试系统。

  关键词:流媒体 测试 Web Service

  1引言

  流媒体(Streaming Media)技术的出现,使得在网络上观看和传输影音文件变为一种现实。通俗的讲,所谓的流媒体技术,就是将视音频文件经过压缩处理后,放在网络服务器上进行分段的传输,客户端计算机不用将整个的视音频文件下载到本地,便可以即时收听和收看。但在目前的网络带宽的限制下,为了达到网络上流式传播文件的目的,视音频文件经过压缩处理,减小文件的大小,从而使影音文件的品质有所下降。而且,流媒体业务是一种宽带业务,对于网络带宽、抖动、延迟和丢包率都有较高的要求。因而用户端在使用流媒体服务时,尤其是在忙时段,可能会产生黑屏、马赛克、图像停格、声音时断等现象。

  为了解决流媒体在播放时出现的问题,首先应该找到问题的详细、精确描述,而现今对流媒体的测试手段并不是很多,大致可以分为两类:1、最原始最简单的测试方法就是让大量测试人员在不同时段、不同的地方点播流媒体,当遇到黑屏、马塞克、图像停格、声音时断等现象时作记录,最后再汇总。这种做法的优点是与最终用户的点播感受一致,但是费时费力,测试人员必须一直仔细地盯着画面,很容易疏忽掉一些细节,而且统计工作也非常繁琐;2、使用专门的测试设备进行测试,可以模拟打开、关闭连接,其优点就是自动化,大大减轻测试人员的工作量,但是这种测试手段偏重于对流媒体服务器进行压力测试,测试设备不会真正进行播放,无法真实模拟用户的使用场景,当然也无法检测到停顿、马赛克等现象。本系统试图代替人工点播测试,实现一种成本低廉、自动记录异常、分析结果准确、统计方便、少量人工参与的流媒体测试系统。

  2系统架构概述

  从流媒体点播的基本思想来看,任何一台连入Internet的计算机都有可能成为流媒体用户,也就是说安装了我们开发的客户端点播程序的计算机都可以成为本系统的一个测试点,这就要求系统具有远程通信的能力。并且,待测流媒体以及点播客户可能会不断变化,所以要求服务器与客户端之间的关系更为灵活、松散,这对系统提出了松散耦合的需求。另外,点播设备上运行的客户端程序与服务器端的实现可能是异构的,这里需要将两者集成为一个相互协调互动的Web应用。

  Web Service体系使用SOAP协议实现应用与服务之间的通信,用WSDL文件对服务进行标准的描述;它具有完全的平台、语言独立性,它进行了更高程度的抽象,只要遵守Web Service的接口即可进行服务的请求与调用;同时,SOAP一般使用标准的HTTP协议,可以透明地穿越防火墙;Web Service可以在Web上发布,发布的服务可以在UDDI上进行注册以便被检索使用;而且,通过采用Web Service,部署和集成的费用大大降低,所有应用只要能连入Internet,就可以使用和集成Web Service,流程的更改也无须更改大量代码,从而减少了支持现有的和正在开发的产品的总成本。基于Web Service的应用程序具备了松散耦合、面向构建和跨技术实现的特点。因此,使用Web Service是很好的解决办法。下面分别介绍一下本系统的物理架构和逻辑架构。

  2.1物理架构

  基于Web Service的流媒体测试系统的物理架构中包括以下几个部分:

  ● 点播设备:普通PC机即可,运行一个或多个利用流媒体厂商提供的SDK开发的客户端点播程序;

  ● 测试服务器:包括Web Server与数据库

  ● 流媒体服务器:待测的流媒体所在的服务器,可以为微软、Real、QuickTime的产品;

  ● 管理员PC:任意一台可以通过HTTP访问测试服务器的PC机。

  上述部分构成了完整的基于Web Service的流媒体测试系统的物理架构,基于Web Service的流媒体测试系统逻辑结构中包括客户端点播程序、测试服务器的配置和查询模块和测试数据管理模块三部分组成。

  ● 客户端点播程序:运行于点播设备上,根据从数

  据库中取到的配置记录对流媒体自动进行点播,采样画面并记录数据,与测试服务器进行数据交换;

  ● 测试服务器端测试数据管理模块:通过Web Service方式接收来自客户端点播程序的数据,并从数据库中取出一条可用记录给测试点。

  ● 测试服务器端配置和查询模块:实现对测试点的影片播放列表的灵活配置,根据管理员组合条件的结果统计;

  系统的开发工作主要涉及到两个部分的内容,分为测试点的客户端点播程序和测试服务器端应用程序。接下来,将对这两个部分的实现方案进行讲述。

  3客户端程序实现技术方案

  目前在流媒体市场上主要有微软、RealNetworks和苹果电脑三家公司产品,分别是:Windows Media、Real System和QuickTime,目前在我们的系统中只实现了Windows Media格式的流媒体测试,这里我们以此为例。Windows Media Player 为数字音频和视频提供了出色的播放效果,但在我们的系统中作为客户端程序在点播过程中需要得到更多信息,所以需要利用Windows Media Player 软件开发工具包 (SDK)扩展独立 Player 的功能,并将播放功能嵌入到自己订制的应用程序中。这里需要扩展两个方面的功能:首先,调用合适的函数获得我们感兴趣的流媒体性能参数,比如:最大比特率、帧速率、可用带宽、协议等等;其次,是这个订制的客户端点播程序如何与服务器端的Web Service通讯的功能。

  在流媒体播放发生异常时会伴随着一系列流媒体性能参数的异常,比如:当流媒体点播端到端的丢包率超过了一定限度或者流媒体服务器负载过大时,将会发生马塞克现象;当网络拥塞,网络带宽或网络QoS质量在一定的时间内不能很好的保证,导致画面停格和跳帧现象,有时只能听到比较流畅的声音,有时连声音也停住;网络丢包率达到了10%或时延超过500ms,流媒体点播的网络QoS质量在一定的时间内不能保证,导致播放器一直处于与服务器连接的缓冲状态。客户端点播程序可以利用所获得的采样数据分析出流媒体当前是否处于异常状态,假如是的话,可以参照一系列的现象与性能参数之间的对应关系,判断出是什么样的异常并记录下来。这一点与人眼的观察很近似,但是要比人眼更精确。

  在实际的测试过程中,配置好点播程序(测试点编号、测试服务器IP等信息)后,它会通过SOAP方式调用测试服务器上的一个名为GetConfig 的Web Service,得到服务器数据库中的一条可用配置记录,其中包括影片URL、最早播放时间、采样周期等信息,客户端程序根据这些参数自动配置并打开流媒体进行播放,同时调用开发包中的控件实时采样当前画面的质量状况并记录到缓冲区中,每测试完一部影片会产生的结果,通过SOAP方式调用测试服务器上的另一个名为UploadData的Web Service解析结果数据,并将解析出来的数据存到数据库中,然后再取一条配置记录下来播放,周而复始直至数据库中没有可用的配置记录下发为止,其点播流程如图3:

  由于数据是在客户端与服务器之间进行交换,考虑到服务器端对数据解析的方便,以及数据的可扩展性和健壮性,客户端产生的结果数据采用XML格式,满足XML文档形式合理限制的最低要求即可。其中包含的信息非常丰富,有影片URL、影片开始结束时间、比特率、帧数、数据包数、网络连接状态与采样数据等基本信息。

  4服务器端程序实现技术方案

  测试服务器采用免费的Tomcat作为Web服务器, Tomcat是Java Servlet 2.2和Java Server Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件;而Web Service引擎采用的是免费的可与Tomcat集成使用的AXIS,它是Apache SOAP项目的最新版本,是一个SOAP处理机,可以将可插入的部件进行分类,并进行多种方式的设置。从AXIS的最简单形式来看,它可以视为介于业务逻辑和携带数据的网络传输之间的一个薄层,只是从传输中提取SOAP消息并将其交给Web Service,此外,它也把所有的响应格式化为SOAP消息,并发回请求者。这两者都是免费软件,可以大大节省开发成本。

  测试服务器实现两大部分的功能:

  4.1、测试数据管理功能:

  测试数据管理模块以二进制可执行文件形式存在于测试服务器,以Web Service形式发布,供测试点的客户端程序进行SOAP调用,实现通知测试点按照测试配置进行流媒体测试和收集测试数据的功能。本模块为测试点提供两个SOAP调用对象:取测试配置(GetConfig)和上传测试结果(UploadData),两者主要的工作是与数据库进行交互。

  4.1.1取测试配置(GetConfig):测试点在进行测试时首先调用GetConfig对象,获取要播放的影片URL和测试配置参数,根据测试配置参数测试影片。GetConfig对象根据测试点编号为测试点找到一条可用的测试配置记录,其中包括影片URL、数据上传模式、采样周期等信息。假如没有找到可用的测试配置记录,GetConfig将返回给测试点一条为 “none”字符串信息。

  4.1.2上传测试结果(UploadData):测试点每测试完一部影片后调用UploadData对象,向测试服务器上传测试结果。UploadData对象负责接收测试点的测试结果数据,将其中的各项信息解析出来并存放到数据库的相应字段。最后,UploadData将向客户端程序返回一个数据是否上传成功的布尔信息。

  4.2配置和查询功能:

  测试服务器支持管理员和普通用户两种权限级别的用户。其中,管理员可以配置影片列表、查询结果、查看测试点当前状态、增加、删除、修改测试点和普通用户信息;而普通用户不能添删任何数据,只能查询结果和查看测试点当前状态。

  配置和查询模块采用Web方式实现,大大减轻了管理员的工作量。管理员通过浏览器访问测试服务器就可以实现多个测试点的播放列表配置,也可以修改任意一部待测影片的测试配置参数,还可以实现按流媒体服务器IP、测试点编号、播放时段对测试结果的统计。

  5结束语

  现今对流媒体的测试手段并不是很多,本系统的目的就在于将当前较为成熟的Web Service技术同利用流媒体厂商提供的SDK自行开发的客户端点播程序结合起来。目前本系统只支持对微软的流媒体服务器进行测试,接下来的目标是利用其他流媒体厂商提供的SDK开发支持他们流媒体服务器的客户端程序,利用Web Service良好的可扩展性,扩展本系统的通用性。

  参考文献:

  [1] 张艳霞 张琳姝 刘文超 于清. 流媒体性能参数测试与分析[J].中国多媒体视讯,2003,(9),31-33.

  [2] Steve Graham .用Java构建Web 服务.[M].北京:机械工业出版社,2003.10-30.

  [3] Elliotte Rusty Harold. Java语言与XML处理教程.[M].北京:电子工业出版社,2003.2-5.

  
摘自 网络通信产品商贸网
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50