由于amr文件在java中不能直接播放,不然响一声直接过去了,需要转为mp3或者wav,这里使用了wav方式,
由于需要对播放进行控制,同一时间只能有一个声音,并且播放中需要自定义是否打断,这个是搭配其它逻辑进行的,所以这里只给出将amr文件转wav然后播放的逻辑,如果需要一种业务场景是,多条语音顺序广播及紧急口播播放(最紧急,可终止当前声音播放)的话,可以移步到我下一个文章查看。
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudio