首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于Symbian 平台的流媒体播放器设计与实现
来源:本站整理  作者:佚名  2011-03-19 16:26:55



   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 的回递,处理响应结果和接收响应数据。

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

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

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:54,152.34000 毫秒