0

每次按下按钮时,我都在尝试使用 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();

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

我该如何解决这个问题?

4

1 回答 1

1

mp.start()是异步的。因此,当您在调用mp.setMediaTime(new Time(0)); 后立即调用start()时,播放器尚未实现。你可以添加一个ControllerListener并监听它的事件。一旦你得到RealizedEvent,然后设置媒体时间。最好先致电mp.realize()并在获得事件时设置媒体时间,然后致电start()

于 2012-06-11T05:37:54.973 回答