Java播放音频

Java播放音频

在写完Java播放wav后,我又对代码进行了优化,支持了各种种类音频。
基础功能

  1. 开始
  2. 暂停
  3. 继续
  4. 停止

本次添加功能:

  1. 获取音频进度
  2. 跳过某一段
  3. 从某一段开始播放
  4. 各种音频格式支持

本次改变

  1. 播放方式改变
  2. 修复部分bug
  3. 增加注释

本次未修复的问题

  1. 部分安全方面的问题尚未攻克
  2. protected变量,不够安全

建议使用本次更新代替原来版本。

java格式

wav_improved.java

package player;

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;


public class wav_improved
{
   
	protected String path="audio.wav";
	protected AudioFormat format=null;
	protected AudioInputStream aistream=null;
	protected float sampleRate=0;
	protected float framelength=0;
	protected DataLine.Info datalineinfo=null;
	protected SourceDataLine dataline=null;
	protected int played=0;
	protected boolean _set=false;
	protected int length=0;
	protected byte[] bytes=new byte[512];
	public wav_improved()
	{
   
	}
	public boolean set(String p)  //设置播放路径
	{
   
		if(_set)  //如果已经被初始化了(缓冲区已经有音频准备播放了)
		{
   
			boolean stop_playing_return=stop_playing();  //关闭当前缓冲区
			if(!stop_playing_return)  //如果失败
			{
   
				return false;
			}
		}
		path=p;  //更新音频路径
		try
		{
   
			//初始化音频
			aistream=AudioSystem.getAudioInputStream(new File(path));
			format=aistream.getFormat();
			sampleRate=format.getSampleRate();
			framelength=aistream.getFrameLength();
			datalineinfo=new DataLine.Info(SourceDataLine.class, format);
			dataline=(SourceDataLine)AudioSystem.getLine(datalineinfo);
		}
		catch(LineUnavailableException err)
		{
   
			System.out.println("LineUnavailableException");
			return false;
		}
		catch(UnsupportedAudioFileException err)
		{
   
			System.out.println("UnsupportedAudioFileException");
			return false;
		}
		catch(IOException err)
		{
   
			System.out.println("IOException");
			err.printStackTrace();
			return false;
		
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值