当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Symbian 平台的流媒体播放器设计与实现

   1 引言

  继语音通话、短信服务、数据通信之后,音乐无线下载及实时播放正在成为全球手机运营商提供的新兴服务之一,引发广泛的关注。与传统的基于个人电脑的音乐播放器相比,手机音乐播放器的优势在于其下载和播放方式的方便快捷,可以给用户带来轻松舒适的使用体验。以手机音乐播放器为媒介,运营商可以依靠其自身对移动通信网络服务的强大控制力,为顾客提供更好的服务。由于移动通信服务的灵活性和多样性,使其在增值业务方面也有较强的扩展性。

  Symbian S60 平台的MulTImedia Framework( MMF) API 可以为上层应用程序提供多媒体服务,为用户创建和分发丰富多彩的音乐应用。作为一个多媒体处理单元的插件集,MMF 提供了操作终端硬件的通用接口,支持不同的音频操作,可实现本地回放和流式回放两种模式,可播放多种音频格式。

  在现有基于Symbian OS 的多媒体播放器的相关文献中,讨论了基于Symbian 平台的流媒体播放器移动客户端的设计原理,给出了指导性意见,并在结构、缓冲等方面给出了优化建议,在此基础上提出了用户界面的设计方案。但该文献没有给出多媒体技术的具体实现。本文设计并实现了基于Symbian 平台的多媒体播放器,但其仅支持本地播放,并没涉及到流式播放的相关技术。

  MMusic 是一款基于MMF 架构,用于播放多种音乐文件的多媒体播放软件。它不仅实现了音乐文件的本地播放,同时支持流式播放。除此之外,该音乐播放器还支持音乐下载、歌词下载及播放同步等功能。其界面美观、操作简单且具有多种功能。

  2 系统总体框架设计

  在设计系统框架时,首先明确了播放器需要实现的四项基本功能: ①支持mp3、wmv、aac 等多种格式的本地音频播放; ②支持流式音频播放; ③支持歌曲搜索及下载的功能; ④支持歌词同步的功能。

  MMusic 播放器的程序实现基于Symbian S60 平台的应用程序架构,采用多视图框架,根据不同的功能构造不同的视图。其视图包括播放界面( 主界面) 、搜索歌曲界面、音乐媒体库界面和电台列表界面。其中播放界面是整个播放器的核心界面,主要负责音频媒体的播放,包括本地播放和流式播放。

  根据播放模式的不同,动态选择相应的菜单和播放引擎。本地播放使用CPlayerAdapter 引擎。该引擎使用音频播放类CMdaAudioPlayerUtility 类及其相关的观察器MMdaAudioPlayerCallback 来实现本地音频播放。流式播放则使用CPluginAdaper 引擎来实现,它使用了CMdaAudioOutputSTream 和MMdaAudioOutputStreamCallback 类。

  MMusic 音乐播放器按功能可划分为六个模块:

  ①UI 模块,负责各个界面显示和界面间的切换,并对用户按键进行处理;②本地播放模块,可以提供本地音频文件播放及音量控制等服务;③流式播放模块,实现与服务器的交互与流式播放;④数据下载模块,负责音频数据的下载及存储;⑤歌词同步模块,保证音频播放与歌词播放的同步;⑥服务器模块,提供音乐文件和歌词等下载资源。不同模块的关系如图1 所示。



图1 MMusic 播放器功能关系图

  3 关键技术的介绍

  3. 1 音频播放

  音频播放功能可以通过MMF 所提供的接口来实现。其中音频播放类CMdaAudioPlayerUtility 类提供本地播放的API,而CMdaAudioOutputStream 类则提供流式播放的API。

  3. 1. 1 本地播放引擎

  MMusic 播放器把对音频文件的初始化、播放、暂停等操作封装在本地播放引擎CPlayer - Adapter中。该引擎包含支持音频回放操作和简单元数据读取操作的音频播放类CMdaAudio - PlayerUtility。由于它的所有操作都是异步的,需要一个客户端来*音频播放操作。播放引擎CPlayerAdapter 须继承MMdaAudioPlayerCallback 接口类。该接口类提供了两个方法,MapcInitComplete( ) 和MapcPlayComplete( ) 。本地播放流程如图2 所示。首先通过调用CMdaAudioPlayerUtility: : NewFilePlayerL( ) 函数构造并创建一个音频播放器的实例。当打开及初始化一个音频采样的工作结束后,系统自动调用MapcInit-Complete( ) 方法,通知客户端创建实例的结果。若成功创建,则可调用CMdaAudioPlayerUtility: : Play( ) 方法来播放音频文件。当播放某段音频采样操作完成后,系统再通过MapcPlayComplete( ) 回调函数通知客户端播放已完成。[!--empirenews.page--]

  3. 1. 2 流式播放引擎

  对于流式音频播放,则使用多媒体框架的CMdaAudioOutputStreamAPI。CPluginAdaper 为封装好的流式播放引擎,由它来调用流媒体播放的相关接口。本地内容播放和流式播放的主要不同在于文件打开方式、初始化方法及对音频数据流的处理方式。

  要实现流式播放,在程序里需要编写一个实现了MMdaAudioOutputStreamCallback 的客户端类。

  这个类提供三个回调函数,向客户端提示音频输出的流式过程结果,让程序能处理可能的错误。这些回调函数是MaoscOpenComplete( ) 、MaoscBufferCopied() 及MaoscPlay - Complete ( ) ,它们都必须由CMdaAudioOutputStream 类的使用类实现。因此,CPluginAdaper 须继承观察类MMdaAudioOutputStreamCallback来得到流式播放过程的结果。



