当前位置: 代码迷 >> J2SE >> 江湖救急java读取两个wav文件有关问题
  详细解决方案

江湖救急java读取两个wav文件有关问题

热度:6336   发布时间:2013-02-25 00:00:00.0
江湖救急啊,java读取两个wav文件问题
各路大侠,江湖救急啊!
我想用java播放两个wav文件,比如说是1.wav和2.wav,首先播放1.wav再播放2.wav但是不能将其分开播放
比如不能使用下面的程序:
AudioStream au;
InputStream in1 = new FileInputStream("1.wav");
au = new AudioStream(in1);
AudioPlayer.player.start(au);
InputStream in2 = new FileInputStream("2.wav");
au = new AudioStream(in2);
AudioPlayer.player.start(au);
也就是说不能调用两次的AudioPlayer.player.start();
只允许调用一次AudioPlayer.player.start();
我想问的是如何将两个wav文件都读入inputstream而且在AudioPlayer.player.start(au)的时候可以首先播放1.wav的声音再播放2.wav的声音。谢谢
在线等......

------解决方案--------------------------------------------------------
InputStream in1 = new FileInputStream( "1.wav "); 
au1 = ew AudioStream(in1); 
AudioPlayer.player.start(au); 
InputStream in2 = new FileInputStream( "2.wav "); 
au2 = new AudioStream(in2); 
List<AudioStream> list=new java.util.ArrayList<AudioStream>();;
list.add(a1);
list.add(a2);
for(AudioStream au:list){
AudioPlayer.player.start(au);
}
------解决方案--------------------------------------------------------
合并两个WAVE文件到1个,看来得用第三方组件,不知JAVA本身有没有这样的API可用。
------解决方案--------------------------------------------------------
用泛型控制下
------解决方案--------------------------------------------------------
list 容器类 专门放置流 然后你一个一个的去放吧
------解决方案--------------------------------------------------------
晕 一楼的思路是一样的 汗
------解决方案--------------------------------------------------------
Java code
try {    Process process = Runtime.getRuntime().exec("cmd /c copy 1.wav+2.wav 3.wav");  //调用Ping命令    InputStream in1=new FileInputStream("3.wav");         AudioStream au =new AudioStream(in2);      au.player.start(au);    //结束后也可以将新的wav删除  }catch (Exception  e)    {      e.printStackTrace();      }        }
------解决方案--------------------------------------------------------
linux下:
Java code
try {    Process process = Runtime.getRuntime().exec("cp>1.wav+2.wav 3.wav");  //调用cp命令    InputStream in1=new FileInputStream("3.wav");         AudioStream au =new AudioStream(in2);      au.player.start(au);    //结束后也可以将新的wav删除  }catch (Exception  e)    {      e.printStackTrace();      }        }
------解决方案--------------------------------------------------------
import javax.sound.sampled.*;
file = new File("XXXX.WAV");
issoundfirst = true;

try
{
stream = (AudioInputStream)AudioSystem.
getAudioInputStream(
file);
AudioFormat format = stream.getFormat();
if((format.getEncoding() == AudioFormat.Encoding.ULAW) ||
(format.getEncoding() == AudioFormat.Encoding.ALAW))
{
AudioFormat tmp = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits() * 2,
format.getChannels(),
format.getFrameSize() * 2,
format.getFrameRate(),
true);
stream = AudioSystem.getAudioInputStream(tmp,stream);
format = tmp;
}
DataLine.Info info = new DataLine.Info(
Clip.class,
stream.getFormat(),
((int)stream.getFrameLength() *
format.getFrameSize()));
clip = (Clip)AudioSystem.getLine(info);
clip.open(stream);
clip.start();
while(clip.isActive())
{

}
clip.stop();
clip.close();
}
  相关解决方案