⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audiopanel.java

📁 JMS编写的声音播放软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package audiopanel;import java.awt.*;import javax.media.bean.playerbean.*;import javax.swing.*;import java.awt.event.*;import com.ibm.media.bean.multiplayer.*;import com.sun.media.jsdt.*;import java.lang.Object;import java.awt.Component;import java.lang.String;import java.awt.event.*;import java.applet.Applet;import javax.media.bean.playerbean.*;import javax.media.protocol.*;import javax.media.protocol.DataSource;import javax.media.format.*;import javax.media.control.TrackControl;import javax.media.control.QualityControl;import javax.media.*;import java.io.*;import java.util.*;import java.util.Vector;import javax.media.Time;import javax.media.MediaLocator;import javax.media.protocol.*;import java.io.IOException;import java.awt.Dimension;import com.sun.media.ui.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: 童天网络</p> * @author unascribed * @version 1.0 */public class audioPanel extends JPanel implements ChatDebugFlags ,BufferTransferHandler{  String  hostname    = "192.168.0.6";  String name;  int     hostport    = 6677;  String  sessionType = "socket";  boolean isteacher=true;  private Session session;  public ChatClient client;  public Channel channel;  private ChatConsumer chatConsumer;  private boolean connected=false;  dataSource  dsource=new dataSource();  protected PushBufferStream []stream;  boolean initflag=true;//定义createProcessor用到的变量//  final protected AudioFormat  audioFormat= new AudioFormat(AudioFormat.LINEAR,44100,16,1,AudioFormat.BIG_ENDIAN,AudioFormat.SIGNED);  final  AudioFormat  audioFormat= new AudioFormat(AudioFormat.G723_RTP,8000,8,1,AudioFormat.LITTLE_ENDIAN,AudioFormat.SIGNED);  int bufferlength=48;  Vector bufdata=new Vector();  Processor processor=null;  DataSource dataOutput;  MediaLocator locator=new MediaLocator("dsound://");  MediaPlayer mp=new MediaPlayer();//结束定义createProcessor中的变量//定义custome datasource and stream 中的变量  int seqnum=0;  public    PushBufferDataSource pds=null;  public    PushBufferStream pbs[]= null;//结束  public audioPanel(){  }  public audioPanel(boolean isteacher,String logname,String hostip,int port) {    try {      name=logname;      hostname=hostip;      hostport=port;      this.isteacher=isteacher;      connect();    }    catch(Exception ex) {      ex.printStackTrace();    }  }  public void jbInit() throws Exception {    this.setLayout(borderLayout1);//    connect();    dsource.getStreams();    dsource.connect();    mp.setDataSource(dsource);    mp.setSize(200,20);    mp.setVisible(true);    if(isteacher)          startSpeak();    mp.start();    this.add(mp,  BorderLayout.CENTER);  }  public void processData(Data data){  try{      System.out.println("接受到数据");//      以数组形式接受到参数      Vector datavector=new Vector();      datavector=(Vector)data.getDataAsObject();      byte[] bbyte;      bbyte=(byte[])datavector.elementAt(0);      String ss=(String)datavector.elementAt(1);      bufdata.addElement(bbyte);      }catch(Exception e){              System.out.println("dataReceived出错:");              e.printStackTrace();	}  }  public void  connect() {       System.out.println("用户名字:"+name);       String sessionType="socket";       String    sessionName   = "ChatSession";       boolean   sessionExists = false;       URLString url           = null;       if (ChatUser_Debug) {           System.out.println("ChatUser: connect.");       }      if (name == null) {           throw new Error("need a non-null name to connect");       }       if (connected) {           return;       }       try {           try {               url = URLString.createSessionURL(hostname, hostport,                                                sessionType, sessionName);               System.out.println("audioPanel: connect: checking: url: " + url);               while (!sessionExists) {                   try {                       if (SessionFactory.sessionExists(url)) {                           System.out.println("ChatUser: connect:" +                                              " found Session.");                           sessionExists = true;                       }                   } catch (NoRegistryException nre) {                       System.out.println("ChatUser: connect:" +                                          " no registry: sleeping.");                       Thread.sleep(1000);                   } catch (ConnectionException ce) {                       System.out.println("ChatUser: connect:" +                                          " connection exception: sleeping.");                       Thread.sleep(3000);                   }               }/* Create a chat client. */               System.out.println("Creating a ChatMember...");               client = new ChatClient(name);/* Resolve the chat session. */               session = SessionFactory.createSession(client, url, true);               channel = session.createChannel(client, "ChatChannel",                                               true, true, true);               chatConsumer = new ChatConsumer(client.getName(),this);               //System.out.println("dkjf");               channel.addConsumer(client, chatConsumer);               connected = true;               repaint();           } catch (Exception e) {               System.out.print("Caught exception in ");               System.out.println("ChatUser.connect: " + e);               if (ChatUser_Debug) {                   e.printStackTrace();               }           }       } catch (Throwable th) {           System.out.println("ChatUser: connect caught: " + th);           if (ChatUser_Debug) {               th.printStackTrace();           }           throw new Error("ChatUser.connect failed : " + th);       }   }   public void   destroy() {       if (ChatUser_Debug) {           System.out.println("ChatUser: destroy.");       }       disconnect();    }    void   disconnect() {        if (ChatUser_Debug) {            System.out.println("ChatUser: disconnect.");        }        if (connected == false) {            return;        }        try {            session.close(true);        } catch (Exception e) {            System.out.println("Caught exception while trying to " +                                "disconnect from chat server: " + e);            if (ChatUser_Debug) {                e.printStackTrace();            }        }        connected = false;    }   public void startTransferData(){     pds = (PushBufferDataSource)dataOutput;     pbs=pds.getStreams();//     mp.start();     for(int i=0; i<pbs.length; i++){     System.out.println("((PushBufferStream[])(pds.getStreams()))[i]="+((PushBufferStream[])(pds.getStreams()))[i]);     if( ((PushBufferStream[])pbs)[i].getFormat() instanceof AudioFormat ){            pbs[i].setTransferHandler(this);      break;        }      }   try{       pds.start();     }catch(Exception ee){      	System.out.println(ee);       	}   }   public void startSpeak(){               if(processor==null){               String strerror=createProcessor();               System.out.println(strerror);               }               startTransferData();       }  public void cleanBuffer(){             if(bufdata.size()>0){               bufdata.removeAllElements();             }  }   public void stopSpeak(){             try {              //int ccount = 0;//               mp.stop();               pds.stop();               } catch (Exception ab){       	System.out.println(ab);	       	}           }   public void exitSpeak(){            try{              mp.stop();              mp.deallocate();              mp=null;              dsource.disconnect();              pds.stop();              pds.disconnect();              processor.stop();              processor.deallocate();              processor.close();              processor=null;            }catch(Exception e){    System.out.println(e);    }   }   private String createProcessor() {       if (locator == null)           return "Locator is null";       DataSource ds;       try {           ds = javax.media.Manager.createDataSource(locator);       } catch (Exception e) {           System.out.println(e+e.getMessage());           return "Couldn't create DataSource";       }       // Try to create a processor to handle the input media locator       try {           processor = javax.media.Manager.createProcessor(ds);//	    processor = javax.media.Manager.createProcessor(ds);       } catch (NoProcessorException npe) {           System.out.println(npe+npe.getMessage());           return "Couldn't create processor";       } catch (IOException ioe) {           System.out.println(ioe+ioe.getMessage());           return "IOException creating processor";       }       // Wait for it to configure       boolean result = waitForState(processor, Processor.Configured);       if (result == false)           return "Couldn't configure processor";       // Get the tracks from the processor       TrackControl [] tracks = processor.getTrackControls();       // Do we have atleast one track?       if (tracks == null || tracks.length < 1)           return "Couldn't find tracks in processor";       // Set the output content descriptor to RAW_RTP       // This will limit the supported formats reported from       // Track.getSupportedFormats to only valid RTP formats.       ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.RAW);       processor.setContentDescriptor(cd);       Format supported[];       Format chosen;       boolean atLeastOneTrack = false;       // Program the tracks.       for (int i = 0; i < tracks.length; i++) {           Format format = tracks[i].getFormat();           if (tracks[i].isEnabled()) {

⌨️ 快捷键说明

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