JMF:无法在未实现的控制器上设置媒体时间

时间:2012-06-09 23:02:13

标签: java jmf

我每次按下按钮时都会尝试使用JMF播放声音。

这是我必须构建媒体播放器的原因:

MediaPlayer mp = new javax.media.bean.playerbean.MediaPlayer();
mp.setMediaLocation("file:///D:/fall.wav");
mp.setPlaybackLoop(false);

而且,为了播放一次声音,我做了

mp.start();
mp.setMediaTime(new Time(0));
mp.stop();

我第一次播放声音时,我得到了一个

javax.media.NotRealizedError: Cannot set media time on a unrealized controller 

Exception in thread AWT-EventQueue-0" javax.media.NotRealizedError: 
  Cannot set media time on a unrealized controller 
在setMediaTime行上

。这不会发生任何后续我按下发出声音的按钮,它只会在第一次发生。如果我更改构造函数并添加

mp.realize();

最后,它不会抛出那些错误,但它也不会在第一次播放声音。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

mp.start()是异步的。所以当你致电mp.setMediaTime(new Time(0));时  在致电start()后,玩家尚未意识到。   您可以添加ControllerListener并收听其活动。获得RealizedEvent后,请设置媒体时间。最初拨打mp.realize()并获取活动,设置媒体时间然后拨打start()

是个不错的主意。