此日志完全是个人理解,如有不正确之处,还请指正!!!
1、下载和安装JMF,就不必细说了.
2、重点说说 Manager 类 和 Player 接口:
Player 接口是建立在公用的音频或视频播放器的基础之上的,这个接口揭示了一个实体上的媒体播放器涉及到功能上的方法。如:一个JMF媒体播放器可以开始和结束一个媒体流。
创建一个player:
Manager类在JMF中如同一个工厂制作许多的特殊接口类型,包括Player接口,Manager类负责创建Player实例。
Player player = Manager.createRealizedPlayer(url);
Player palyer = Mnager.createPlayer(url);
player的状态,有六种:
1) Unrealized:播放器对象已经实例化,但是并不知道要播放的媒体的任何信息。
2)Realizing :当调用realize方法时,播放器对象的状态从Unrealized转变为Realizing。 在这种状态下Player对象正在确定它需要占用资源。在此过程中,播放器取得的资源都是那些只需取得一次的资源,不是那些独占的资源。
3) Realized:播放器对象已经确定了它需要的资源并且也知道要播放的媒体的类型。
4)Prefetching:当调用prefectch方法时,播放器对象的状态从Realized变为Prefetching 在该状态下的播放器对象正在为播放媒体做一些准备工作。其中包括加载媒体数据而需要获得的独占资源等。这个过程被称为预取Prefetch。
5)Refetched:当播放器对象完成了预取操作后就到达了该状态。
6) Started:当调用start方法后播放器对象就进入了该状态并开始播放媒体。
createRealizedPlayer()方法阻塞线程,知道player达到Readlized状态;createPlayer()方法是无阻塞的。
启动和停止Player
player.start(); 当调用了此方法后,就可以听到声音。
player.stop();是player停止并且管关掉player对象。
player.close();释放实例所占用的资源。
视频:
1)获取GUI组件:
player.getVisualComponent()是一个播放所有视频媒体的可视组件。
player.getControlPanelComponent()是一个操作时间轴的可是组建,也包含了一些媒体的其他信息。
player.getGainControl()..getControlComponent()是操作音量的可是组建。
每个实例都可加载到窗体上。必须保证它们不为空,因为并不是所有的媒体播放器包括每一种可是组件。
由于看JMF关注的是音频和视频的采集、传输、播放,所以做的播放器件很简单。
程序截图: