java mp3 暂停,Java MP3播放器 - 使用jLayer播放,暂停和搜索不能正常工作
我正在嘗試在java中實(shí)現(xiàn)mp3播放器,它將從字節(jié)數(shù)組中播放音頻 .
該類應(yīng)該像這樣工作:
加載用aes加密的mp3文件
將其解密為bytes / inputstream數(shù)組
播放變量中的音樂
讓用戶暫停/停止/回放它
關(guān)鍵是我使用jLayer的實(shí)現(xiàn)不起作用:當(dāng)我播放 - 暫停 - 恢復(fù)時,音頻暫停但隨后從文件中的隨機(jī)點(diǎn)恢復(fù) .
public class MPlayer{
AdvancedPlayer player;
private static int pausedOnFrame =0;
private byte[] decrypted = null;
private long audioLength;
private AudioInputStream stream;
private InputStream bytesToStream(byte[] in) {
InputStream is = new ByteArrayInputStream(in);
return is;
}
public MPlayer(String fname) {
/* here file is encrypted to variable byte[] decrypted and then: */
InputStream is = bytesToStream(decrypted);
stream = AudioSystem.getAudioInputStream(is);
audioLength = stream.getFrameLength();
player = new AdvancedPlayer(stream);
player.setPlayBackListener(new PlaybackListener() {
@Override
public void playbackFinished(PlaybackEvent event) {
System.err.println(event.getFrame());
pausedOnFrame = event.getFrame();
}
}
}
public void play() throws Exception {
Thread th = new Thread() {
public void run() {
player.play(MPlayer.pausedOnFrame, Integer.MAX_VALUE);
}
};
th.start();
}
public void fastforward() {
pausemusic();
long nextFrame = (long) (pausedOnFrame+0.02*audioLength);
if (nextFrame < audioLength)
play();
}
public void rewind() {
pausemusic();
long nextFrame = (long) (pausedOnFrame-0.02*audioLength);
if (nextFrame > 0)
play();
}
}
public void pausemusic() throws LineUnavailableException {
player.stop();
}
public void stopmusic() throws LineUnavailableException {
player.stop();
pausedOnFrame = 0;
}
}
我該如何解決?
總結(jié)
以上是生活随笔為你收集整理的java mp3 暂停,Java MP3播放器 - 使用jLayer播放,暂停和搜索不能正常工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php挖洞提权,记一次渗透挖洞提权实战
- 下一篇: PHP未定义名称的方法,PHP:“调用未