图2 本地播放流程图

  在实现流式播放前,需要与服务器进行连接,获得待播放的音频数据流。在MMusic 播放器里,使用套接字来实现服务端与客户端的通信。客户端首先需要连接到Symbian OS 套接字服务器,然后打开一个套接字并指定TCP 作为传输协议。接着从列表文件得到服务器的IP 地址和端口,向服务器发送请求。等服务器作出响应后,读取响应的数据并进行分析,用来初始化播放引擎。客户端继续对服务端请求播放的音频数据。

  得到要播放的音频数据流后,则开始流式播放。

  其播放流程如图3 所示。首先初始化CMdaAudioOutputStream类。初始化完成后,Multimedia 框架会调用MaoscOpenComplete( ) 回调函数,指出音频输出已经可用。该框架所给出的参数是一个出错值,它指出初始化是否成功。如果成功,则给出KErrNONe。此处可以设置采样率和音量等。成功初始化后,则可以在客户端调用PlayL( ) 函数来播放音频数据流。它调用FillBufferL( ) 函数把数据往缓冲区填充,并使用CMdaAudioOutputStream: : WriteL( const TdesC8&aData) 进行播放。其中参数aData 为缓冲区数据。

  WriteL( ) 是一个异步函数。当复制了描述符aData中的数据到音频硬件之后,该框架将调用MMdaAudioOutputStreamCallback: : MaoscBufferCopied( ) 回调方法,通知客户端应用已收到aData 并将其复制到播放流。此时,可以再调用FillBufferL( ) 函数继续填充缓冲区,从而实现连续不断地流播放。



图3 流式播放流程图

  3. 2 音频文件下载及断点续传

  MMusic 使用超文本传输协议HTTP 来实现音频文件和歌词的下载。HTTP 是在TCP /IP 协议上实现的应用层协议,用于在互联网上传输信息。它使用Socket 在服务器和客户端之间进行数据传输。

  在Symbian OS 版本中,提供了对HTTP 客户端的API 支持。

  使用HTTP 进行通信时,客户端需要建立一个HTTP 客户端会话,在会话上处理与HTTP 服务器的通信。在会话上建立HTTP 通信事务,事务由请求和响应组成,在同一个会话上可以建立一个或多个事务。也可以同时建立多个会话,来实现不同的连接。

  在创建HTTP 引擎时,首先创建一个RHTTPSession类的对象,然后调用该类的Open( ) 方法,打开这个新建立的会话。然后使用RHTTPTransaction类代表HTTP 事务。事务是在HTTP 客户端会话打开的。打开事务时,需制定事务使用的数据传输方法,GET 或POST,同时传入要打开的URL。服务端处理完成后,返回响应数据。HTTP 客户端通过对MHTTP - TransactionCallback 的回递,处理响应结果和接收响应数据。[!--empirenews.page--]

  歌曲的下载分两步来实现。首先把要搜索的歌曲名字用HTTP 引擎发送到服务器,服务器返回XML 格式的文件给客户端。该XML 文件包含了搜索到的歌曲名字、下载地址、音频文件格式和大小等信息。客户端用Symbian 自带的XML 解析器对文件进行解析,把解析后的歌曲信息存放在数组里。

  每个数组的元素为自定义的结构体,包含歌曲名,下载地址等内容。

  解析完毕后,切换到列表界面。列表界面显示刚下载的XML 文件的解析结果。用户可以根据自己的喜好选择要下载的歌曲。此时,客户端提取出歌曲下载的地址,用封装好的HTTP 引擎向服务器发送下载请求。客户端首先判断待下载的文件是否已存在,如果不存在,则使用HTTP 引擎普通下载模式下载音频文件。如果待下载的文件已存在,则获得现有文件大小,并把它作为参数传给HTTP 引擎,发送到服务器端,实现断点续传。具体代码如下:



  3. 3 歌词同步

  首先在用户终端进行本地搜索与正在播放的音乐文件名字相同的歌词文件。若搜索到符合条件的文件,则对其进行解析。把文件的每一行内容作为一个数组单元存放在数组里,数据的单元包括有播放时间和歌词内容。由CMdaAudioPlayerUtility 类的GetPosition( ) 函数获得当前音频文件的播放位置,与数组中记录的歌词文件的时间做对比,来实现歌词同步。若没有搜索到歌词文件,则用歌词下载引擎从服务器下载并解析。

  4 软件实现及效果

  根据播放器的整体架构设计,在Symbian 平台上实现音乐媒体播放器,并在实际的移动通信网络中进行了测试。测试环境是中国移动GPRS /EDGE网络。测试手机为Nokia N95,操作系统为V9. 2,用户界面为S60 第三版。其ARM 主频11 332MHz,内存160MB。在真机上进行测试时,本地音频文件播放流畅。而播放在线电台的内容时( 即流式播放) ,其效果会受到网络状况的制约,但整体比较流畅。

  播放器在真机上的效果如图4 所示。其中( a) 显示的是播放器的功能菜单,( b) 为本地播放和歌词同步的效果,( c) 显示流式播放时连接服务器的状态,( d) 为连接服务器成功后流式播放的效果,界面上可以显示当前的连接速度、音频文件的格式、流量等。



