I recently moved from Javas built in sound API to JMF. As I'm using an old JVM (1.4) and only interested in playing WAV files, JMF was a perfect solution and has greatly simplified the code to load, play and control the volume of audio clips in my application.
But I'm having trouble stopping the clips on demand. It would seem as simple as calling player.stop(), but stop() seems to block until the player has finished playing. Here is a simple code example:
This produces output like:
where I would have expected the second time to read equal to or only briefly later than the first. (Or perhaps to have been reset to 0 or something.) I have also tried p.setStopTime( p.getMediaTime() ). This stops the clip on time, but plays a split second of distortion before stopping, which is undesirable.
Googling around makes me think that others aren't having this issue, and it's been kind of hard to find options. Could this be a buffering issue or am I missing something else? Any insight you can provide is greatly appreciated.
I am using (and cannot change) JVM 1.4.2 with JMF 2.1.1. All of my WAV files are only 1-10 seconds long.
posted 10 years ago
I ended up fixing this; it was indeed related to buffering. I have posted a detailed description of my fix over at Stack Overflow: