0
回答
关于录音数据处理的问题
华为云4核8G,高性能云服务器,免费试用   
new Thread(new Runnable() {
			@Override
			public void run() {
				DataOutputStream output = null;
				short readbuffer[] = new short[RecorderParameter.bufferSizeInBytes/2];
				byte[] mBuffer = new byte[RecorderParameter.bufferSizeInBytes];
				byte[] temp = new byte[RecorderParameter.bufferSizeInBytes];
				try {
					output = new DataOutputStream(new BufferedOutputStream(
							new FileOutputStream(file)));
					while (isRecording) {
						int readSize = audioRecord.read(readbuffer, 0,
								readbuffer.length);
						if (readSize < 0) {
							isRecording = false;
							continue;
						}
						
						short[] oneSecond = mixVoice(readbuffer, RecorderParameter.bufferSizeInBytes/2);
}

private short[] mixVoice(short[] source,int items) {
		short[] array = new short[items];
		short a = 500;
		for (int i = 0; i < items; i++) {
	//		System.out.println("source["+i+"]="+source[i]);
			array[i] = (short)(source[i]*a);
			if(array[i]==32767){
				num1++;
			}else if(array[i]==-32768){
				num2++;
			}else if(array[i]<-32768){
				num3++;
			}else if(array[i]>32767){
				num4++;
			}else{
				num5++;
			}
		}
		return array;
	}
我是用short写入的录音数据,现在我要做一个排爆音的测试,爆音的出现时由于数据溢出而导致的,现在我要做的就是把录进来的录音数据扩大,使它出现溢出的情况。但是为什么我把读入的数据扩大了500倍,也没有出现数据溢出的问题,这是为什么?是不是我代码有问题呢?想请大家帮我看一下。

急!谢谢!

<无标签>
举报
顶部