流媒体开发资料收集(1)

来源:互联网 发布:西门子200编程软件下载 编辑:程序博客网 时间:2024/05/16 05:38

转自chenziteng


    并非用到缓冲区就是流式播放,CVideoPlayerUtility只能播放视频剪辑,缓冲区里的视频剪辑也只是视频剪辑而已。播放剪辑是个"Oneshot"的过程,类似用CVideoPlayerUtility时,一段视频播完就是播完了,想播其它的必须重新打开,这期间就有个不可避免的停顿;而播放流是个连续的过程,类似CMdaAudioOutputStream这种,只要打开一次就可以以WriteL()函数不断地追加数据,只要数据跟得上,整个播放过程不会有停顿。

 

Quote:
Originally Posted by hoolee
如果OpenDesL内部实现的话,我做个给你看,那位朋友提出这个要求是为了播放加密后的3GP。我在s60上做过mpeg4,也研究过helix,我也没觉得做过移动流媒体应用的就应该对这种方案嗤之以鼻,我提出这种方法的只是开辟一下思路。OpenUrlL算不算让CVideoPlayerUtility播放了流式的内容,或许你又要从字面上说,这只是利用video plugin播放了一个url下的avideo clip。

两点:

  1. 我可没说这个“模拟”的东西做不出来,我笑的是又有人在进行这种尝试。

  实际上模拟这个思路是如此的自然,以至于我遇到过的做过移动流媒体应用的同行都有这样的经历:

(1) 准备做移动流媒体应用
(2) 调查Symbian OS有没有提供现成的视频流API,调查结果:没有
(3) 调查有没有可能利用系统提供的API实现类似的效果,调查结果:连续播视频剪辑有可能行。
(4) 实现看看效果,结果:效果太差
(5) 不得不自己做解码器

  当然,我也做给自己看过,实际上只要知道OpenDesL()怎么用就行了,就是n个剪辑一个接一个播嘛,动手做过的都清楚两个剪辑中间的停顿是多么明显。

  这件事好比我从死胡同出来,竖块牌子“此路不通”,但有人执意要走走看,那我只好笑着等他出来,然后加一句善意的问候:“Welcome back, little fool”。

  2. 明确一个使讨论得以进行下去的基本的前提

  即讨论是在“公共SDK开发人员”之间展开,你我他都是站在“公共API使用者”的立场上参加讨论的。

  CVideoPlayerUtility类的使用者关心的是调用接口(功能),而非实现。称这个类“能够播放xxx”(xxx代表“流式的内容”或者“剪辑式的内容”)的是指它提供播放xxx的接口,即使用者能够显式地把xxx传给它播放。

  无论使用OpenFileL()、OpenDesL()还是OpenUrlL(),传给CVideoPlayerUtility的都只是视频剪辑,所以说它支持播放剪辑式的内容。而开发人员有办法像使用CMdaAudioOutputStream那样把流式的内容连续地传给CVideoPlayerUtility播放吗?没有。所以说它不支持播放流式的内容。

  有没有发现“那位朋友”认同“CVideoPlayerUtility只支持播放视频剪辑”?因为他是CVideoPlayerUtility的用户,他不关心OpenDesL()和OpenUrlL()的内部的实现,既然这个类没有提供播放流式内容的接口,导致应用程序无法用它实现期望的功能,那它就是不支持播放流式的内容。

 

原创粉丝点击