java 微信服务器录音下载到自己服务器,并转为wav格式
/**
*
* 根据文件id获取文件流
* @param mediaId
* 媒体id
* @throws Exception
*/
public static InputStream getInputStream(String mediaId) {
String accessToken=TaskController.getAccessToken();
InputStream is = null;
String url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token="
+ accessToken + "&media_id=" + mediaId;
try {
URL urlGet = new URL(url);
HttpURLConnection http = (HttpURLConnection) urlGet
.openConnection();
http.setRequestMethod("GET"); // 必须是get方式请求
http.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
http.connect();
// 获取文件转化为byte流
is = http.getInputStream();
System.out.println("文件流======:"+is);
} catch (Exception e) {
e.printStackTrace();
}
return is;
}
/**
*
* 创建文件路径和文件名称
*/ private String getFilePath() {
String baseFolder = propertieService.REPOSITORY_PATH+File.separator + "images";
Date nowDate = new Date();
// yyyy/MM/dd
String fileFolder = baseFolder + File.separator + new DateTime(nowDate).toString("yyyy")
+ File.separator + new DateTime(nowDate).toString("MM") + File.separator
+ new DateTime(nowDate).toString("dd");
File file = new File(fileFolder);
if (!file.isDirectory()) {
// 如果目录不存在,则创建目录
file.mkdirs();
}
// 生成新的文件名
//String fileName = new DateTime(nowDate).toString("yyyyMMddhhmmssSSSS")
// + RandomUtils.nextInt(100, 9999) + "." + StringUtils.substringAfterLast(sourceFileName, ".");
// 生成新的文件名--微信下载的文件格式为amr
String fileName = new DateTime(nowDate).toString("yyyyMMddhhmmssSSSS")
+ RandomUtils.nextInt(100, 9999) + "." + "amr";
return fileFolder + File.separator + fileName;
}
/**
*
* 获取下载文件信息,保存到磁盘
* @param mediaId
* 文件的id
* @throws Exception
*/
@ResponseBody
@RequestMapping(value="downAndupload",method=RequestMethod.GET)
public String saveToDisk(String mediaId){
//public String saveToDisk(String mediaId)throws Exception {
InputStream inputStream = getInputStream(mediaId);
FileOutputStream fileOutputStream = null;
int size=0;
try {
size = inputStream.available();
byte[] data = new byte[size];
int len = 0;
// 文件新路径
String filePath = getFilePath();
// 生成图片的绝对引用地址
// 封装Result对象,并且将文件的byte数组放置到result对象中
PicUploadResult fileUploadResult = new PicUploadResult();
String picUrl = StringUtils.replace(StringUtils.substringAfter(filePath, propertieService.REPOSITORY_PATH), "\\", "/");
fileUploadResult.setUrl(propertieService.IMAGE_BASE_URL + picUrl);
fileOutputStream = new FileOutputStream(filePath);
while ((len = inputStream.read(data)) != -1) {
fileOutputStream.write(data, 0, len);
//String url=convertAmr2Mp3(fileUploadResult.getUrl());
String url=convertAmr2Mp3(propertieService.REPOSITORY_PATH+picUrl);
//return fileUploadResult.getUrl();
String wavUrl = StringUtils.replace(StringUtils.substringAfter(url, propertieService.REPOSITORY_PATH), "\\", "/");
return propertieService.IMAGE_BASE_URL+wavUrl;
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
//从微信下载下来的文件格式是amr格式的,amr的文件比较小,下载下来后可以在手机上播放,但是不能通话html标签进行播放,因此将其转为wav或者mp3才能在html里面播放,下面贴出转为wav格式文件的代码,转为mp3的与此相似,但是我没有转成功,有转为成功的可赐教。
/**
* 将amr格式转为wav格式
* @param amrFilePath amr文件
* @return wav文件路径
*/
public static String convertAmr2Mp3(String amrFilePath) {
File source = new File(amrFilePath);
String extension = amrFilePath.substring(amrFilePath.lastIndexOf("."));
String targetFilename = amrFilePath.replace(extension, ".wav");
String os = System.getProperties().getProperty("os.name").toLowerCase();
if (os.startsWith("win")) {
File target = new File(targetFilename);
Encoder encoder = new Encoder();
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp3");
AudioAttributes audio = new AudioAttributes();
audio.setCodec("libmp3lame");
attrs.setAudioAttributes(audio);
try {
encoder.encode(source, target, attrs);
} catch (Exception e) {
e.printStackTrace();
LOGGER.debug("win convert amr to wav error", e.getMessage());
}
} else {
String command = "ffmpeg -i " + amrFilePath + " "+ targetFilename;
try {
Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
LOGGER.debug("linux convert amr to wav error", e.getMessage());
}
}
return targetFilename;
}
java 微信服务器录音下载到自己服务器,并转为wav格式相关推荐
- java 微信语音下载电脑版下载_java微信server录音下载到自己server
本文实例为大家分享了java微信server录音下载到自己server的具体代码,供大家参考,具体内容如下 /** * @author why * */ public class VoiceDownl ...
- java微信公众号开发之配置服务器
5年了,你知道我这5年是怎么过的吗?! 5年前我做过一次公众号开发,当时写了篇简单的博客:https://blog.csdn.net/User_xiangpeng/article/details/50 ...
- 下载的mp3音频怎么转换wav格式
现在生活节奏比较快,所以大家一般都是下载的MP3格式的音频,然后可以在上下班路上听一听,放松一下心情,那么如果想把MP3格式转换为wav格式怎么办呢?郭德纲于谦相声全集mp3怎么转换wav格式?请看下 ...
- m4s格式转换mp3_下载的mp3音频怎么转换wav格式
现在生活节奏比较快,所以大家一般都是下载的MP3格式的音频,然后可以在上下班路上听一听,放松一下心情,那么如果想把MP3格式转换为wav格式怎么办呢?郭德纲于谦相声全集mp3怎么转换wav格式?请看下 ...
- java 音频转为wav格式标准音频 | Java工具类
目录 简述 环境依赖 maven依赖 ffmpeg依赖 工具类代码 总结 简述 该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率.声道数等指标.主要是使用ffmpeg命令进行转换. ...
- java微信公众号开发一:服务器信息配置
假设你已经拥有一个微信测试号,基本信息如下图所示: 编辑扣接口配置信息,URL为域名服务信息地址/项目名/controller中配置的requestmapping路径(个人开发测试的时候是用的NATA ...
- 从微信头像链接下载图片到服务器
public static String getImageByUrl(String imageurl, String savepath, String name) { try {// 构造URLURL ...
- java实现录音并保存为wav格式的音频文件
前言:本意是想像个录屏的软件,这篇先从录音功能开始. 整体思路:采用java官方API--TargetDataLine,从声卡中采集音频数据达到录音效果,采集的数据为PCM裸流,再将PCM转为wav格 ...
- Qt之实现录音播放及raw(pcm)转wav格式
简述 在上一篇 Qt 之 WAV文件解析 中详细地分析了wav格式文件的文件头信息.通过QAudioInput实现录音功能,但是录音生成的文件并不能用播放器打开,就算更改后缀名也无法识别(有时候下载的 ...
最新文章
- 30天敏捷生活(8): 生成你的20/80待做事项列表
- libco协程库源码解读
- python 使用 os的 popen(‘命令’) 如果命令行输出中 有中文乱码, 提示 'gbk' 无法解析的错误 解决办法
- gitlab git clone 卡住_gitlab从入门到绝望
- 求f(x,n)(信息学奥赛一本通-T1166)
- scm中mysql作用_scm项目问题
- 解决placeholder样式设置无效问题,更改placeholder默认样式颜色
- javascript中的||运算符
- oracle计算两个日期的时间差时分秒
- 计算机软件知识pdf,[计算机软件及应用]PDF基础知识.doc
- windows server 2003 系统提权
- efi 炫龙dd3plus_散热真的“秀”,炫龙DD3 Plus细节感受魅力
- Mariadb 安装教程 Windows版
- Dell 服务器阵列扩容【经验分享(转)】
- android 壁纸设置分析
- Excel如何批量对一列添加单引号
- 我学习编程的好的学习方法!
- 什么是404页面,如何正确设置制作404页面
- ECMAScript重点复习(一)
- 【arcgis天地图wmts加载显示空白】
热门文章
- 形式语言与自动机 第6章 上下文无关语言的性质
- Mandelbrot命令行实现
- Android开发之App拍照系统相册展示
- mysql sql.gz 解压_linux 安装mysql数据库——tar.gz包解压安装法
- 机器学习之深入理解K最近邻分类算法(K Nearest Neighbor)
- 华清远见上海中心22071班 9.30作业
- 吴恩达出任Woebot董事长,再度出手医疗领域帮人们治疗抑郁症
- 计算机音乐数字乐谱青芒,牵丝戏 - 青芒Qimo - 5SING中国原创音乐基地
- 7-3 求最大值 (10 分)
- 基于jsp mysql的二手物品交易系统_jsp+mysql高校二手物品交易系统设计