java解析音频文件/音乐播放器

说明:

主要是用了Java sound(刚开始我也不知道,百度什么的,查查的就明白了,或者直接参考jdk的API文档),我没有打印所有的信息,想要什么参考官方API文档自己加,在此附上官方的demo(可直接下载):点击打开链接,此程序可解析WAV和MP3格式的音频文件,如果你只需要解析MP3文件的头部信息没必要用这个(网上一大堆)。此程序也可以自己搞好页面做播放器使用,不比比了,直接上代码。


代码:

public class ReadSoundMP3{
    public static void main(String[] args) throws Exception{
        //假设音量条100,音量默认为80
        double value = 80 / 100.0;
        AudioInputStream stream = AudioSystem.getAudioInputStream(new File("E:\\地尽头.mp3"));
        AudioFormat format = stream.getFormat();
        System.out.println("具有此格式的声音每秒播放或录制的样本数:"+ format.getSampleRate());
        System.out.println("每个具有此格式的声音帧包含的字节数:"+ format.getFrameSize());
        if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
            format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,format.getSampleRate(), 16, format.getChannels(),format.getChannels() * 2, format.getSampleRate(), false);
            stream = AudioSystem.getAudioInputStream(format, stream);
        }
        DataLine.Info info = new DataLine.Info(SourceDataLine.class, stream.getFormat());
        SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem.getLine(info);
        sourceDataLine.open(stream.getFormat(), sourceDataLine.getBufferSize());
        sourceDataLine.start();
        List cons = new ArrayList<>();
        Control [] ss = sourceDataLine.getControls();
        Control t = null;
        for (int i=0;i= 0) {
            int offset = 0;
            while (offset < numRead) {
                offset += sourceDataLine.write(buf, offset, numRead - offset);
            }
            System.out.println("音频数据中的当前位置(样本帧/微秒):"+sourceDataLine.getFramePosition() + " " + sourceDataLine.getMicrosecondPosition());
        }
        sourceDataLine.drain();
        sourceDataLine.stop();
        sourceDataLine.close();
        stream.close();
    }
}


maven中jar包引入:


	com.googlecode.soundlibs
	mp3spi
	1.9.5-1


	javazoom
	jlayer
	1.0.1


	com.googlecode.soundlibs
	tritonus-share
	0.3.7-2

控制台打印:

java解析音频文件/音乐播放器_第1张图片
java解析音频文件/音乐播放器_第2张图片


你可能感兴趣的:(Java)