⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmf開发指南 6

📁 jmf开发指南
💻
字号:
		 JMF开发指南-6 时间管理2008-05-24 23:366 时间管理bigbigant翻译自http://java.sun.com/javase/technologies/desktop/media/jmf/1.0/guide/JavaMediaFrame.fm6.html对于Java媒体播放器来说,把一个媒体流从头播到尾是一种最普通的case,但很多时候我们需要播放媒体流的一部分,或者是同步多个媒体流。JMF的TimeBase和Clock接口为我们定义了时间管理和同步媒体回放的机制。TimeBase表示的是时间的流逝。time-base时间不能被转换或者重置。一个Java Media Player使用TimeBase计时的机制类似于石英钟的原理-通过石英晶体在已知的频率上的振动来计时。系统中维护的TimeBase是以从一个基准时间(比如1970-1-1起)算起的纳秒数来计时的。TimeBase由系统时钟来驱动,可以通过Manager.getSystemTimeBase 方法来访问。、播放器的媒体时间(Player's media time)表示的是媒体流上的一个时间点。媒体时间可以开始、停止和重置——很像一个秒表。Clock定义了媒体时间到TimeBase之间的映射关系。一个Java Media Player能够响应若干关于媒体源的时间查询。时间信息受到物理特征的影响,同时也受限于媒体源及其存储的网络设备。一个Time对象表示了了基于某些时间单位的时间的量(比如纳秒)。我们在查询或设置播放器的时间信息时使用这类对象。6.1 设置媒体时间(Media Time)设定播放器的媒体时间等价于设定媒体流的读取位置。对于诸如文件的媒体数据源,媒体时间是有界的;最大媒体时间(the maximum media time)取决于媒体流的结束位置。我们可以调用setMediaTime方法,传入一个Time对象来设置媒体时间。6.2 获取当前时间getMediaTime方法用来返回播放器当前的媒体时间。如果播放器没有在呈现数据,那么返回的时间就是媒体将会开始的时间点。媒体时间和具体的帧并不是一一对应的。每一帧是媒体呈现的一个时间段,媒体时间在这个时间段上则是连续向前的。举例来说:想象我们有一个每5秒播放一帧的幻灯片播放器,这个播放器的帧速率就是0.2帧/秒。如果我们在0.0秒开始播放,当第一帧播完,媒体时间从0.0秒前进到5.0秒。如果我们在2.0秒开始播放,那么第一帧只会持续3秒的时间,到第5秒时就结束了。要想获取播放器的当前时基时间(time-base time),我们可以首先获取播放器的TimeBase对象,然后调用getRefTime来获取这个时间:myCurrentTBTime = player1.getTimeBase().getRefTime();对于一个正在播放的Player,我们可以调用mapToTimeBase来获取某个媒体时间对应的时基时间。6.3 设置播放器的速率播放器的速率(Player's rate)决定了媒体时间如何基于时基时间变化,它定义了一个时基时间单位上,媒体时间前进多少个单位。播放器的速率可以被认为是一个时间比例尺。例如:速率为2.0,表示媒体时间是时基时间的2倍。理论上,播放器的速率可以被设置为任意的数字,负的速率表示倒带。然而,一些媒体格式帧与帧互相依赖,导致他们要倒带或以非标准速率播放是不可能的(或不切实际的)。调用Player的setRate方法时,会放回实际被设置的数值(即使速率没有被改变也会返回)。播放器只保证支持1.0倍速。6.4 获取播放器的时长(Duration)因为我们的播放器可能会需要知道媒体流的时长,所以所有的controller都实现Duration接口。这个接口只包含一个方法:getDuration。Dration表示1.0倍速下媒体对象将会播放多长时间。媒体流的时长只能通过Player来访问。当getDuration被调用时,如果duration无法确定,将会返回DURATION_UNKNOWN.这种情况会发生在播放器尚未达到 duration信息可用的状态。如果媒体源没有定义duration(例如一个实时广播的媒体),getDuration会返回 DURATION_UNBOUNDED。类别:Jmf | 添加到搜藏 | 浏览(365) | 评论 (1) 上一篇:JMF开发指南-5 播放器状态管理    下一篇:JMF开发指南-7 同步播放器 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -