网页Applet录音机的制作 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-20
nized(putManager){
while(emptyBytes<1){
waitingPut++;
try{
putManager.wait();
}catch(InterruptedException _ex){}
waitingPut--;
}
...
}
synchronized(getManager){
usedBytes++;
if(waitingGet>0)getManager.notify();
}
}
public void write(byte[] d){
write(d,0,d.length);
}
public void write(byte[] d,int i,int j){
...
synchronized(getManager){
usedBytes+=j;
if(waitingGet>0)getManager.notify();
}
}
public int read(){
...
}
public int read(byte[] d){
return read(d,0,d.length);
}
public int read(byte[] d,int i,int j){
if(isclose)return -1;
if(ispause){
d[i]=127;
return 1;
}
synchronized(getManager){
...
}
System.arraycopy(data,readPtr,d,i,k);
ReadPtr+=k;
readPtr%=capacity;
usedBytes-=j;
}
synchronized(putManager){
emptyBytes+=j;
if(waitingPut>0)putManager.notify();
}
try{
player.notifyListener(AudioPlayEvent.PLAY_DATA,d);
}catch(Exception e){}
return j;
}
}
//音频播放器类
public class AudioPlayer implements Runnable{
...
AudioBuffer buffer=new AudioBuffer(this);
sun.audio.AudioPlayer.start(buffer);
...
byte[] auData=new byte[400];
//存放解压后的au数据
int compressLength=165;
//GSM格式为165;IMA格式为400;AU格式为800
byte[] compressData=new byte[compressLength];
//存储从文件流中读取的压缩格式数据
...
public void run(){
...
fileInputStream.read(compressData);//从音频文件读取压缩格式数据,此输入流要处理静音
Codec.decode(abyte0,auData); //解压缩数据到auData
Buffer.write(auData,0,400);//写入到缓冲区
...
}
...
}
最后,将上述各个模块拼接起来,并把GUI做好就可以使用了。如果在GUI上加入声音显示效果,你的录音机就更酷了。 总结 这里介绍的声音处理的主要技术,可以组合或衍生使用。例如,可以在网页上方便地实现声音回放;可以加入调节播放起点(跳跃播放)功能,而不使用其它播放器;还可以做语音留言系统。如果数据通过流格式以组播方式实时传出,另一端接收下来然后播放出来,又可非常简单地实现实时语音系统,即语音聊天。另外,有了自己的语音库,还可以实现简单的语音合成技术,让计算机读出文本内容。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于网页Applet录音机的制作 - 编程入门网的所有评论