仓酷云

标题: JAVA网站制作之怎样捕捉音频及输入音频 [打印本页]

作者: 爱飞    时间: 2015-1-18 11:39
标题: 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[1024];//此处数组的巨细跟及时性干系不年夜,可依据情形举行调剂
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能够情形举行调剂,应跟上面的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,这个工具是微软写的,。
作者: 灵魂腐蚀    时间: 2015-1-21 12:27
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 小魔女    时间: 2015-1-26 22:39
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 若天明    时间: 2015-2-2 13:30
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 分手快乐    时间: 2015-2-3 22:27
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 愤怒的大鸟    时间: 2015-2-9 05:41
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 第二个灵魂    时间: 2015-2-17 09:52
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 蒙在股里    时间: 2015-3-1 19:52
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 金色的骷髅    时间: 2015-3-6 02:33
是一种使网页(Web Page)产生生动活泼画面的语言
作者: 精灵巫婆    时间: 2015-3-12 18:49
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 小妖女    时间: 2015-3-19 23:42
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
作者: 谁可相欹    时间: 2015-3-20 03:04
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 兰色精灵    时间: 2015-4-11 11:28
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 老尸    时间: 2015-4-13 12:00
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: admin    时间: 2015-4-22 10:37
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 仓酷云    时间: 2015-4-24 15:16
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 若相依    时间: 2015-4-28 21:40
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 不帅    时间: 2015-4-30 19:23
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 飘灵儿    时间: 2015-4-30 23:50
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 再见西城    时间: 2015-5-9 15:45
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2