本文实例为大家分享了小程序录音上传的具体代码,供大家参考,具体内容如下
首先我们可以先看一下微信小程序的API
这里有关于小程序录音的一些基本配置
index.wxml:
<view class='progress_box' bindtap='openRecording' style="display:{{openRecordingdis}}"> <view class="progress_bgs"> <view class="progress_bg"> <image class="progress_img" src='../../../images/SubjectInformation/luyin.png'></image> </view> </view> </view>
index.wxss:
.topicRecording { float: left; width: 40%; height: 100%; position: relative; } .progress_box { width: 130rpx; height: 130rpx; margin-left: -65rpx; position: absolute; bottom: 0; left: 50%; display: flex; align-items: center; justify-content: center; background: #ccc; border-radius: 50%; } .progress_bgs { width: 114rpx; height: 114rpx; background: #fff; border-radius: 50%; margin: 9rpx; } .progress_bg { width: 106rpx; height: 106rpx; margin: 5rpx; position: absolute; background: #444; border-radius: 50%; } .progress_img { width: 82rpx; height: 82rpx; border-radius: 50%; margin: 12rpx; }
index.js:
Page({ data: { openRecordingdis: "block",//录音图片的不同 shutRecordingdis: "none",//录音图片的不同 recordingTimeqwe:0,//录音计时 setInter:""//录音名称 }, //录音计时器 recordingTimer:function(){ var that = this; //将计时器赋值给setInter that.data.setInter = setInterval( function () { var time = that.data.recordingTimeqwe + 1; that.setData({ recordingTimeqwe: time }) } , 1000); }, //开始录音 openRecording: function() { var that = this; wx.getSystemInfo({ success: function(res) { that.setData({ shutRecordingdis: "block", openRecordingdis: "none" }) } }) const options = { duration: 60000, //指定录音的时长,单位 ms,最大为10分钟(600000),默认为1分钟(60000) sampleRate: 16000, //采样率 numberOfChannels: 1, //录音通道数 encodeBitRate: 96000, //编码码率 format: 'mp3', //音频格式,有效值 aac/mp3 frameSize: 50, //指定帧大小,单位 KB } //开始录音计时 that.recordingTimer(); //开始录音 recorderManager.start(options); recorderManager.onStart(() => { console.log('。。。开始录音。。。') }); //错误回调 recorderManager.onError((res) => { console.log(res); }) }, //结束录音 shutRecording: function() { var that = this; wx.getSystemInfo({ success: function(res) { that.setData({ shutRecordingdis: "none", openRecordingdis: "block" }) } }) recorderManager.stop(); recorderManager.onStop((res) => { console.log('。。停止录音。。', res.tempFilePath) const {tempFilePath} = res; //结束录音计时 clearInterval(that.data.setInter); //上传录音 wx.uploadFile({ url: appURL + '/wx_SubjectInformation/wx_SubjectRecordKeeping.do',//这是你自己后台的连接 filePath: tempFilePath, name:"file",//后台要绑定的名称 header: { "Content-Type": "multipart/form-data" }, //参数绑定 formData:{ recordingtime: that.data.recordingTimeqwe, topicid: that.data.topicid, userid:1, praisepoints:0 }, success:function(ress){ console.log(res); wx.showToast({ title: '保存完成', icon:'success', duration:2000 }) }, fail: function(ress){ console.log("。。录音保存失败。。"); } }) }) }, //录音播放 recordingAndPlaying: function(eve) { wx.playBackgroundAudio({ //播放地址 dataUrl: '' + eve.currentTarget.dataset.gid + '' }) }, })
上传服务
@RequestMapping(value = "/wx_SubjectRecordKeeping", produces = "application/json") @ResponseBody public Object wx_SubjectRecordKeeping(HttpServletRequest request, @RequestParam("file") MultipartFile files, String recordingtime, int topicid,int userid,int praisepoints) { // 构建上传目录路径 // request.getServletContext().getRealPath("/upload"); String uploadPath = 你自己保存音频的URL; // 如果目录不存在就创建 File uploadDir = new File(uploadPath); if (!uploadDir.exists()) { uploadDir.mkdir(); } // 获取文件的 名称.扩展名 String oldName = files.getOriginalFilename(); String extensionName = ""; // 获取原来的扩展名 if ((oldName != null) && (oldName.length() > 0)) { int dot = oldName.lastIndexOf('.'); if ((dot > -1) && (dot < (oldName.length() - 1))) { extensionName = oldName.substring(dot); } } // 构建文件名称 String fileName = System.currentTimeMillis() + "_" + System.nanoTime() + extensionName; // 获取 String[] fileType = { ".CD", ".WAVE", ".AIFF", ".AU", ".MPEG", ".MP3", ".MPEG-4", ".MIDI", ".WMA", ".RealAudio", ".VQF", ".OggVorbis", ".AMR" }; List<String> fileTyepLists = Arrays.asList(fileType); int fileTypeOnCount = 0; for (String fileTyepListss : fileTyepLists) { if (fileTyepListss.equalsIgnoreCase(extensionName)) { // -----如果是音频文件的话 // 构建文件路径 String filePath = uploadPath + File.separator + fileName; // 保存文件 try { FileUtils.writeByteArrayToFile(new File(filePath), files.getBytes()); } catch (Exception e) { e.printStackTrace(); } } else { fileTypeOnCount++; } } if (fileTypeOnCount == fileTyepLists.size()) { // 不是音频文件 return false; } return false; }
效果图
点击开始录音、录完后点击结束录音
录音成功后的返回
录制的音频文件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]