JAVA网站制作之怎样捕捉音频及输入音频
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。这是我本来用过的两段代码,输入音频和捕捉音频。
机关器里的socket是用来承受来自收集的音频数据。不做收集音频能够往失落它。
但愿能与人人分享履历。8-)
importjava.io.*;
importjavax.sound.sampled.*;
importjava.net.*;
/**
*Title:VoiceChat
*Description:输入音频(放音程序)
*Copyright:Copyright(c)2001
*Company:
*@author你猜!
*@version1.0
*/
classPlaybackimplementsRunnable{
finalintbufSize=16384;
SourceDataLineline;
Threadthread;
Sockets;
Playback(Sockets){//机关器获得socket以取得收集输出流
this.s=s;
}
publicvoidstart(){
thread=newThread(this);
thread.setName("Playback");
thread.start();
}
publicvoidstop(){
thread=null;
}
publicvoidrun(){
AudioFormatformat=newAudioFormat(8000,16,2,true,true);//AudioFormat(floatsampleRate,intsampleSizeInBits,intchannels,booleansigned,booleanbigEndian)
BufferedInputStreamplaybackInputStream;
try{
playbackInputStream=newBufferedInputStream(newAudioInputStream(s.getInputStream(),format,2147483647));//封装成音频输入流,假如收集流是经由紧缩的需在此加套解压流
}
catch(IOExceptionex){
return;
}
DataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);
try{
line=(SourceDataLine)AudioSystem.getLine(info);
line.open(format,bufSize);
}catch(LineUnavailableExceptionex){
return;
}
byte[]data=newbyte;//此处数组的巨细跟及时性干系不年夜,可依据情形举行调剂
intnumBytesRead=0;
line.start();
while(thread!=null){
try{
numBytesRead=playbackInputStream.read(data);
line.write(data,0,numBytesRead);
}catch(IOExceptione){
break;
}
}
if(thread!=null){
line.drain();
}
line.stop();
line.close();
line=null;
}
}
importjava.io.*;
importjavax.sound.sampled.*;
importjava.net.*;
/**
*Title:VoiceChat
*Description:音频捕获(灌音程序)
*Copyright:Copyright(c)2001
*Company:
*@author你猜!
*@version1.0
*/
classCaptureimplementsRunnable{
TargetDataLineline;
Threadthread;
Sockets;
BufferedOutputStreamcaptrueOutputStream;
Capture(Sockets){//机关器获得socket以取得收集输入流
this.s=s;
}
publicvoidstart(){
thread=newThread(this);
thread.setName("Capture");
thread.start();
}
publicvoidstop(){
thread=null;
}
publicvoidrun(){
try{
captrueOutputStream=newBufferedOutputStream(s.getOutputStream());//创建输入流此处能够加套紧缩流用来紧缩数据
}
catch(IOExceptionex){
return;
}
AudioFormatformat=newAudioFormat(8000,16,2,true,true);//AudioFormat(floatsampleRate,intsampleSizeInBits,intchannels,booleansigned,booleanbigEndian)
DataLine.Infoinfo=newDataLine.Info(TargetDataLine.class,format);
try{
line=(TargetDataLine)AudioSystem.getLine(info);
line.open(format,line.getBufferSize());
}catch(Exceptionex){
return;
}
byte[]data=newbyte;//此处的1024能够情形举行调剂,应跟上面的1024应坚持分歧
intnumBytesRead=0;
line.start();
while(thread!=null){
numBytesRead=line.read(data,0,1024);//取数据(1024)的巨细间接干系到传输的速率,一样平常越小越快,
try{
captrueOutputStream.write(data,0,numBytesRead);//写进收集流
}
catch(Exceptionex){
break;
}
}
line.stop();
line.close();
line=null;
try{
captrueOutputStream.flush();
captrueOutputStream.close();
}catch(IOExceptionex){
ex.printStackTrace();
}
}
}
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 是一种使网页(Web Page)产生生动活泼画面的语言 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
页:
[1]