capture.java

来自「P2P聊天系统 该程序是由NetBeans IDE 6.5」· Java 代码 · 共 89 行

JAVA
89
字号
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package voice;/** * * @author Administrator *///音频捕获部分,//Capture.javaimport java.io.*;import javax.sound.sampled.*;import java.net.*;public class Capture implements Runnable {       TargetDataLine line;       Thread thread;       Socket s;       BufferedOutputStream captrueOutputStream;       public Capture(Socket s){//构造器 取得socket以获得网络输出流         this.s=s;       }       public void start() {           thread = new Thread(this);           thread.setName("Capture");           thread.start();       }       public void stop() {           thread = null;       }       public void run() {           try {             captrueOutputStream=new BufferedOutputStream(s.getOutputStream());//建立输出流 此处可以加套压缩流用来压缩数据           }           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) AudioSystem.getLine(info);               line.open(format, line.getBufferSize());           } catch (Exception ex) {               return;           }           byte[] data = new byte[1024];//此处的1024可以情况进行调整,应跟下面的1024应保持一致           int numBytesRead=0;           line.start();           while (thread != null) {               numBytesRead = line.read(data, 0,128);//取数据(1024)的大小直接关系到传输的速度,一般越小越快,               try {                 captrueOutputStream.write(data, 0, numBytesRead);//写入网络流               }               catch (Exception ex) {                   break;               }           }           line.stop();           line.close();           line = null;           try {               //captrueOutputStream.flush();               captrueOutputStream.close();           } catch (IOException ex) {               ex.printStackTrace();           }       }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?