( a) 播放器功能菜单( b) 本地播放和歌词同步的效果( c) 流式播放时连接服务器的状态( d) 连接服务器成功后流式播放的效果

图4 软件效果图

  5 结束语

  MMusic 音乐播放器很好的实现了音频播放、音乐下载、歌词同步等功能。在此基础上,还可以增加一些音频的效果,使用户有更好的视听感受。同时在歌词同步方面,程序还可以增加调整歌词的功能,当出现歌词不同步时,用户可以根据实际情况进行调整。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2023年9月15日 /美通社/ -- "人才和创新是公司未来发展的两大法宝。"近日,飞凯材料副董事长、总经理苏斌在接受中国证券报记者专访时表示,公司今年二季度营业收入环比增长18.97%,归属于...

关键字: PLAYER 光刻胶 屏幕显示 ASIA

上海2023年9月14日 /美通社/ -- 9月12日,开利运输冷冻新售后服务维修中心乔迁新址并举行盛大开业典礼并发布售后服务品牌BluEdge蓝色安智。这是开利运输冷冻在中国的首家自营4S标准售后服务维修中心设立十周年...

关键字: EDGE 数字化 配件 PLAYER

上海2023年8月30日 /美通社/ -- 在今年8月中旬的波坦塔机张家港客户见面会上,市场总监池鸿梅女士向客户和代理商阐述了波坦作为制造商,面对未来的看法:"工业化、城镇化、市场化和国际化四化同步从根本上离不...

关键字: 斜拉桥 PLAYER NAS 智能化

为8K超高清、3D全景视频、流媒体和实时视频通信等应用提供灵活可配置的视频解决方案

关键字: 解码器 8K超高清 流媒体

上海2023年3月3日 /美通社/ -- 近日,经过国际领先标准、测试及认证机构BSI的严格审核,宝山钢铁股份有限公司(以下简称"宝钢股份")正式获得ISO/IEC 27001信息安全管理体系国际认证...

关键字: ISO 信息安全 安全管理 PLAYER

厦门2023年2月20日 /美通社/ -- 随着开年中国经济加速复苏,韧性和活力日益显现,越来越多的外资企业选择加大对华投资,积极把握新的发展机遇。2023年2月15日,奥的斯机电电梯有限公司(下称"奥的斯机电...

关键字: 机电 电梯 联电 PLAYER

大连2023年1月4日 /美通社/ -- 2023年1月3日,信华信技术股份有限公司核心业务公司,信华信(大连)软件服务股份有限公司、信华信(大连)数字技术有限公司,揭牌仪式在信华信国际软件园举行。...

关键字: 软件 PLAYER ASIA NAS

上海2022年12月12日 /美通社/ -- 在米硅科技成立5周年之际,Exact信息系统一期与二期项目成功上线。 项目的成功是对米硅科技5周年的献礼, Exact信息系统将助力米硅科技加速发展。 米硅科技 米...

关键字: 信息系统 AC 芯片 PLAYER

深圳2022年12月1日 /美通社/ -- 11月23日,以"创新科技 智领未来"为主题的第86届中国国际医疗器械博览会(以下简称"CMEF")在深圳国际会展中心举行,吸引来自19...

关键字: 医疗器械 医疗设备 元件 PLAYER

北京, 2022年11月28日 /美通社/ -- 财新传媒社长胡舒立在第十三届财新峰会上宣布,财新传媒线上订阅,至2022年10月底,已经有90余万付费读者,在今年年中就已成为英美之外全球最大的付费订阅媒体。本次峰会主题...

关键字: 新加坡 流媒体 NI IP
关闭
关闭