今天在测试语音分析是发现h5录音解析,在第六条之后录音都是相同的,开始保存录音使用的是
CommonsMultipartFile uploadFile = (CommonsMultipartFile) audioData;
FileItem item = uploadFile.getFileItem();
File uploadedFile = new File("C:/testvoice/"+System.currentTimeMillis() + ".wav");
item.write(uploadedFile);
误以为是应为CommonsMultipartFile缓存没有清除或者是写入流没有关闭,所以更换了另一种方式:
FileOutputStream os = new FileOutputStream(filePathName);
System.out.println("路径:"+filePathName);
InputStream in = audioData.getInputStream();
int b = 0;
while((b=in.read())!=-1){
//读取文件
os.write(b);
}
os.flush(); //关闭流
in.close();
os.close();
换成此方式后,输入输出流明确关闭了,但是录音5-6条后还是出现录音一直和最后一条相同情况,所以根据js报错查询了一下,找到原因:chrome支持zudio标签录音只能打开6次即在同一个chrome浏览器中var context = new audioContext();只能执行六次,所以解决办法就自然出来了,,即在录音最后执行context.close();关闭方法即可。