java mp3 暂停,Java MP3播放器 - 使用jLayer播放,暂停和搜索不能正常工作

我正在尝试在java中实现mp3播放器,它将从字节数组中播放音频 .

该类应该像这样工作:

加载用aes加密的mp3文件

将其解密为bytes / inputstream数组

播放变量中的音乐

让用户暂停/停止/回放它

关键是我使用jLayer的实现不起作用:当我播放 - 暂停 - 恢复时,音频暂停但随后从文件中的随机点恢复 .

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;

}

}

我该如何解决?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值