当前位置:文档之家› 《基于Android平台的音视频流媒体播放器》

《基于Android平台的音视频流媒体播放器》

目录1. 绪论 (2)1.1. 提出问题 (2)1.2. 研究现状 (2)1.3. 研究思路与方法 (4)2. Android操作系统整体结构分析 (6)2.1. Android系统简介 (6)2.2. Android整体结构 (7)2.2.1. Android 架构 (7)2.2.2. 特征 (9)2.3. Android 应用组件 (9)2.3.1. 活动(Activity) (10)2.3.2. 服务(Services) (11)2.3.3. 广播接收者(Broadcast receivers) (12)2.3.4. 内容提供者(Content providers) (12)2.4. Android NDK工具 (13)3. FFmpeg流媒体平台介绍与研究 (14)3.1. FFmpeg简介 (14)3.2. FFmpeg 的编译与运行 (14)4. 流媒体播放器应用分析 (16)4.1. 系统功能需求分析 (16)4.2. 系统整体结构需求分析 (17)4.3. 系统业务流程分析 (18)4.3.1. 媒体播放模块业务流程 (18)4.3.2. 媒体文件管理模块业务流程 (19)4.3.3. 系统设置模块业务流程 (21)5. 流媒体播放器应用设计 (22)5.1. 系统设计模型 (22)5.2. 系统UI设计 (23)5.2.1. 媒体播放模块设计 (23)5.2.2. 媒体文件管理模块设计 (25)5.2.3. 系统设置模块设计 (29)5.3. 系统数据库设计 (31)5.3.1. SQLite简介 (31)5.3.2. 播放器库表说明 (31)6. Android平台的流媒体播放器应用实现 (33)6.1. Android 应用程序开发 (33)6.1.1. Android 开发环境 (33)6.1.2. Android 应用开发特点 (34)6.2. FFmpeg移植 (36)6.3. FFmpeg音视频解码 (39)6.4. 流媒体播放功能的开发与实现 (41)总结 (46)致谢 ..................................................... 错误!未定义书签。

参考文献 .. (47)基于Android平台的音视频流媒体播放器摘要伴随着多媒体技术与通信技术的不断崛起,结合网络、移动终端、多媒体技术三者为一体的视频监控技术有了迅猛发展,越来越多的多媒体客户端利用移动网络实现流媒体服务。

在这一背景下,针对移动网络和移动终端的特点,提出移动流媒体客户端的解决方案很有现实意义。

本论文试从理论与实践两方面深入探讨基于Android操作系统的移动流媒体播放器的研究与设计。

首先阐述了Android系统整体的框架结构,分析了Android主要四大应用组件的概念及其应用,剖析了Android NDK对C/C++的编译;其次对开源流媒体框架FFMPEG进行了深入的描述,阐述了其对于在windows下的编译和运行,剖析了FFMPEG对于android平台的移植,使得播放器在流媒体文件的解码上有了更大的扩展;最后根据已分析的需求开始进行播放器的设计、开发和实现。

在播放器开发过程中利用Android多媒体框架OpenCore和移植到Android平台上的FFPMEG来实现对音视频流媒体文件的解码以及实现音视频同步机制。

关键词:安卓;FFMPEG;流媒体;媒体播放器;移动通信1.绪论1.1.提出问题伴随着多媒体技术与通信技术的不断崛起,结合网络、移动终端、多媒体技术三者为一体的视频监控技术有了迅猛发展,越来越多的多媒体客户端利用移动网络实现流媒体服务。

在这个拥有庞大用户群的时代,流媒体服务有着巨大的市场发展潜力。

在这一背景下,基于移动终端与移动网络的特点,提出实现移动流媒体客户端的方案具有十分现实的意义。

在手机增值业务市场,彩信、彩e、短信等虽然有了交互、24小时不间断等不同于传统媒体的特点,但它们显示的内容主要以静态的文字、图像为主,相对影响其对于媒体作用的发挥。

随着用户对需求的不断提升,在多媒体中需要更好地融合文字、声音和图像,以弥补短信中单调、缺乏色彩的不足,真正的让用户“振聋发聩”,感受一个逼真形象、有声有色的美丽世界。

正由于有着这种极大的用户需求,从而加快了流媒体技术的实现。

它的最大特点之一就是可以在播放器中边下载边播放,无需下载整个媒体文件,实现了观看电视、电影或在网上点播的梦想。

现在,人们在相对较好的网络环境下就能够在线观赏到高品质的、连续的音频和视频电视节目。

在大互联网的时代下,流媒体的产生是必然性的,并且会给我们生活和工作带来巨大的影响。

本论文结合FFmpeg开源代码中解码流程,提出了移动终端流媒体播放器基于分层体系架构的设计方案。

该设计的特点是在底层屏蔽不同类型文件解码时对媒体流处理的差异,最终在Android平台上实现该播放器。

1.2.研究现状由于互联网的迅猛发展,流媒体技术在其基础上的进展也是日新月异。

流媒体的边播放边下载的特点,不仅不再让用户烦恼在漫长下载的等待中,并且明显降低了多媒体系统中的存储。

它多被应用在互联网的信息服务,并成功为各项应用进行多媒体的信息传输。

国内外学者与专家通过对流式传输技术、编解码技术和音视频网络传输协议等技术的不断研究和实践,在诸多方面上都取得了显著的成就。

