流式播放引擎 - Symbian平台上实现流媒体播放器
对于流式音频播放,则使用多媒体框架的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 的回递,处理响应结果和接收响应数据。
- 第 1 页:Symbian平台上实现流媒体播放器
- 第 2 页:流式播放引擎
- 第 3 页:歌曲的下载
- 第 4 页:软件实现及效果
本文导航
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
相关阅读:
- [电子说] 基于FPGA技术HIFI音频播放器方案 2023-10-23
- [电子说] 基于RTT-LVGL的音乐播放器设计案例 2023-09-18
- [电子说] 使用MC34063设计的mp3播放器充电器 2023-10-06
- [电子说] OpenHarmony创新赛技术赋能,深开鸿专家9月开讲 2023-09-13
- [电子说] 基于CW32的MP3播放器设计 2023-09-06
- [电子说] Wowza HTML5视频播放器--Flowplayer 2023-09-01
- [电子说] EN50332—媒体播放器(含耳机)输出音量安全规范测试方案 2022-07-21
- [电子说] 蓝牙HI-FI Hi-res播放器方案 2021-12-04
( 发表人:小兰 )