package com.zhbr;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader;
/**
* @program:BroadcastMp3
* @description:TODO
* @author:zhaoyanning
* @create:2022/6/1 17:34
**/
public class BroadcastMp3{
/**
* 播放MP3方法
*
* @param mp3filepath
* @throws Exception
*/
public static void playMp3(String mp3filepath) throws Exception {
File mp3 = new File(mp3filepath);
// 播放
int k = 0, length = 8192;
AudioInputStream audioInputStream = getPcmAudioInputStream(mp3filepath);
if (audioInputStream == null)
System.out.println("null audiostream");
AudioFormat targetFormat;
targetFormat = audioInputStream.getFormat();
byte[] data = new byte[length];
DataLine.Info dinfo = new DataLine.Info(SourceDataLine.class, targetFormat);
SourceDataLine line = null;
try {
line = (SourceDataLine) AudioSystem.getLine(dinfo);
line.open(targetFormat);
line.start();
int bytesRead = 0;
byte[] buffer = new byte[length];
while ((bytesRead = audioInputStream.read(buffer, 0, length)) != -1) {
line.write(buffer, 0, bytesRead);
}
audioInputStream.close();
line.stop();
line.close();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("audio problem " + ex);
}
}
private static AudioInputStream getPcmAudioInputStream(String mp3filepath) {
File mp3 = new File(mp3filepath);
AudioInputStream audioInputStream = null;
AudioFormat targetFormat = null;
try {
AudioInputStream in = null;
MpegAudioFileReader mp = new MpegAudioFileReader();
in = mp.getAudioInputStream(mp3);
AudioFormat baseFormat = in.getFormat();
targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, baseFormat.getSampleRate(), 16,
baseFormat.getChannels(), baseFormat.getChannels() * 2, baseFormat.getSampleRate(), false);
audioInputStream = AudioSystem.getAudioInputStream(targetFormat, in);
} catch (Exception e) {
e.printStackTrace();
}
return audioInputStream;
}
public static void main(String[] args) {
String mp3filepath = "C:\\Users\\zyn\\Music\\最美的瞬间.mp3";
try {
BroadcastMp3.playMp3(mp3filepath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java播放mp3
猜你喜欢
转载自blog.csdn.net/weixin_44455388/article/details/125422416
今日推荐
周排行