1.音频转码工具
2.获取临时素材
3.代码
/**
* 微信获取临时素材(录音)并上传到服务器
*
* @param mediaId
* @author hcx
* @since 2024-01-03
* @return 上传之后的url
*/
public String recording(String mediaId) throws IOException {
// 获取临时素材(录音)文件流
InputStream inputStream = weChatService.getTemporaryMaterial(mediaId);
OutputStream outputStream = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
// 服务器路径
String serverUrl = "服务器路径1/路径2/...";
// 相对文件路径
String relativeUrl = "/mp3" + "/" + sdf.format(new Date());
// 文件名(不包括文件后缀)
String fileName = "/" + System.currentTimeMillis() + UUID.randomUUID().toString().replace("-", "");
// 判断是否存在当前目录,不存在则创建
File filePath = new File(serverUrl + relativeUrl);
if (!filePath.exists()) {
filePath.mkdirs();
}
// 1.将文件流写到服务器,变成amr文件
File amrFile = new File(serverUrl + relativeUrl + fileName + ".amr"); // amr文件
outputStream = new FileOutputStream(amrFile);
int len = 0;
byte[] buffer = new byte[1024];
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
// 完毕,关闭所有链接
outputStream.close();
inputStream.close();
// 2.将amr文件转为mp3,再写到服务器
File mp3File = new File(serverUrl + relativeUrl + fileName + ".mp3"); // mp3文件
AudioUtils.amrToMp3(amrFile, mp3File);
// 3.删除服务器的amr文件
Path path = Paths.get(serverUrl + relativeUrl + fileName + ".amr");
Files.delete(path);
String url = relativeUrl + fileName + ".mp3";
return url;
} catch (Exception e){
e.printStackTrace();
logger.error("微信获取临时素材(录音)并上传到服务器失败:" + e);
}
return null;
}