




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学信息商务学院2016届毕业设计说明书中北大学信息商务学院毕业设计说明书基于移动平台的流媒体播放系统的设计与体现学生姓名: 2016年 5月 21日原创性声明本人郑重声明:所呈交的毕业设计说明书/毕业论文,是本人在指导教师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本文不包含其他个人或集体已经发表或撰写过的科研成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。作者签名: 日期: 使用授权声明本人完全了解中北大学信息商务学院有关保管、使用毕业设计说明书/毕业论文的规定,其中包括:学院有权保管、并向有关部门送交毕业设计说明书/毕业论文的原件与复印件;学院可以采用复印、缩印或其他复制手段复制并保存毕业设计说明书/毕业论文;学院可允许毕业设计说明书/毕业论文被查询或借阅;学院可以学术交流为目的,复制赠送和交换毕业设计说明书/毕业论文;学院可以公布毕业设计说明书/毕业论文的全部或部分内容。作者签名: 日期: 导师签名: 日期: 基于移动平台的流媒体播放系统的设计与体现摘要:在21世纪这个移动互联网快速发展的年代,流媒体以其效率、方便的方式深受人们的喜爱。媒体技术与移动终端技术的相互结合已成为现代移动互联网发展的必然趋势。特别是Android系统在手机端应用最为广泛。因此,本文以Android系统为运行平台,为移动端用户设计并实现了一套流畅、稳定的流媒体播放系统。根据研究背景与国内外现状进行分析,明确该课题使用的关键技术,开展技术调研。深入研究了Android平台的架构、流媒体技术、视频压缩编解码技术、流媒体传输协议,为系统的设计和开发做好准备。本流媒体播放系统能够使压缩、编码后的音/视频适应网络的变化,在Android系统上更加流畅、稳定的播放,延迟较小,满足了用户随时随地享受音/视频带来的无穷乐趣的需求。关键词:流没体客户端,Android平台IDesign and Implementation ofStreaming Media Client System Based on Android Abstract:In the 21st century the vigorous development of the mobile Internet, multimedia information with its high efficient and real-time manner by the people of all ages.Media technology and mobile terminal technology combined with each other has become an inevitable trend for the development of modern mobile Internet.based on the research on mobile streaming media client has the significant practical significance and value.The streaming client software can make after compression, coding of audio/video to adapt to the changes in the network, more process in terms of the Android system, stability, less delay, meet the users to enjoy the sound/video anytime and anywhere with the purpose of fun.Key words: Mutimedia Client,Android PlatformII目 录摘要Abstract目录1 绪论.12 Andriod平台流媒体主要技术42.1 Andriod概述.42.2 Andriod架构.52.3 Andriod应用程序.6 2.3.1 流媒体技术概述.7 2.3.2 视频压缩编解码技术.8 2.3.3 流媒体传输协议.83 基于Android平台的流媒体播放系统主要功能.103.1 系统功能概述.113.2 系统用例分析.123.3 系统非功能需求.174 基于Android平台的流媒体播放器设计.184.1 系统运行环境.184.2 系统应用结构设计.184.3 系统网络拓扑结构.204.4 音/视频播放模块设计.214.5 扩展模块设计.224.6 数据库结构.235 基于ANDROID平台的流媒体客户端软件测试.245.1 系统测试环境.245.2 系统功能测试.25IV5.3 系统性能测试.275.4 测试结果分析.28参 考 文 献.29致 谢.30V1 绪论目前,移动通信技术飞速发展,在高速移动网络环境下,人们不仅仅满足于普通文本、图像信息的表现模式,而越来越渴望一种更为直观的信息表现模式,网络视频逐步走进人们的生活,以一种丰富的信息表现模式来充实原有的普通模式。而流媒体技术成为了此次变革中的新兴技术,此技术颠覆了原有的视频传播方式,原有的单向传播逐步被现在的双向互动传播取代。近年来,移动互联网技术的发展,也为流媒体技术的革新做了铺垫,网上的直播视频终于从实践阶段迈向了实用阶段,网络直播逐步深入家家户户,人们非常青睐于这种网上直播模式,用以记录生活中的各项活动、点点滴滴。现在主流的网络直播系统是基于Helix System/Windows Media,其对高质量的音/视频、视频直播、视频轮播、混合直播、虚拟直播都是支持的,且在性能上具有较好的稳定性、可扩展性、可靠性、可移植性,从用户的角度来看,是非常易用操作使用的。随着移动智能手机的广泛应用,对于视频多媒体形式的需求越来越迫切,人们不仅仅希望在PC机上获取视频模式的信息,更渴望随时随地地获取多媒体信息,移动流媒体技术应运而生,其以直观、灵活、动态、存储要求低等优势得到了广泛的应用3-4。同时,近来3G无限网络、音/视频技术的飞速发展也为移动流媒体的普及做了铺垫。移动流媒体技术主要采用编码技术:为了节省带宽,在传输流媒体数据时需要先对其进行压缩、编码,再结合网络的拥塞情况不确定性,使编码后的数据能够适应网络的各种变化,在不同的情况下都能有较好的播放效果。目前,流媒体技术主要应用于视频点播、直播、视频会议、远程网络教育中。现在互联网技术已经深入千万家,人们应用互联网观看电视节目、综艺、赛事等,然而,目前网络带宽仍不能满足人们的需求,若不对此研究新兴技术是完全不能实现视频的高质量播放的。流媒体技术正是为解决带宽限制问题,使视频在较低的带宽环境下仍然能够以较高的质量播放的一种手段。随着视频技术的发展,其逐渐应用与各个领域,将视频与会议结合以后,能够实现会议规模的扩大,给广大企业带来便利,其应用流媒体技术的高扩展性、高带宽利用率使会议在网络环境中流畅的进行。将流媒体技术应用于远程网络教育,取代了以往文本教育模式。同时,较传统的远程教育,具有更高的交互性,解决了教学形式单一等问题。学生们应用远程网络教育,可自主选择教育模式:在线直播课堂、录制点播课堂等。学生们可根据自己的需求侧重选择适合自己的课堂方式及课堂内容,此远程课堂不仅可以采用传统的聊天工具、Email等,还可以采用音/视频答疑模式,最大程度上满足了学生的需求,提高了学习的效率。随着移动互联网的发展,其解决了电脑携带不便、网络接入限制等问题,实现了用户随时随地产生的一些需求。将流媒体技术应用于智能终端,实现用户随时随地存取音/视频数据已成为了移动互联网时代的必然趋势,本课题正是在这样的背景下,研究开发一套基于Android平台的流媒体客户端。在21世纪这个Internet蓬勃发展的年代,信息作为了人们生活、工作的主要载体,以各种方式呈现,多媒体信息表现方式以其高效、实时等特性深受人们的青睐。多媒体通信可以承载大量的数据,并且在时效性方面表现得尤为出色。人们不再满足于原有的文本信息交互模式,这种结合音频、视频为一体的多媒体信息交互模式以其传输延迟小、丢包率小等优点深得人们喜欢。多媒体通信技术较原有的文本通信技术有非常大的改变,多媒体信息结合了音/视频就决定了其在播放时需要考虑音/视频的流畅性以及音/视频的同步问题等。多媒体信息主要通过多媒体客户端进行展示(播放音/视频文件),其对网络带宽的要求较高,网络的延迟会直接影响到用户体验。为使多媒体信息能够流畅地播放,流媒体技术应运而生,成为了网络多媒体应用的发展趋势。流媒体技术结合了多媒体技术和网络技术,主要内容有:流媒体编码技术、流媒体服务器技术、流媒体系统技术等9。流媒体服务器主要为流媒体客户端提供流媒体服务,时效性、大数据量是其主要优点。其是整个多媒体信息交互的核心,在此之中最重要的部分为多媒体通信部分,为满足时效性等特点,在通信部分不能采用具有重传、拥塞控制机制的可靠传输协议TCP传输层协议。其主要用到了实时传输协议RTP、实时流协议RTSP、实时传输控制协议RTCP等流媒体的应用层协议。在这些基础上,设计并实现一款基于Android手机操作系统的流媒体客户端软件成为了可能,并且纵观目前信息化发展的趋势,移动终端正在逐步分割PC机的天下,人们已经认可了这种随时随地进行信息交换、信息处理的模式,并越来越渴望能够在各个领域实现信息的随时随地获取,多媒体信息以其信息量大、时效性强更是深受欢迎,将多媒体技术与移动终端技术结合是现代移动互联网发展的必然趋势,因此,研究基于移动终端的流媒体客户端具有重大的意义和价值。2 平台流媒体主要技术2.1 Android概述 2007年11月5日,Google公司发布了一款名为Android(中文意思为机器人)的操作系统,这个操作系统是基于Linux内核的开源操作系统,主要应用于移动智能终端。目前,Android操作系统已经取得了巨大的成功,与Windows Phone、IOS等手机操作系统并驾齐驱,成为是主流的手机操作系统之一,Android的成功,主要来源于它的开放性,能够使开发者自由的发挥、自主创新。Android系统在Linux核心应用的基础上,向广大程序开发者提供了各种函数库和完整的应用程序框架。此外,Android系统还在Linux核心上提供了一种名为Dalvik的Java应用程序运行环境,与Sun公司的Java虚拟机有所不同,Dalvik是Google独创的专门针对于Android平台进行优化的虚拟机。为了吸引全世界的应用程序开发人员参与Android平台应用程序的开发,Google公司还提供了完全免费的跨平台的开发工具包(SDK),它们已在Windows、Mac OS X、Linux等平台得到了成功的应用。Android系统主要具有开放性、所有的应用都平等、应用间无界限、快速便捷开发应用的优势。 开放性Android是一个真正意义上的开放性移动智能设备综合平台,它的开放性主要表现在:Android操作系统本身的源代码完全开放,它可以自由的吸纳新的尖端技术;应用程序的自由性。例如一个应用程序可以调用系统电话服务中的拨打电话、监听电话状态、发送文本信息等核心功能,允许开发者创建更丰富、自由度更高的应用程序;通过与运营商、设备制造商、开发商以及其他有关各方结成深层次的合作伙伴关系,来建立标准化的手机软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 所用的应用都平等Android系统并不会区分手机中的系统级应用程序或第三方应用程序,所有的应用都运行在一个核心的引擎上面,这个核心的引擎就是Dalvik虚拟机,它提供了一系列用于应用和硬件资源间通信的API服务,所有应用都可以平等的享有系统资源,使用这些服务。例如开发者可以任意替换手机的风格界面,控制手机使用自定义的图片浏览器程序,按照自己喜欢的方式排列图片、浏览图片。 应用间无界限Android打破了应用之间的界限,例如开发者可以将Web上的数据与本地的联系人、日历、位置信息结合起来,为用户创造全新的用户体验。例如使用Android系统,开发者可以获得其他Android设备的位置信息,允许不同设备之间的交流通信,使得Android平台下的点对点社交成为了可能。 快速便捷开发应用Android系统为开发者提供了大量的实用库和工具,开发者可以快速便捷的开发出自己的应用。例如在Symbian、Windows Phone手机平台上要进行位置应用的开发是相当复杂的,而Android系统集成了Google Map,开发者只需要通过简单的几行代码就可以实现一个基于地图位置的应用。另外,Android还包含了平台周边的应用,开发者可以高效的开发深入的应用程序。2.2 Android架构Android是一个软件的集合,它包括了操作系统、中间件、针对移动终端的应用程序框架,这样一个集合形成了Android层次架构。如图2.1所示。图2.1 Android系统结构Android系统架构由Application层、Application Framework层、Libraries层和Linux Kernel层组成。其中Linux Kernel层为Android的操作系统,Libraries层和Application Framework层组成了中间件,Application层在整个架构的最上层。在此架构中,最底层的Linux Kernel是由C语言编写的,而Libraries层中的Libraries是由C、C+编写的,运行时环境中的Android核心库则是用Java语言编写的。上层应用包括应用程序框架也都是用Java语言编写的。从此可以看出:虽然说底层架构采用的是C、C+语言,但对于应用程序的开发采用Java语言即可。这样的设计模式对于开发商来说有很大的好处,例如Java语言的开发周期明显比C、C+的开发周期短,这正好满足了移动智能终端的需求,移动智能终端只有有了大量的应用作为支撑,才能吸引更多的用户,满足各类用户的需求。2.3 Android应用程序Android应用程序主要是由以下几种组件构成: Activity:该组件是Android应用程序的窗口,主要负责与用户进行交互。 Service:该组件没有可视化的界面,主要是在后台运行,通过Service的使用,可以让一些复杂的操作、服务在后台运行,而完全不影响前台界面的用户体验19。Broadcast Receives:该组件主要是用来接受广播信息,并响应信息。通常情况下,广播信息是由系统发出来的,例如受到一条来电、手机电量不足等。当然,应用程序也可以发送广播信息。一个应用程序可以接收多个广播消息发送者发来的消息,此动作是没有用户界面的,但在进行消息响应可以启动一个界面活动来与用户交互。Content Providers:该组件主要是用来为其他的应用程序提供数据的,通情况下,广播信息是由系统发出来的,例如受到一条来电、手机电量不足等。当然,应用程序也可以发送广播信息。一个应用程序可以接收多个广播消息发送者发来的消息,此动作是没有用户界面的,但在进行消息响应可以启动一个界面活动来与用户交互。 Content Providers:该组件主要是用来为其他的应用程序提供数据的,通过它可以使应用程序与其他应用程序进行数据共享。除了这些组件以外,每一个Android应用程序还必须有一个配置文件:AndroidManifest.xml。在这个配置文件里面定义了Android应用程序中所用到的组件及组件的一些约束信息,同时还涉及到应用程序对网络、存储卡等的访问权限控制,只有配置中具有了某种权限,应用程序才能进行相应的操作。否则,即使在程序中应用,也不能达到目的。2.4 流媒体技术流媒体主要是指采用流式传输的方式进行多媒体的播放,其中数据的来源是网络,其实现了实时顺序传输。流媒体是通过流媒体服务器将媒体转化为数据包通过网络传输由客户端接收,客户端需要采用专门的解压手段对数据流进行解压,并将多媒体流播放出来,最终将多媒体信息传达给用户。2.4.1 流媒体技术概述流媒体技术主要是指以流的形式进行音/视频文件的传输,并将运用流式技术进行播放的技术。此种流式传播方式首先需要将视频进行编码压缩,采用特定的技术编码压缩成数据包,通过网络将此数据包传送到接收端,接收端接收到实时连续的数据流。采用这种技术的好处时,用户不需要等待整个视频下载完成来观看视频,可以实现实时地观看网络上的视频。流式传输方式主要分为两种:实时传输和顺序传输。实时流式传输主要实现了视频的实时播放,其要求媒体信号带宽与网络带宽匹配。要达到这样的要求,显然不能使用HTTP协议,取而代之的是特定的流媒体传输协议。实时流式传输主要应用在了对实时性要求较高的地方,例如直播赛事、现场报道等。从本质上来讲,流媒体传输是不能停止的,但在实际传输过程中也是允许暂停的,由于对实时性的要求,实时传输就得与实际的网络带宽匹配,这样就会导致在网络情况不好时,视频的质量非常不好。要解决这个问题,可以采用顺序传输方式。顺序流式传输方式是指在流媒体客户端中对流媒体数据进行顺序下载观看的过程,用户可以观看已经下载的媒体数据,但是不能查看没有下载的数据,但是可以回退去看已经下载的数据。这种方式适合在对实时性要求不是很高的场合,它在网络环境差的情况下也能播放出完整的流媒体数据,使视频能够正常地播放。其在传输时可以采用HTTP协议,运用此协议可以发送流媒体数据,因此该协议又被称为HTTP流式传输协议。2.4.2 视频压缩编解码技术目前,在网络中的视频压缩解码技术主要有H.264、MPEG-4等,其中最为常用的就是H.264视频编解码技术,其原因在于H.264视频编解码技术具有高压缩比率,在网络传输方面占有较大的优势。就同等质量的图像而言,采用H.264视频编解码技术比采用MPEG-2视频编解码技术的压缩比率高出1倍多,是采用MPEG-4视频编解码技术的1.5到2倍。也就是说,H.264视频编解码技术虽说压缩比率大,但是并没用影响到其图像的质量。H.264视频编解码技术采用分层设计的思想,主要分为了视频编码层和网络提取层,此种设计非常适合流媒体传输,并且H.264视频编解码技术还具有以下特点:图像质量高、低码流、容错性强、网络适应度高等。其中容错性主要表现在当网络不稳定时,H.264视频编解码技术提供了一些工具用于解决网络丢包等问题。而网络高适应度主要在于H.264视频编解码技术有网络抽取层的支撑,该层为上层屏蔽了底层的复杂性,使视频文件通过调用接口即可实现在不同的网络环境中进行传输。下面将重点讲解H.264视频编解码技术的两层结构。视频编码层:本层主要负责视频内容的高效表示,包括了基于块的运动补偿混合编码以及一些新的特性。网络提取层:本层主要负责对视频数据进行打包和传输,需要注意的是打包和传输方式要视网络环境而定。其用到了底层网络的分段格式,将数据封装好并进行传送。2.4.3 流媒体传输协议流媒体技术中最核心的部分就是流式传输技术,通过流式传输技术的使用实现了流媒体服务器与流媒体客户端之间的通信。目前,比较常用的流媒体传输协议为RTP(Real-Time Transport Protocol,实时传输协议)、RTSP(Real-Time Streaming Protocol,实时流媒体协议)、RTCP(Real-time Transport Control Protocol, 实时传输控制协议),其在TCP/IP协议栈中的位置如图2.2所示。图2.2 流媒体传输协议在TCP/IP协议栈中的位置 RTP实时传输协议RTP主要是为用户提供连续媒体数据的实时传输服务,其基于多播或者单播网络实现,而RTCP协议是RTP协议的控制部分,主要负责网络数据流控制,包括网络数据流拥塞控制、传输质量监控等。RTP协议提供点对点的通信,可以在多播网络上进行实时数据传输。这种点对点、多播的形式可以保证时间信息与实现流的同步,RTP一般采用UDP来进行数据传输,其具有实现简单、不需要路由器的支持、控制信息所占带宽小等优点。RTP协议是位于传输层上的协议,其可以建立在TCP/UDP协议之上,但一般情况下是采用RTP、UDP进行实时传输,其在音/视频传输过程中,运用了UDP的端口号和校验和,同时继承了UDP协议传输延迟小的优点。当需要发送音/视频数据时,该数据被封装成RTP包,接着RTP包封装入UDP包中,再封装入IP包中进行传输。当接收到音/视频数据包时,同样需要通过UDP套接借口输入RTP包,然后将音/视频数据抽取出来。RTP的端口号为1025到65535间选择,通常情况下为一个偶数的UDP端口号,由于RTP包中只包括了音/视频数据,而对于音/视频的控制则由RTCP协议来完成,RTCP的端口号为RTP端口号的下一个奇数UDP端口号。当进行音/视频数据传输时,需要RTP与RTCP协同工作,在RTP数据包传送期间,需要使用RTCP协议来进行控制信息的周期性传送。通过RTCP包可以对已经发送的数据进行丢包统计、了解拥塞情况等。该数据信息也是通过封装为UDP数据包进行传送的,服务器可以根据RTCP包中的信息对传输速度进行调整。RTP在工作时分为了两个层次:RTP Session、RTP Stream。RTP Session:即RTP会话,包含了传给目的地对的所有通信量。注意当进行单播时,RTP Session的接收方为一个地址;当进行组播时,RTP Session的接收方为多个地址。RTP Stream:即RTP流,是指从同一个同步源发出的RTP数据包。 RTCP实时传输控制协议RTCP主要是用来在流媒体服务器与流媒体客户端之间传输控制信息的,通过此协议可以控制传输的质量。当进行音/视频数据传输时,RTCP把会跟随RTP会话的进行周期性地发送控制信息,该控制信息主要包括丢包率的统计、已发送数据包数量等。当进行RTP会话时,程序会自动分配两个端口,一个是为RTP协议传输提供的,而另一个则是为RTCP协议传输提供的。就RTP来说,其不是一个可靠的传输协议,不提供拥塞控制、流量控制。而要保证音/视频信息的可靠传输就要依赖RTCP协议,它提供了流量控制、拥塞控制等服务,当在RTP会话期间,周期性的发送RTCP包,可以监控传输质量、了解会话用户信息等,通过这些信息可以知道已经发送的数据包数量以及丢失的数据包数量等。通过RTP协议与RTCP协议的结合,实现了传输效率的提升,利用非常小的开销实现了传输信息的反馈,非常利于对实时网络传输提供控制、采取恰当的控制策略。 RTSP实时流媒体协议RTSP是一个流媒体表示协议,位于应用层之上,通过此协议可以实现流媒体数据的控制。由于其是一个应用层协议,它本身并不负责数据的传送,其传输数据是靠下层的传输协议,通常情况下,将RTSP与RTP协议一同使用以实现音/视频的实时传输。RTSP协议拥有一套可扩展框架,在音/视频的播放端可实现对音/视频的控制,例如暂停、播放、快进等。RTSP协议是一个有状态的、对称的协议,在进行RTSP数据流请求时,需要保持会话状态,这些特点与HTTP协议很不相同。而除此之外,它与HTTP协议是否相似,可以直接移植HTTP的扩展机制来使用RTSP协议。3 基于Android平台的流媒体播放系统功能分析3.1 系统功能概述该流媒体客户端软件在Android系统上实现,采用流媒体技术、第三代无线通信技术进行实时数据传输,系统的具体功能需求如下: 通过Android平台上的流媒体客户端进行音/视频采集。用户可以根据自己的日常需求,将生活中的点点滴滴以音/视频的方式记录下来,以流媒体的形式实时传送到流媒体服务器。 通过Android平台上的流媒体客户端进行音/视频播放。用户可以实时地获取音/视频信息,并在客户端观看。实现了随时随地观看各大赛事、新闻、娱乐节目的需求。本系统可以分为两个子系统:音/视频采集子系统和音/视频播放子系统。本人的工作主要是设计并实现流媒体客户端音/视频播放子系统。因此,下面将详细分析音/视频播放子系统的功能需求: 数据接收功能:主要用于接收来自流媒体服务器的音/视频数据。 RTP解析功能:主要用于解析从网络接收来的音/视频数据,该数据是由RTP封装的,因此需要进行RTP解析。 解码功能:经过RTP解析后的音/视频数据还不能直接在客户端播放,要想客户端顺利的播放音/视频数据,还需要对音/视频数据进行解码,使音/视频数据符合播放的条件。 播放功能:在进行音/视频解码后,就可以运用播放技术,播放音/视频文件。3.2 系统用例分析该流媒体客户端软件主要分为音/视频采集子系统和音/视频播放子系统,系统整体的模块结构如图3.1所示。图3.1 系统功能模块结构 音/视频播放子系统又包括音/视频播放模块和扩展模块,其功能结构如图3.2所示。音/视频播放模块:主要负责音/视频的播放与控制,包括暂停、播放、停止、快进等选项。该模块主要包括数据接收子模块、数据预处理模块子和解码播放子模块。扩展模块:该模块为流媒体客户端软件的扩展模块,主要提供辅助音/视频播放的功能,包含文件列表管理子模块、播放列表管理子模块和音/视频搜索子模块。图3.2 音/视播放子系统功能结构 下面将详细分析该软件中音/视频播放子系统和扩展子系统的业务需求,并给出它们的用例分析。音/视频播放子系统的功能用例如图3.3所示。图3.3 音/视播放子系统功能用例 下面将对图3.1中的每个子用例进行说明。 音/视频文件播放该用例主要用来描述选中的音/视频文件是否能够正常的播放。表3.1 音/视频文件播放用例说明描述项目描述内容用例名称音/视频文件播放用例描述点击播放按钮参与者用户前置条件音/视频进入播放状态后置条件选中的音/视频播放 音/视频暂停用例 该用例主要用于描述当某音/视频文件正在播放时,是否可以点击暂停按钮,并且转变为暂停状态。表3.2 音/视频文件播放用例说明描述项目描述内容用例名称音/视频暂停用例描述当音/视频正在播放时,点击暂停按钮参与者用户前置条件视频正在播放后置条件播放视频处于暂停状态 音/视频停止用例该用例主要用于描述当某音/视频文件正在播放或者暂停时,是否可以点击停止按钮,并且转变为停止状态。表3.3 音/视频文件播放用例说明描述项目描述内容用例名称视频停止用例描述当音/视频文件处于播放状态或者暂停状态时,点击停止按钮参与者用户前置条件音/视频处于正常播放状态,或暂停状态后置条件音/视频停止播放 视频全屏/普屏用例该用例主要用于描述当某音/视频文件正在播放或暂停时,双击屏幕是否可以实现全屏状态与普屏状态的切换。表3.4 视屏全屏/普屏用例说明描述项目描述内容用例名称视频全屏/普屏用例描述当视频文件处于播放或暂停状态时,双击屏幕。若原来为全屏,则双击后变为普屏,若原来为普屏,双击后变为全屏参与者用户前置条件视频处于播放或暂停状态后置条件当前视频从全屏变为普屏,或从普屏变为全屏 音/视频上一个/下一个用例该用例主要用于描述当指定音/视频文件正在播放时,是否可以点击上一个/下一个按钮,将当前音/视频切换为上一个/下一个音/视频播放。表3.5 音/视频文件播放用例说明描述项目描述内容用例名称上一个/下一个用例描述用户点击上一个或下一个按钮,音/视频文件可以在上一个或下一个之间切换,并播放参与者用户前置条件用户进入播放界面,并已选中一个播放后置条件上一个或下一个音/视频播放对于音/视频播放子系统来说,还需显示文件列表、播放列表、提供智能搜索等模块以辅助其功能。下面将给出扩展子系统的需求用例,如图3.4所示。图3.4 扩展子系统功能用例下面将对图3.2中的每个子用例进行说明。 文件列表管理该用例主要用于描述当选择查看文件列表时,点击本地文件列表选项是否正常显示本地文件及目录列表;点击网络文件列表选项是否正常显示远端流媒体服务器中流媒体文件列表。表3.6 文件列表用例说明描述项目描述内容用例名称文件列表管理用例描述打开播放器,选择文件列表查看按钮选择本地文件列表选项,查看本地文件列表选择网络文件列表选项,查看远端流媒体服务器中文件列表。指定远端资源,输入远端资源网址,直接获取网络资源。参与者用户前置条件进入流媒体客户端系统后置条件查看到本地文件目录及文件结构查看到远端流媒体服务器中文件列表匹配到远端流媒体服务器中的指定音/视频文件 播放列表管理该用例主要用于描述以智能的方式搜索出手机里面的所有视频文件。表3.7 文件列表用例说明描述要素描述内容用例名称智能搜索用例描述播放器处于运行状态点击主菜单中的Search选项进入智能搜索框输入想要搜索的视频文件的前几个字符,自动弹到匹配的文件名的地方。参与者用户前置条件播放器处于播放状态后置条件自动匹配到相应正确的视频文件名的地方3.3 系统非功能需求在对该系统功能需求进行详细分析的基础上,下面将从界面美观性、传输实时性、音/视频质量、编解码效率4个方面描述系统需具备的非功能需求。 界面美观性系统的设计是为了满足用户的某些需求,为用户提供便利。因此,在系统设计实现时必须考虑到用户的体验,假如一个系统的易用性很差,那么即使该系统有再强大的功能也不能被用户接受,该系统只会是一无是处的。本该统的目的是为了给用户提供流畅的音/视频播放,那么就需要各功能模块配合密切,在界面设计上满足用户的习惯,做到界面美观、操作简单。 传输实时性传输实时性对于该系统至关重要,传输的实时性强可以使音/视频播放更加流畅,不会出现音/视频停顿、丢包、乱序的现象,极大的提高用户体验。 音/视频质量音/视频的质量直接影响到用户观看音/视频的效果,如果图像的质量非常低下,用户根本无法看清屏幕中的图像,那么这个系统的设计必定是失败的。用户无法用其进行实时音/视频的观看,系统也不能达到预期的效果。 编解码的效率前面谈到了音/视频的质量,而与传输、播放质量相关的便是音/视频的编解码问题,根据技术分析,H.264音/视频编解码技术具有较好的编解码比率,因此本系统为保证流畅可用性,应具有高的编解码效率。4 基于Android平台的流媒体客户端软件设计4.1 系统运行环境该系统运行的软、硬件环境如表4.1所示。表4.1 系统运行环境序号参数名称参数值1硬件环境客户端:Android手机,带摄像头,支持网络。服务器端:CPU 2.5HZ以上、内存4G、支持上网。2软件环境客户端:Android 2.3以上系统,移植FFMPEG。服务端:Linux系统,Wowza Media Server流媒体服务器、JRE环境、流媒体播放器等。3编译环境选择Linux系统作为.so文件的编译环境,在进行Android编程时选用Eclipse集成开发环境并安装ADT(Android Development Tools,Android开发工具),运用Java语言进行编程。在进行FFMPEG移植时需要用Android NDK进行交叉编译,系统数据库选用内置的轻量级的SQLite数据库。4.2 系统应用结构设计该系统主要分为了音/视频采集子系统和音/视频播放子系统,当进行音/视频播放时,不管是播放本地文件还是网络流媒体文件,都需要先获取音/视频数据。前者是从本地获取,后者是从网络传输中获取。当获取到音/视频数据后,需要对音/视频数据进行解码,最后将解码后的数据展现给用户。由于从本地获取的音/视频数据与从网络上获取的音/视频数据的存取方式不同,为保证上层的解码方式统一,需要对这些数据进行预处理以使其格式相同,方便上层采用相同的解码方式进行解码播放。该系统在设计时采用分层设计模式,将系统分为三个层次:用户界面层、数据处理层和数据提取层。各层之间独立完成任务,降低了系统的耦合程度,增强了系统中各层次的可扩展能力。系统的分层结构如图4.1所示。系统的最底层为数据提取层,主要负责提取音/视频数据,并交由给上层进行处理。获取数据的途径分为本地获取和网络获取。当从本地获取时,只需读取本地文件;当进行网络获取时,需要向流媒体服务器发出请求,由流媒体服务器将流媒体数据发送给客户端,客户端通过网络进行实时读取。从网络获取数据主要分为3个阶段:会话建立阶段、数据接收阶段和数据缓存阶段。在进行会话建立时采用的是RTSP协议,通过此协议可以在流媒体服务器与流媒体客户端之间建立媒体传输协商信息,包括音/视频数据类型、音/视频数据传输协议和端口、音/视频数据格式等。数据处理层主要负责将数据提取层提取到的音/视频数据进行解码操作。然而,由于音/视频的来源不同,从本地读取的文件与从网络读取的流媒体文件所具有的格式不同,要想对他们进行统一的解码操作就得先对这些数据进行预处理。对于本地文件,需要按照其媒体格式获取音/视频信息及字幕等信息,然后按照帧放入解码缓冲区,等待对其解码操作;对于流媒体文件,需要先去除RTP包的头部信息,提取音/视频信息组成帧,并将其放入解码缓冲区,等待解码。系统的最上层为用户界面层,主要负责与用户进行交互。用户在界面上对系统进行操作,例如播放本地文件、播放网络流媒体数据、对音/视频采取暂停、播放、快进、快退等操作。图4.1 系统分层结构图4.3 系统网络拓扑结构该流媒体客户端软件的网络拓扑结构如图4.2所示。图4.2 系统网络拓扑结构该系统中流媒体数据主要通过Android手机通过录制等方式采集而来,通过无线网络传到服务器,最终由服务器将信号推送给流媒体服务器,流媒体服务器负责保存这些音/视频数据,并将拥有音/视频的信息发布到网上,供用户点击播放。 当流媒体客户端软件请求播放某条流媒体数据时,流媒体服务器将数据发送到客户端,并实时的播放音/视频数据。4.4 音/视频播放模块设计该模块采用多线程并发执行机制,首先由主线程进行系统初始化,然后启动音/视频数据接收线程、音/视频数据预处理线程和音/视频数据解码播放线程。图4.3展示了该模块的执行流程: 系统主线程进行系统初始化。 音/视频接收线程判断接收来源,若接收数据来源为本地文件,那么系统会读取本地文件音/视频数据并解析,将解析后的数据放入缓冲区待下一步操作;若接收数据来源为网络流媒体数据,系统会读取流媒体服务器发来的音/视频数据。 进行RTP解析,解析后将与本地文件解析相同格式的数据放入缓冲区,待下一步统一操作。 取出缓冲区的数据并进行解码,该系统采用FFMPEG解码H.264的编码,并调用Android函数库将音/视频数据播放出来,供用户进行观看。图4.3 音/视频播放执行流程该模块主要分为数据接收、数据预处理、解码播放三个子模块这三个子模块的设计过程。4.5 扩展模块设计该子模块实现了系统中音/视频文件的智能化搜索功能,其具体的业务流程如图4.11所示。首先由MediaScanner来检索手机中所有的音/视频文件,然后对这些文件的信息进行智能化匹配,找出需要的文件。由于仅仅是采用文件名来进行匹配,可能存在多个路径不同的文件具有相同的名字的情况,所以匹配结果可能不止一个。此时,需要将所有匹配到的文件及其文件信息展示出来,供用户进一步按需选择。若没有找到一个与此文件名匹配的文件,则提示无此文件。图4.11 音/视频智能化搜索流程4.6 数据库设计数据库技术是信息资源管理最有用的方法,本文中主要在本地音/视频文件和历史播放文件的记录上用到了数据库。在进行数据库设计时,需要对此应用环境构造一个最优的数据库模式,以高效的存储数据,满足信息存储与信息处理的要求。该系统数据库中的E-R如图4-12所示。图4.12 数据库E-R关系该系统所涉及到的数据主要是音/视频文件和历史音/视频文件,而它们的关系为:音/视频文件被点播或直播播放完毕后,就成为历史播放文件,存储在本地的数据库中。5 基于Android平台的流媒体客户端软件测试5.1 系统测试环境该系统的软、硬件测试环境如表6.1所示。表6.1 系统测试环境表流媒体服务器CPU内存硬盘显卡操作系统流媒体服务器酷睿i3处理器(双核)4G500G SATA5400r/min独立显卡1GWindowsWowza Media Server手机客户端手机型号网络模式操作系统网络环境主屏尺寸主屏分辨率MX5LETAndroid OS 5.1WIFI/4G55寸2140*1080像素5.2 系统功能测试该系统主要包含有两个大功能模块:音/视频播放
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭农场信息化建设与数据驱动的运营优化
- 公园城市绿地资源整合与优化策略
- 创新实践教学体系提升学生综合能力
- 账号交易合同(标准版)
- 绿化绿化经费申请报告(3篇)
- 银行正式劳动合同(标准版)
- 留守儿童补助申请报告(3篇)
- 干货供货合同(标准版)
- 争做环保小卫士课件点评
- 应对政府监管部门(如市场监督管理局)飞行检查应急预案
- 某县某年度高标准基本农田建设项目复核报告
- 医学教材 围术期过敏反应
- 【MOOC】管理会计学-西南财经大学 中国大学慕课MOOC答案
- 现代辅助生殖技术护理伦理
- 体育设施建设造价评估方案
- 风力发电运维值班员(高级工)理论考试题库(浓缩400题)
- 人美版美术七年级上册第一单元《第2课 品篆刻之美》课件
- 宪法培训课件教学课件
- 华为全球培训中心
- 2023药品耗材集中带量采购知识标准培训模版课件
- 2024河南邮政社会招聘高频难、易错点500题模拟试题附带答案详解
评论
0/150
提交评论