1 / 12

Symbian 的媒体播放

Symbian 的媒体播放. —— 陈佳栋. MMF.

Download Presentation

Symbian 的媒体播放

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Symbian的媒体播放 ——陈佳栋

  2. MMF • Symbian多媒体框架(MMF)为各种多媒体应用(如S60音乐播放器和媒体播放器)提供了一些高级API。MMF拥有一个插件架构,它使用了多种类型的用于媒体回放和录制的插件。所有的媒体录制和回放都由MMF控制器插件完成。一个MMF控制器可使用一些附加插件,用于媒体处理,如MMF编码解码器等。通过增加一些实现了新型编码解码和文件格式的控制器插件,就可对MMF 进行扩展。如要回放一个多媒体文件或URL,MMF框架将选择一种控制器插件来播放这个文件或URL。控制器插件可以载入其它的插件(如编码解码器等)。

  3. 流媒体播放采用CMdaAduioOutputStream类, 本地音频播放采用CMdaAudioPlayerUtility类 用RealPlayer引擎支持视频和音频回放及流

  4. 1. S60用多媒体框架(MMF)实现视频和音频的回放和录制,其拥有一个插件架构,可使用多种类型的用于媒体回放和录制的插件,比如RealPlayer引擎是针对MMF控制器的插件,支持视频和音频回放及流。 • 2. s60内置播放器采用Realplayer引擎。不支持HTTP流媒体,因为在显示之前必须把所有的视频数据一次性读入缓存。 • 3. S60的常用格式是 MP4(编解码标准为H.263和MPEG4)、3GP(H.263和MPEG4) • 一般来说手机上网的视频格式最流行的就是3GP,因为体积小.但缺点就是分辨率相对低. MP4也是受欢迎格式之一,但MP4体积相对3GP较大,分辨率相对高一些.

  5. 优点:实现简单 缺点:只是单纯地调用手机上的播放器,局限很大 优点:用系统API就能播放本地文件和RTSP流 缺点:不能支持更多的视频格式 优点:支持更多的视频格式 缺点:限于本地文件 优点:功能齐全 缺点:代码复杂,需要大量时间

  6. 从上表得出结论,CVideoPlayerUtility用来开发视频剪辑的播放和录制。如果要开发一个读取本地文件或RTSP流而且格式为MP4、3GP或Rmvb的播放器,使用CVideoPlayerUtility就够了。但如果需要读取网络数据流,就必须用network APIs连接到网络获取数据,接着用CDirectScreenAccess API绘制屏幕,当中主要步骤有RTP传输,mpeg4/h264解码,yuv2rgb转换。如果不用symbian的API,流媒体传输可移植live555,视音频解码可用ffmpeg。

  7. MMF框架的功能 • MMF为每个plug-in创建2个线程,一个做client一个做server,这些线程都在调用MMF API的进程中。 • client/server之间的ITC是通过TMMFMessage进行的,每一个msg都包括Interface ID和Destination handle,这样MMF框架就知道把这个消息传递给那个server。 • 客户端的大多数api都封装在utility class里面,这些类都有一个RMMFController,server端有与之对应的CMMFController,它们通过RMMFControllerProxy的SendSync和SendAsync发送消息。

  8. MMF框架下多媒体插件的接口 • 1. Open and Close • RMMFController::Open(id) - 打开一个plug-in controller,在单独的线程中运行 • RMMFController::Close() - 释放对应的controller • 2. Source and Sink • AddDataSource() 和AddDataSink()方法用来管理Source 和 Sink, Controller的主要功能就是将数据从source流到sink • 3.Changing state • 一般Controller有Stop, Prime, Play三个状态

  9. 4.Adjusting play-head position API • 查询和调整播放的位置,获得播放头位置GetPosition,设置播放头位置SetPosition,获得播放时间GetDuration • 5.Retrieving metadata API • GetMetaDataEntryL用来获得元数据条目 • GetNumberOfMetaDataEntries用来获得元数据条目的数量 • 6.Handling custom commands API • 前面的函数都是标准接口,要想扩展接口,可以通过CustomCommandSync和CustomCommandAsync发出调用函数的请求。server端的函数执行后,可以通过参数返回执行结果。

  10. CVideoPlayerUtility举例 • MediaEngine.h • class CMediaEngine : public CBase ,public MVideoPlayerUtilityObserver • { • public: • CMediaEngine (); • void ConstructL(CMediaContainer* aView); • static CMediaEngine * NewL(CMediaContainer* aView ); • void InitControllerL(); • void MvpuoOpenComplete(TIntaError); 提供的文件格式,初始化plug-in codec

  11. 通过内置的rtsp协议与服务器通信,建立连接 • void MvpuoPrepareComplete(TIntaError); • void MvpuoFrameReady(CFbsBitmap& aFrame,TIntaError); • void MvpuoPlayComplete(TIntaError); • void MvpuoEvent(const TMMFEvent& aEvent); • void PauseL(); • void IncreaseVolume(); • void DecreaseVolume();

  12. TTimeIntervalMicroSecondsPositionL() ; • TTimeIntervalMicroSecondsDurationL() ; • void Stop(); ~CMediaEngine (); • private: • CVideoPlayerUtility* iPlayer; CMediaContainer* iView; • }; 发出rtsp的PLAY请求,这时候可以通过MvloLoadingStarted()得到开始缓冲的信息

More Related