微信小程序--录音
var app = getApp(),
$ = require("../../utils/util.js");
const recorderManager = wx.getRecorderManager();
var interval;
Page({
data: {
listen: false,
voicePath: "",
minute: 0,
second: 0,
timeText: "00:00"
},
onLoad: function(e) {},
//计时器
timer: function() {
let second = Number(this.data.second);
let minute = Number(this.data.minute);
let timeText = this.data.timeText;
second = second + 1;
if (second >= 60) {
second = 0;
minute = minute + 1;
}
second < 10 ? second = "0" + second : second;
minute < 10 ? minute = "0" + minute : minute;
timeText = minute + ":" + second;
this.setData({
second: second,
minute: minute,
timeText: timeText
})
},
//开始录音
startluyin: function() {
let that = this;
that.setData({
start: true,
});
interval = setInterval(function() {
that.timer();
}, 1000)
const options = {
duration: 600000, //指定录音的时长,单位 ms
sampleRate: 16000, //采样率
numberOfChannels: 1, //录音通道数
encodeBitRate: 96000, //编码码率
format: 'mp3', //音频格式,有效值 aac/mp3
frameSize: 50, //指定帧大小,单位 KB
}
//开始录音
recorderManager.start(options);
recorderManager.onStart(() => {
console.log('recorder start')
});
//错误回调
recorderManager.onError((res) => {
console.log(res);
})
},
//结束录音
endluyin: function() {
this.setData({
start: false
})
recorderManager.stop();
recorderManager.onStop((res) => {
this.tempFilePath = res.tempFilePath;
console.log('停止录音', res.tempFilePath)
const {
tempFilePath
} = res;
this.setData({
audioPath: res.tempFilePath
})
})
clearInterval(interval);
},
//删除录音
deleteluyin: function() {
let that = this;
wx.showModal({
title: '提示',
content: '您确定要删除此录音吗',
success: function(res) {
if (res.confirm) {
that.setData({
timeText: "00:00",
voicePath: "",
audioPath: "" })
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
//播放录音
playaudio: function() {
const innerAudioContext = wx.createInnerAudioContext();
this.setData({
listen: true
})
innerAudioContext.autoplay = true
innerAudioContext.src = this.tempFilePath
innerAudioContext.onPlay(() => {
console.log('开始播放')
})
//监听是否播放完毕
innerAudioContext.onEnded(() => {
console.log('播放结束')
this.setData({
listen: false
})
})
innerAudioContext.onError((res) => {
console.log(res.errMsg)
console.log(res.errCode)
})
},
//上传录音
uploadluyin: function() {
let that = this;
$.AJAX(app.globalData.API_OSSUPLOAD + '?type=sp_twitter', "GET", {}, function(res) {
var oss = res.datas;
var audioPath = that.data.audioPath;
var voicePath = that.data.voicePath;
console.log(audioPath, "111")
if (audioPath) {
$.loading("上传中...", 10000)
oss.path = audioPath;
var imgtype = audioPath.substr(audioPath.length - 3);
var imgname = $.getrandom() + '/' + $.getrandom2() + '.' + imgtype;
oss.key = oss.key + imgname;
$.UPLOADOSS(oss.host, oss, function(res) {
voicePath = oss.host + "/" + oss.key;
that.setData({
voicePath: voicePath
})
$.hideloading();
wx.showToast({
title: '上传成功',
icon: 'success',
duration: 2000
})
wx.navigateBack({
delta: 1
})
let pages = getCurrentPages();
console.log(pages, "pages---")
let timeText = that.data.timeText;
pages[1].setData({
voice: voicePath,
audioflag: true,
timeText: timeText
})
})
} else {
wx.showModal({
title: '提示',
content: '请录音再上传',
showCancel: false,
confirmText: "知道了",
success: function(res) {
if (res.confirm) {
console.log('用户点击确定')
}
}
})
}
})
}
})
<view class="container">
<view class='topbox'>
<view class="m-loading-box" bindtap='playaudio'>
<label class="{{listen?'u-loading':'u-noloading'}}"></label>
<image class="luyin1" src="https://cdn.quansuwangluo.com/shapan/luyin1.png"></image>
</view>
<view class='time'>{{timeText}}</view>
</view>
<view class='bottombox'>
<view class='opt opt_del' bindtap='deleteluyin'>
<view class='delwrap'>
<image src="https://cdn.quansuwangluo.com/shapan/del.png"></image>
</view>
<view>删除</view>
</view>
<view class='opt opt_luyin' bindtap='startluyin' wx:if="{{!start}}">
<view class='luyinwrap'>
<image src="https://cdn.quansuwangluo.com/shapan/pause.png"></image>
</view>
<view>点击录音</view>
</view>
<view class='opt opt_luyin' bindtap='endluyin' wx:else>
<view class='luyinwrap'>
<image src="https://cdn.quansuwangluo.com/shapan/nopause.png"></image>
</view>
<view>点击录音</view>
</view>
<view class='opt opt_listen' bindtap='uploadluyin'>
<view class='listenwrap'>
<image src="https://cdn.quansuwangluo.com/shapan/upload.png"></image>
</view>
<view>上传</view>
</view>
</view>
</view>
.topbox{
background-color: #FCF6ED;
font-size: 58rpx;
text-align: center;
position: relative;
padding: 225rpx 0;
}
.topbox .u-loading{
width: 240rpx;
height: 240rpx;
display: inline-block;
vertical-align: middle;
-webkit-animation: weuiLoading 1s steps(12, end) infinite;
animation: weuiLoading 1s steps(12, end) infinite;
background: transparent url('https://cdn.quansuwangluo.com/shapan/loading.png') no-repeat;
background-size: 100%;
}
.topbox .u-noloading{
width: 240rpx;
height: 240rpx;
display: inline-block;
vertical-align: middle;
background: transparent url('https://cdn.quansuwangluo.com/shapan/loading.png') no-repeat;
background-size: 100%;
}
.luyin1{
height: 60rpx;
width: 38rpx;
position: absolute;
left: 358rpx;
top:314rpx;
}
.topbox .time{
margin-top: 35rpx;
}
.bottombox{
background-color: #FEA22C;
display: flex;
align-items: center;
height: 400rpx;
color: #fff;
font-size: 34rpx;
padding: 0 90rpx;
text-align: center;
}
.opt_del,.opt_listen{
margin-top: 20rpx;
}
.opt_del .delwrap{
width: 120rpx;
height: 120rpx;
display: flex;
justify-content: center;
align-items: center;
border: 4rpx solid #fff;
border-radius: 50%;
margin-bottom: 20rpx;
}
.opt_del image{
width: 44rpx;
height: 58rpx;
}
.opt_luyin{
padding: 0 70rpx;
}
.opt_luyin .luyinwrap{
width: 180rpx;
height: 180rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
border-radius: 50%;
margin-bottom: 20rpx;
}
.opt_luyin image{
width: 60rpx;
height: 60rpx;
}
.opt_listen image{
width: 60rpx;
height: 54rpx;
}
.opt_listen .listenwrap{
width: 120rpx;
height: 120rpx;
display: flex;
justify-content: center;
align-items: center;
border: 4rpx solid #fff;
border-radius: 50%;
margin-bottom: 20rpx;
}
微信小程序--录音的更多相关文章
- 微信小程序录音实现
最近在写一个小程序的功能,需求是需要把用户的录音记录并上传到服务器,然后调用接口来实现播放功能. 翻阅不少资料都发现小程序对wx.startRecord()接口不在维护, 注意:1.6.0 版本开始, ...
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- 微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
- 微信小程序语音识别开发过程记录 微信小程序silk转mp3 silk转wav 以及ffmpeg使用
说说最近在开发微信小程序语音识别遇到的问题吧 最先使用微信小程序录音控件可以拿到silk格式,后来微信官方又支持mp3格式了 但是我们拿到这些格式以后,都还不能直接使用,做语音识别,因为目前百度的语音 ...
- 微信小程序silk格式转码成mp3格式
最近小程序项目需要录制语音并上传到服务器,经过查资料了解 目前微信小程序录音的文件后缀名是silk,因此需要转换. 经过查资料了解,参考一下的地址 https://github.com/kn007/s ...
- 语音识别功能_微信小程序代办清单任务
最近想给自己的代办清单任务微信小程序想加个语音识别识别功能,废话不多说,直接说重点,语音识别使用的是百度语音识别api,因为微信小程序的录音输入文件目前只能是mp3或aac 但是百度语音识别不支持这两 ...
- 微信小程序(有始有终,全部代码)开发--- 新增【录音】以及UI改进
开篇语 寒假发了一篇练手文章,不出意外地火了: <简年15: 微信小程序(有始有终,全部代码)开发---跑步App+音乐播放器 > 后来又发了BUG修复的版本,出乎意料的火了: 简年18: ...
- 微信小程序常见问题集合(长期更新)
最新更新: 新手跳坑系列:推荐阅读:<二十四>request:fail错误(含https解决方案)(真机预览问题 跳坑指南<七十>如何让微信小程序服务类目审核通过 跳坑六十九: ...
- 微信小程序简介
什么是微信小程序? 今年下半年的时候,微信推出了微信小程序,当然刚刚推出来的时候还是处于内测阶段,但是这并不影响这家伙的热度,也许这是一个新的时代的开启.但是什么是微信小程序呢?微信应用号是一个app ...
随机推荐
- java随机分配端口占用其它服务端口问题完美解决
问题描述: java创建socket连接,创建的随机客户端端口占用了其它服务的端口,导致该服务无法启动 解决: 1.linux系统为java或其它程序提供随机端口配置项 查看端口范围:sysctl ...
- 使用密钥登录CentOS系统(基于密钥的认证)
在Window客户端有多种软件可以登陆ssh,比如putty,xshelll,secureCRT,我就以xshell为例设置使用公钥和私钥验证登陆服务器. 使用Xshell密钥认证机制远程登录Linu ...
- 软件测试:2.Two Faulty Programs
软件测试:2.Two Faulty Programs Questions: 1.Identify the fault; 2.If possible, identify a test case that ...
- 大数据学习之路(1)Hadoop生态体系结构
Hadoop的核心是HDFS和MapReduce,hadoop2.0还包括YARN. Hadoop1.x的生态系统: Hadoop2.x引入YARN: HDFS(Hadoop分布式文件系统)源自于Go ...
- Java中ArrayList和LinkedList区别(转)
具体详情参考原博客: http://pengcqu.iteye.com/blog/502676
- 闪动效果的实现 (jquery方式和css方式)以及 keyframes和opacity 与ie等各浏览器兼容问题
opacity 是CSS3中:设置元素的不透明度的属性(支持ie8以上) opacity: value|inherit;value用于规定不透明度.从 0.0 (完全透明)到 1.0(完全不透明). ...
- IDE 热部署配置
从eclipse切换到IDE,遇到应用不能热部署问题,解决如下 1.tomcat 中server配置下面三点需要注意 2.tomcat的deployment 中 需要选择war exploded而不是 ...
- LinuxMint 下 B站 番 blv 缓存 转 mp4
参考https://www.littleqiu.net/archives/886 (不过我使用绝对路径,ffmpeg报错,相对路径没问题) 一.安装ffmpge sudo apt-get instal ...
- 【perl】企业微信发消息
https://open.work.weixin.qq.com/api/doc#90000/90135/90236 #!/usr/bin/env perl use strict; use warnin ...
- Lua学习之加载其他lua文件
Lua 中提供了模块的概念,模块类似一个封装库或者 C++ 中的一个类,可以将公用的部分提到一个文件中,以 API 的形式供其他 lua 文件调用. Lua 中的模块其实就是包含变量.函数等已知元素组 ...