java实现语⾳聊天_java语⾳聊天核⼼代码
import java.io.*;
import javax.sound.sampled.*;
import java.*;
class Playback implements Runnable {
final int bufSize = 16384;
SourceDataLine line;
Thread thread;
Socket s;
Playback(Socket s){//构造器 取得socket以获得⽹络输⼊流
this.s=s;
之所以是因为造句
}
public void start() {
thread = new Thread(this);
thread.tName("Playback");
thread.start();
}
public void stop() {
thread = null;
}
两生花剧情简介
public void run() {
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
BufferedInputStream playbackInputStream;
try {
playbackInputStream=new BufferedInputStream(new InputStream(),format,2147483647));//封装成⾳频输出流,如果⽹络流是经过压缩的需在此加套解压流
}
catch (IOException ex) {
return;
}
DataLine.Info info = new DataLine.Info(SourceDataLine.class,format);
try {
line = (SourceDataLine) Line(info);
line.open(format, bufSize);
} catch (LineUnavailableException ex) {
return;
}
byte[] data = new byte[1024];//此处数组的⼤⼩跟实时性关系不⼤,可根据情况进⾏调整int numBytesRead = 0;
line.start();
while (thread != null) {
try{
numBytesRead = ad(data);
line.write(data, 0,numBytesRead);
} catch (IOException e) {
break;
}
}
if (thread != null) {
line.drain();
}
line.stop();
line.clo();
line = null;
五代大军阀
}
}
/
/⾳频捕获部分,
import java.io.*;
土楼王
import javax.sound.sampled.*;
import java.*;
/**
* Title: VoiceChat
* Description: ⾳频捕捉(录⾳程序)
* Copyright: Copyright (c) 2001
*/
class Capture implements Runnable {
TargetDataLine line;客户关系管理案例
Thread thread;
Socket s;
BufferedOutputStream captrueOutputStream;
Capture(Socket s){//构造器 取得socket以获得⽹络输出流
隋朝的建立this.s=s;
}
public void start() {
thread = new Thread(this);
thread.tName("Capture");
thread.start();
}
public void stop() {
thread = null;
}
public void run() {
try {
captrueOutputStream=new OutputStream());//建⽴输出流 此处可以加套压缩流⽤来压缩数据
}
catch (IOException ex) {
return;
}
AudioFormat format =new AudioFormat(8000,16,2,true,true);//AudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian)
DataLine.Info info = new DataLine.Info(TargetDataLine.class,format);
try {
line = (TargetDataLine) Line(info);
观音送福line.open(format, BufferSize());
} catch (Exception ex) {
return;
}
白色桃花byte[] data = new byte[1024];//此处的1024可以情况进⾏调整,应跟下⾯的1024应保持⼀致
int numBytesRead=0;
line.start();
while (thread != null) {
numBytesRead = ad(data, 0,128);//取数据(1024)的⼤⼩直接关系到传输的速度,⼀般越⼩越快,
try {
captrueOutputStream.write(data, 0, numBytesRead);//写⼊⽹络流
}
catch (Exception ex) {
break;
}
}
line.stop();
line.clo();
line = null;
try { captrueOutputStream.flush(); captrueOutputStream.clo(); } catch (IOException ex) { ex.printStackTrace(); } } }