快速业务通道

JMF介绍之媒体框架(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04

JMF介绍之媒体框架(二)

时间:2011-03-13 51cto博客 zhangjunhd译

4.1播放器(Players)

播放器(Player)对一个媒体数据输入流进行处理,并实现时间上的精确播放。数据源(DataSource)将输入流传递到播放器。播放器将声音或(和)视频传递到相应的目标地(destination)。

图9为JMF播放器模型

JMF介绍之媒体框架(二) - 编程入门网

播放器在处理和显示媒体数据过程中不提供任何控制。通过继承Clock和Controller类,播放器可支持标准的用户控制功能以及部分限制操作。

图10为JMF 播放器

JMF介绍之媒体框架(二) - 编程入门网

4.1.1播放器状态(Player States)

播放器对象有多种状态,JMF中定义了6 种状态。在正常情况下播放器对象需要经历每个状态,然后才能播放媒体数据。下面是对这些状态的说明:

(1)Unrealized:在这种状态下播放器对象已经被实例化,但是并不知道它需要播放的媒体的任何信息。

(2)Realizing:当调用realize方法时,播放器对象的状态从Unrealized转变为Realizing。 在这种状态下Player对象正在确定它需要占用资源。在此过程中,播放器取得的资源都是那些只需取得一次的资源,不是那些独占的资源。

(3)Realized:在这种状态下播放器对象已经确定了它需要的资源并且也知道要播放的媒体的类型(type)。

(4)Prefetching:当调用prefectch方法时,播放器对象的状态从Realized变为Prefetching 在该状态下的播放器对象正在为播放媒体做一些准备工作。其中包括加载媒体数据而需要获得的独占资源等。这个过程被称为预取Prefetch。

(5)Refetched:当播放器对象完成了预取操作后就到达了该状态。

(6)Started:当调用start方法后播放器对象就进入了该状态并开始播放媒体。

JMF介绍之媒体框架(二)(2)

时间:2011-03-13 51cto博客 zhangjunhd译

图11为播放器的状态转换图

JMF介绍之媒体框架(二) - 编程入门网

当一个播放器从一个状态转换到另一个状态时,它将给出TransitionEvents。通过ControllerListener接口,你的程序可以确定播放器在什么状态并作出相应的反应。

使用这种时间报告机制,你可以通过控制一个播放器对象的Realizing和Prefetching的开始点来管理它的缓冲时间(start latency)。同时,你也可以在调用播放器的方法前确定播放器是否在其适当的状态。

4.1.2每个状态下播放器对象可执行的方法

为了避免混乱情况,在一个播放器所有状态下,不是所有的方法都能被调用的。下表定义了JMF规定的限制。如果你在一个播放器对象的当前状态下,调用了一个非法的方法,播放器对象将抛出异常或错误。

Method Unrealized Player Realized Player Prefetched Player Started Player
addController NotRealizedError legal legal ClockStartedError
deallocate Legal legal legal ClockStartedError
getControlPanelComponent NotRealizedError legal legal legal
getGainControl NotRealizedError legal legal legal
getStartLatency NotRealizedError legal legal legal
getTimeBase NotRealizedError legal legal legal
getVisualComponent NotRealizedError legal legal legal
mapToTimeBase ClockStoppedException ClockStoppedException ClockStoppedException legal
removeController NotRealizedError legal legal ClockStartedError
setMediaTime NotRealizedError legal legal legal
setRate NotRealizedError legal legal legal
setStopTime NotRealizedError legal legal StopTimeSetError

if previously set

setTimeBase NotRealizedError legal legal ClockStartedError
syncStart NotPrefetchedError NotPrefetchedError legal ClockStartedError

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号