1996年,IETF制定了网络控制和网络传输协议,其中,包括实时控制协议、实时传输协议族和实时传输控制协议,于此同时,也制定了流式传输技术 [1]。

随着流媒体对网络控制和传输的要求越来越高,IETF的专家组也不断地研究并且完善该协议。

到了2003年,IETF发布新版本,新版本中更好地适应了流媒体在网络传输中的更高要求。

全球电信标准化组织移动网络流媒体服务框架,其中定义了端到端的分组交换流媒体业务Packet Switched Streaming Service 的规范,即PSS。

它属于应用层服务,它的主要任务是负责移动流媒体服务端和客户端间的通信 [2]。

根据PSS协议栈的规定,实时流协议的基本任务是建立连续的时间同步流,实现流媒体的实时控制和点播 [3]。

会话描述协议初始化了流媒体参数,会话配置文件包括媒体文件列表、媒体文件服务端的所在地址以及媒体文件编码信息,播放器中的设置通过SDP文件实现。

早期VCD的每帧画面是320*240的像素,也就是76800个像素,每秒显示25帧,若每像素用16位来表示,每秒数据量将会有30兆。

即使不考虑音频信号,存储半小时的节目也需要将近6.9GB的空间,传输一路数字信息号的带宽就需要超过30Mbps[4]。

因此,在这种情况下明显满足不了现实需求,使得研究音视频解压技术和移动通信技术迫在眉睫,让视频通信更加流畅并现实生活中得到更广泛应用。

流媒体视频传输采用高质量媒体编解码、高压缩比和高效传输速率移动通信技术,可极大提高传输速率和缩减媒体容量。

短短几年,国际上已成功研究出像P-VOP、I-VOP和ROI区分等算法,而且定制了多种视频媒体编解码标准在对于不同应用领域中。

如MPEG-1、MPEG-2、H.261/H.263和MPEG-4[5] [6]。

MPEG-4使得流媒体更具有交互性和灵活性,其中的H.264编码标准,它是ISO/IEC的MPEG和ITU-T的VCEG所结合的一个全新高压缩数字视频编解码标准,它符合ITU-T的H.264标准,也是ISO/IECR的MPEG-4的一部分[7]。

H.264与其他编解码相比较更多突出:具有更高的压缩比率与更好的移动网络适应性[8]。

当前,ISO/IEC的MPEG和ITU-T的VCEG联合视频组正在研究高效的视频编解码标准HEVC,让视频传输的质量与数据压缩比率有更高层次的提高,它被称为H.265,计划在2013年完成。

只有不断研究新的视频编码标准,未来人们对于流媒体技术或许将有着更高的要求,人们需要不断研发与实现出更新的编解码标准才能满足社会的发展需求[9][10]。

当今国际上主流的流媒体解决方案有几种,分别是Realsystem、QuickTime、Flash Media System和Windows Media System。

Realsystem是由RealNetworks公司研发,在基于SMIL技术并且结合自身的RealText与RealPix技术使其拥有媒体控制能力和交互能力,SureStream自适应流技术可自动适应不同带宽的流传输播放;QuickTime是由美国苹果公司研发的视频标准,它采用Sorenson Video编解码视频和独有的Qdesign Music 编解码音频技术。

Flash Media由Adobe公司制定的解决方案,它被广泛释放在当前互联网平台中,它的重要特点就是能够跨媒体、跨平台的传播。

国内外较流行的视频网都使用Flash Media,如Youtobe、土豆网等。

Windows Media是由微软所研发和制定,它基于Win操作系统,并且是免费提供服务的流媒体平台,微软为开发者提供相应的SDK 给与使用。

国内外在基于Android操作系统上的流媒体播放器不在少数,但或多或少都存在一些问题与不足:在国内,第一个基于Android操作系统上实现在线视频播放的播放器软件Dopool手机TV,在2G网络GPRS和EDGE的环境下进行播放测试,结果出现声音播放不连续、内存占用率大及画面不间断的停止;国外的流媒体播放器代表性的是开源项目VLC播放器,但进行播放时常也不大稳定;youtube视频网站的youtobe Mobile,它使用了vorbis和VP8的音视频编解码技术,但VP8与H.264在编解码的效率上还是存在一定差距 [11]。

1.3.研究思路与方法本论文设计与开发的Android流媒体音视频播放器,面向的用户群体的社会所有用户群体,是基于Android平台的流媒体播放器应用,采用分层设计结构,该播放器的解码库源自经过剪切优化的FFmpeg源代码,并且本论文中的播放器提供了对网络视频的解析与播放,是其应用范围更为广泛。

1.题目基于Android平台的音视频流媒体播放器2.选题意义随着移动终端设备更新换代速度的不断增加,移动互联网慢慢成为访问互联网的主流趋势,移动互联网的兴起也导致其内部细分市场的竞争越来越激烈。

根据《网宿科技中国互联网发展报告(2012年第四季度)》中数据显示,2012年移动终端所用操作系统中,Android增长迅猛,第四季度占比达到67.21%,稳居移动互联网终端主流操作系统的位置[12]。

根据网宿科技后台日志对有效独立IP的统计,每天约有三四千万的移动终端用户访问互联网。

随着信息技术的快速发展与移动传播方式的不断增加,互联网移动化已经是一种势不可挡的发展趋势。

相关主题