【Android源码 栏目提醒】:本文主要为网学会员提供“基于Android的流媒体系统 - 硕士论文”,希望对需要基于Android的流媒体系统 - 硕士论文网友有所帮助,学习一下!
摘 要 基于
Android 的流媒体系统 随着手机移动用户的不断增加和流媒体技术的发展,移动流媒体服务正成为移动业务的研究热点之一。
在这一背景下,论文针对移动网络和移动终端的特点进行了移动流媒体系统。
本文分别从需求分析、三个步骤讨论了基于
Android 的流媒体系统。
在需求分析阶段,从系统的业务需求和功能需求中抽象出具体的使用人并提取出用例流程,同时对用例进行了具体的分析和描述。
考虑到移动通信网络的带宽和智能手机平台的内存较小的特点,系统采用了C/S 模式。
流媒体服务器将存储在服务器上的音视频文件经过协议封装并流化后传递给多个客户端,实现同步共享。
随着客户端对服务器请求的增加,处理连接请求的线程数量则随之增加,本文采用了线程池的解决方案,使用多线程分别同时接受连接队列已经建立的客户连接,同时对于请求同一资源的客户端分配使用同一线程的管理队列进行处理,不仅提升了服务器的响应速度,同时也减少了服务器的 I/O 读写次数。
网络控制模块采用 RTSP 协议来进行与服务器的会话协商。
由于 RTP 协议更侧重数据传输的实时性,所以使用了 RTP 协议传输流媒体数据。
但是 RTP 协议不提供流媒体传输数据的可靠保证,所以进一步使用了 RTCP 协议向流媒体服务器反馈流媒体文件的控制信息对服务器进行动态调节以实现更流畅的播放效果。
Android 的多媒体核心 Stagefright 虽具有良好的封装性但却支持很少的格式,客户端的设计将开源项目 FFmpeg 移植到
Android 平台上,这样即利用了stagefright 封装性良好的优势,又弥补了 stagefright 解码库不足的缺陷,由此可以实现对 FFmpeg 所支持的众多音视频格式的解码,解码后的内容可以交给音视频播放模块进行播放。
基于上述工作,实现了基于
Android 平台的流媒体系统的基本功能,并解决了服务器端并发控制、流媒体传输和客户端解码的几个关键问题。
经过测试,系 I统功能良好。
随着移动通信网络和流媒体技术的发展,基于移动终端的流媒体系统将会得到不断的完善。
关键词:
Android 平台,流媒体,线程池,网络协议,FFmpeg II Abstract Design and Implementation of the Streaming Media System Based on
Android With the continuous increase of mobile users and development of streamingmedia technology mobile streaming media service is becoming one of the focus ofthe mobile business. In this context this paper bases on the characteristics of mobilenetwork and mobile terminals to make a solution of the mobile streaming mediasystem. This paper uses three steps including analysis design and realization to realizethe streaming media system based on
Android.At the step of analysis this paperextracts use cases from the systems business requirements and functionalrequirements.Then this paper makes a detailed analysis and description of these usecases. Taking into account the features of the mobile communication networkbandwidth and the storage capacity of the smart phone platform this paper designsthe system as a C/S mode.Then this paper makes a specific design of the systemincluding the server module the client module and the network control module.Thestreaming media server transports the audio and video files stored on it to the multipleclientsat the same time it realizes synchronization sharing.With the increase clientrequests to the streaming media server the number of threads to handle the connectionbecome more and more this paper comes up with the solution of the thread pool touse multiple threads they accept these client connection at the same time.For theclients which request the same resource this paper uses the same thread managementqueue for processing.This method not only will enhance the speed of the serversresponsebut also reduce the servers I/O read and write. The network control module uses RTSP protocol to realize the session with theserver. As RTP protocol focusing on the real-time data transmission then this paperuses RTP to trasport straming media data. As RTP protocol does not provide a reliableguarantee for streaming dataso this paper uses RTCP protocol to send back to serverthe situation of the transportation in order to achieve a smoother playback. III Considering that the
Android platform multimedia core stagefright has a goodencapsulation but support too few formats so the open source project FFmpeg istransplanted to the
Android platform and it benefits the advantages of the stagefrightencapsulation but also make up for the shortcoming of lack of stagefright decodinglibrarythen it can decode all of the formats which FFmpeg supports.The decoded fileis sent to the audio and video playback module to play. Based on the above work this system achieves the basic functions of streamingmedia system based on
Android and solves the server-side concurrency controlstreaming and decoding client issues.After testingthe system runs well.With thedevelopment of mobile communication and network the streaming media systembased on mobile terminals will be consummated continuously.Keywords: AndroidStreaming mediaThread poolNetwork protocalFFmpeg IV 目 录第1章 绪 论 ............................................ 1 1.1 课题背景 ........................................... 1 1.2 流媒体技术简介 ..................................... 2 1.3
Android 平台简介 ................................... 3 1.4 课题研究内容及论文结构 ............................. 4第 2 章 基于
Android 平台的流媒体系统的需求分析 ............ 6 2.1 业务描述 ........................................... 6 2.2 功能性需求 ......................................... 6 2.2.1 本地音乐需求及建模 ............................. 6 2.2.2 网络音乐需求及建模 ............................ 12 2.3 本章小结 .......................................... 14第 3 章 基于
Android 平台的流媒体系统的设计 ............... 15 3.1 系统逻辑架构 ...................................... 15 3.2 流媒体服务器端设计 ................................ 15 3.2.1 流媒体网络发布形式 ............................ 16 3.2.2 服务器端的并发处理机制 ........................ 17 3.2.3 服务器端对流媒体数据的封装 .................... 18 3.3 网络控制模块设计 .................................. 20 3.4 流媒体客户端设计 .................................. 25 3.4.1 UI 设计 ....................................... 25 I 3.4.2 播放模块设计 .................................. 27 3.6 本章小结 .......................................... 29第 4 章 基于
Android 平台的流媒体系统的实现 ............... 30 4.1 服务器端的实现 .................................... 30 4.2 网络控制模块的实现 ................................ 32 4.3 音视频播放模块的实现 .............................. 34 4.3.1 利用 FFmpeg 来扩展
Android 平台解码器 ........... 35 4.3.2 进度控制 ...................................... 36 4.3.3 数据库创建和查询 .............................. 37 4.3.4 音视频文件播放流程 ............................ 38 4.4 本章小结 .......................................... 39第 5 章 总结 ............................................. 40 5.1 论文工作总结 ...................................... 40 5.2 存在问题和展望 .................................... 40参考文献 ................................................ 42作者简介以及在学期间所取得的科研成果 .................... 44致 谢 .................................................. 45 II 第1章 绪 论1.1 课题背景 2012 年 1 月,中国手机用户已达 9.88 亿,而二月下旬则达到了 9.97 亿,手机用户不断增加促进了手机市场的发展。
手机也从以前的单一的通信平台,逐渐演变为集 MP3、MP4、PSP、GPS、上网等功能于一体的多功能机。
目前,市场上流行的手机操作平台主要有
Android 系统,苹果公司开发的 iphone OS 系统以下简称 IOS,RIM应用于 blackberry 手机,Symbian 系统以及 windows phone以下简称 WP系统。
1.
Android 系统
Android 最初由 Andy Rubin 开发,后被 Google 公司收购。
Anroid 有以 Google为首的 OHAOpen Handset Alliance的支持,使用开放
源码策略,平台以开源的项目来构建,是完全开放的平台2。
而且有开放手机联盟 OHA 的支持,
android的市场份额正在飞速前进。
2. IOS 系统 IOS 最初应用于 iphone,现在陆续应用于 ipad 等 Apple 的其他产品上。
触摸屏的设计吸引了众多爱好者的目光。
同时,有 App Store 的支持,iphone 在全世界拥有广大的忠实用户,但是昂贵的价格和封闭性阻碍了 iphone 的迅速发展。
3. Symbian 系统 由于 Symbian 系统开发较早,所以对硬件架构的局限性和繁琐的应用签名授权也使得它在与新生代的操作系统如
Android 等的竞争中频现颓势。
而且Symbian 的定制灵活性也使得整合 Symbian 手机变得十分困难。
2011 年初,Nokia宣布将与微软合作,推出 windows phone 手机,Symbian 终将退出市场。
4. Blackberry OS blackberry黑莓由加拿大的一家通信公司 RIMResearch In Motion开发生产。
由于黑莓使用“QWERTY”键盘,所以邮件功能十分强大,而且黑莓支持 1Microsoft Exchange、IBM Lotus Domino,还有 SurePress 屏幕技术,在美国市场曾经掀起过 blackberry 的热潮。
但是由于 iphone 和
Android 的出现,黑莓在美国的销量 2011 年第四季度下降 45。
而且,在中国,由于地域和文化的原因,blackberry 的销量一直不如诺基亚、三星等品牌手机。
5. Windows Phone WP 具有桌面定制、图标拖拽、滑动控制等一系列前卫的操作体验23。
但是在 Anroid 和 apple 双雄相争的情况下,WP 很难找到自己的立足之地。
根据美国 NPD Group 的数据,anddoid 在 2011 年第四季度的市场占有率位居第一。
而且有手机开放联盟的支持,
Android 的数据很有可能还会不断增长。
而且,3G 时代的来临以及多媒体技术的发展,使得通过移动网络提供流媒体的服务也逐渐成为可能。
由于全球移动用户数非常庞大,因此移动流媒体服务具有巨大的市场潜力,也正成为移动业务的研究热点之一。
在这一背景下,针对移动网络和移动终端的特点,提出移动流媒体的解决方案很有现实意义而且蕴藏着强大的市场潜力。
1.2 流媒体技术简介 流媒体是一种可以使音/频文件能够通过网络以实时的、无需等待的方式进行播放的技术 。
流媒体应用范围非常之广,主要包括视频直播、网络电视、在 10线听歌等等。
流媒体技术有以下特点: 1. 实时性流媒体以流的形式进行传输,避免用户等到全部文件下载到计算机后才能播放。
2. 降低了系统的存储空间需求。
流媒体文件在互联网中是以压缩包的形式传送的,这些压缩包的路线不同,加上网络的拥塞和动态的变换,所以这些压缩包到达用户的计算机的时间和顺序都有所不同。
所以,在客户端需要将这些包缓存后再进行播放,来弥补因延迟和抖动造成的包的乱序。
3. 启动时间短 由于流媒体可以使用户边下边看,用户可以只等待非常少的时间就可以观看到视频文件。
一般来说,一个 1 个小时的视频的启动时间甚至 2只需 10 几秒的时间。
流媒体技术的广泛应用打破了广播、电视与网络之间的界限,网络成为广播电视的辅助者与延伸者。
而且,随着无线网络的发展,使得通过无线网络传输流媒体数据成为可能,通过网络,用户通过手机可以随时随地在线播放音频和视频文件。
利用流媒体技术,网络可以提供新的音视频的节目样式,比如收费视频点播服务等等。
这样,将流媒体技术与网络的优势结合,将存在着具大的商机和无限的发展潜力。
1.3
Android 平台简介
Android 平台的架构由以下 5 个部分组成,分别为: Linux 内核、
Android 运行环境、核心库、应用程序框架和应用程序组成,如图所示: 图 1.1
Android 架构图 3 1. Linux 内核
Android 平台是基于 Linux 2.6 kernel 的。
在对 Linux 内核进行些许修改的同时保留了包括硬件驱动、内存管理、进程管理以及网络等服务。
2. 运行环境 运行环境包含 Anroid libraries 和 Dalvik 虚拟机。
每个
Android 应用程序都用系统分配给它的自己的线程,同时,它也拥有自己的 Dalvik 虚拟机实例。
不是一个 Dalvik 虚拟机对应多个应用程序,而是一个应用程序对应一个 Dalvik 虚拟机。
Dalvik 在开发时就考虑到移动设备的种种限制,所以占用内存非常少。
Dalvik 执行的不是 java 代码,而是经由工具 dx 将 java 代码转换而成的.dex 文件。
3. 核心库
Android 在保留 java 的一些核心库的基础上,添加了一些自己的 C/C库,这些库被大量的
Android 系统组件使用。
其中,核心的库包括:media framework、WebKit、SGL、OpenGL、FreeType、SQLite 等等。
这些库可以通过 framwork 进行调用。
Android Runtime 和 Libraries 共同形成了
Android framework 的基础。
4. 应用程序框架 应用程序框架在
Android 中是开发应用程序的基础,
Android 程序员大多数的时间都在和 framework 打交道。
在 framework 里,开发人员可以使用已有的组件,也可以自己开发组件,大大提升了组件的可重用性和可替代性。
Framework的核心组件包括:Location-based service、activity manager、content providers 和XMPP 服务等等。
5. 应用程序 应用程序包括顶层架构的一些核心应用程序,这些应用程序可以是一个email 客户端,一个 SMS 应用程序,一个日历,一个地图的应用,一个 web 浏览器等等。
Android 的所有的应用程序都是以 java 作为其编写语言的8。
1.4 课题研究内容及论文结构 论文主要研究如何在
Android 平台上流媒体服务器与客户端流媒体数据的传输。
根据相关研究和实验,本文共分为 5 章 4 第一章主要介绍了各个手机操作平台的优势和劣势,介绍了
Android 和流媒体相关技术; 第二章分析了
Android 平台上的流媒体系统的需求,并对每个用例进行建模; 第三章将系统设计将流媒体系统分为服务器端、网络控制和客户端三个模块进行设计,同时对于服务器端处理并发连接和客户端解码能力的不足提出了具体的解决办法; 第四章对流媒体服务器端具体的流程、网络控制模块的协议和客户端的实现进行了具体的说明; 第五章总结描述了系统的不足之处和移动流媒体系统未来的发展趋势。
5 第 2 章 基于
Android 平台的流媒体系统的需求分析2.1 业务描述 目前,市场上的流媒体播放器大都基于 PC 机,即使是手机内的播放器,也大都只能播放手机内存储设备的音视频文件。
近年来,随着
Android 市场份额的不断增加,越来越多基于
Android 平台的应用程序如雨后春笋般出现。
流媒体技术的发展使得音频和视频文件的传送时间更短,传送效率更高。
随着 3G 网络的逐渐成熟,越来越多的用户将通过移动网络欣赏歌曲的视频文件。
所以,基于
Android 平台的流媒体系统具有广阔的市场前景13。
2.2 功能性需求 本系统要求能够实现的功能包括两部分:一个是在
Android 平台上实现播放本地音视频文件,即手机存储设备内的音乐。
另一个是在线播放音视频文件,即通过网址连接到媒体服务器,然后以流的方式边下载边播放文件。
下面分别对系统的功能性需求建模,可以分为播放本地音乐,播放本地视频文件,播放网络音频文件和播放网络视频文件,其中播放视频文件和播放音频文件的用例大致相似,就不再做重复。
2.2.1 本地音乐需求及建模 对于本地文件来说,用户可以通过读 SD 把文件读取出来,然后交给解码器进行解码。
对于本地音乐,用户可以根据自己的喜好创建自己的播放列表比如动感音乐、轻音乐等。
而且对于每一首歌曲,用户可以的操作有播放/暂停、快进、快退等操作,同时,可以通过编程获取歌曲的信息譬如歌手、所属专辑以及专辑的封面等等。
对于列表中的音乐,播放模式支持随机播放和顺序播放两种播放模式。
用例图可以用来描述系统的功能需求,具体用例图如图所示: 6 图 2.1 本地音乐用例图 每个用例都可以用事件流文档来描述,事件流文档包括对该用例的简要描述,涉及的参与者,用例开始的前置条件和事件流的详细描述。
下面,分别对播放本地音乐的用例做具体说明: 表 2.1 播放用例描述用例名称 播放简要描述 对音乐进行播放前置条件 用户进入播放列表,或者音乐处于暂停或停止状态基本事件流 1. 用户选择播放曲目 2. 用户点击“播放”按钮 7 表 2.2 暂停用例描述用例名称 暂停简要描述 能够暂停正在播放的歌曲前置条件 音乐处于播放状态基本事件流 1. 用户点击“暂停”按钮 2. 系统实现暂停功能 表 2.3 停止用例描述用例名称 停止简要描述 能够停止播放歌曲前置条件 音乐处于播放状态基本事件流 1. 用户点击停止按钮 2. 系统实现停止功能 表 2.4 上一首/下一首.