/** 
     *  
     * 根据文件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格式相关推荐

  1. java 微信语音下载电脑版下载_java微信server录音下载到自己server

    本文实例为大家分享了java微信server录音下载到自己server的具体代码,供大家参考,具体内容如下 /** * @author why * */ public class VoiceDownl ...

  2. java微信公众号开发之配置服务器

    5年了,你知道我这5年是怎么过的吗?! 5年前我做过一次公众号开发,当时写了篇简单的博客:https://blog.csdn.net/User_xiangpeng/article/details/50 ...

  3. 下载的mp3音频怎么转换wav格式

    现在生活节奏比较快,所以大家一般都是下载的MP3格式的音频,然后可以在上下班路上听一听,放松一下心情,那么如果想把MP3格式转换为wav格式怎么办呢?郭德纲于谦相声全集mp3怎么转换wav格式?请看下 ...

  4. m4s格式转换mp3_下载的mp3音频怎么转换wav格式

    现在生活节奏比较快,所以大家一般都是下载的MP3格式的音频,然后可以在上下班路上听一听,放松一下心情,那么如果想把MP3格式转换为wav格式怎么办呢?郭德纲于谦相声全集mp3怎么转换wav格式?请看下 ...

  5. java 音频转为wav格式标准音频 | Java工具类

    目录 简述 环境依赖 maven依赖 ffmpeg依赖 工具类代码 总结 简述 该工具类主要是为了将各类音频转为wav标准格式,其中可以调节采样率.声道数等指标.主要是使用ffmpeg命令进行转换. ...

  6. java微信公众号开发一:服务器信息配置

    假设你已经拥有一个微信测试号,基本信息如下图所示: 编辑扣接口配置信息,URL为域名服务信息地址/项目名/controller中配置的requestmapping路径(个人开发测试的时候是用的NATA ...

  7. 从微信头像链接下载图片到服务器

    public static String getImageByUrl(String imageurl, String savepath, String name) { try {// 构造URLURL ...

  8. java实现录音并保存为wav格式的音频文件

    前言:本意是想像个录屏的软件,这篇先从录音功能开始. 整体思路:采用java官方API--TargetDataLine,从声卡中采集音频数据达到录音效果,采集的数据为PCM裸流,再将PCM转为wav格 ...

  9. Qt之实现录音播放及raw(pcm)转wav格式

    简述 在上一篇 Qt 之 WAV文件解析 中详细地分析了wav格式文件的文件头信息.通过QAudioInput实现录音功能,但是录音生成的文件并不能用播放器打开,就算更改后缀名也无法识别(有时候下载的 ...

最新文章

  1. 30天敏捷生活(8): 生成你的20/80待做事项列表
  2. libco协程库源码解读
  3. python 使用 os的 popen(‘命令’) 如果命令行输出中 有中文乱码, 提示 'gbk' 无法解析的错误 解决办法
  4. gitlab git clone 卡住_gitlab从入门到绝望
  5. 求f(x,n)(信息学奥赛一本通-T1166)
  6. scm中mysql作用_scm项目问题
  7. 解决placeholder样式设置无效问题,更改placeholder默认样式颜色
  8. javascript中的||运算符
  9. oracle计算两个日期的时间差时分秒
  10. 计算机软件知识pdf,[计算机软件及应用]PDF基础知识.doc
  11. windows server 2003 系统提权
  12. efi 炫龙dd3plus_散热真的“秀”,炫龙DD3 Plus细节感受魅力
  13. Mariadb 安装教程 Windows版
  14. Dell 服务器阵列扩容【经验分享(转)】
  15. android 壁纸设置分析
  16. Excel如何批量对一列添加单引号
  17. 我学习编程的好的学习方法!
  18. 什么是404页面,如何正确设置制作404页面
  19. ECMAScript重点复习(一)
  20. 【arcgis天地图wmts加载显示空白】

热门文章

  1. 形式语言与自动机 第6章 上下文无关语言的性质
  2. Mandelbrot命令行实现
  3. Android开发之App拍照系统相册展示
  4. mysql sql.gz 解压_linux 安装mysql数据库——tar.gz包解压安装法
  5. 机器学习之深入理解K最近邻分类算法(K Nearest Neighbor)
  6. 华清远见上海中心22071班 9.30作业
  7. 吴恩达出任Woebot董事长,再度出手医疗领域帮人们治疗抑郁症
  8. 计算机音乐数字乐谱青芒,牵丝戏 - 青芒Qimo - 5SING中国原创音乐基地
  9. 7-3 求最大值 (10 分)
  10. 基于jsp mysql的二手物品交易系统_jsp+mysql高校二手物品交易系统设计