仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1076|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之怎样捕捉音频及输入音频

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:39:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-30 01:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表