微信公众号项目录音上传功能

微信公众号项目wx.startRecord录音

本文包含以下功能:
1、开始录音
2、结束录音
3、上传录音
4、开始播放录音
5、结束播放录音

开始录音:

var alltime = 60; //总时长
var r_flag = true; //录音开关			
var r_time = 0; //录音当前时长
var localId , START, END ;
function startRecord() {
	localId = '';
	wx.startRecord({
		success: function() {
			START = new Date().getTime();
			r_flag = true;
			r_time = 0;
			//进度条宽度设置为0
			$(".load em").css({ width: 0 });
			Timer = setInterval(function() {
				r_time += 0.01;
				alltime -= 0.01;
				if(alltime >= 0) {
					//实时更新进度条宽度
					$(".load em").css({ width: r_time / allTime * 100 + '%' });
					if(r_time >= allTime)
					{ //录音当前时长 超过 总时长 => 停止录音									
						clearInterval(Timer);									
						setTimeout(function(){
							stopRecord();
						},500)
					}
				} else {					
					clearInterval(Timer);
					setTimeout(function(){
						stopRecord();
					},500)
				}
			}, 10);
			wx.onVoiceRecordEnd({
				// 录音时间超过一分钟没有停止的时候会执行 complete 回调
				complete: function(res) {
					clearInterval(Timer);
					setTimeout(function(){
						stopRecord();
					},500)
					alert('最多只能录制一分钟');
					localId = res.localId;
					uploadluyin(localId, allTime);
				}
			});
		},
		fail: function() {
			clearInterval(Timer);
			setTimeout(function(){
				stopRecord();
			},500)
		},
		cancel: function() {
			clearInterval(Timer);
			alert('用户拒绝授权录音');
			return false;
		}
	});
}

结束录音:

function stopRecord() {				
	r_flag = false;
	END = new Date().getTime();
	clearInterval(Timer);
	//录音时间
	luyintime = END - START;
	if(luyintime < 100) {
		END = 0;
		START = 0;
		wx.stopRecord({});
		alert('录音时间不能少于0.1秒');
		return false;
	} else {
		wx.stopRecord({
			success: function(res) {
				localId = res.localId;
				uploadluyin(localId, luyintime);
			},
			fail: function(res) {
				alert("录音失败");
				console.log(JSON.stringify(res));
			}
		});
	}
}

上传录音:

function uploadluyin(localId, luyintime) {
	wx.uploadVoice({
		localId: localId, // 需要上传的音频的本地ID,由stopRecord接口获得
		isShowProgressTips: 0, // 默认为1,显示进度提示
		success: function(res) {
			var serverId = res.serverId; // 返回音频的服务器端ID
			//console.log("server"+serverId);
			//ajax => 将serverId传给后端
			//TODO...
		},
		fail:function(res){
			alert("上传失败");
			console.log(JSON.stringfy(res));
		}
	})
}

开始播放录音:

function playVoice() {
	if(localId == '') {
		alert('请先录制一段声音');
		return;
	}
	wx.playVoice({
		localId: localId // 需要播放的音频的本地ID,由stopRecord接口获得
	});				
	//录音播放完成
	wx.onVoicePlayEnd({
		success: function(res) {
			localId = res.localId; // 返回音频的本地ID
			endVoice();
		}
	});
}

结束播放录音:

function endVoice() {
	wx.stopVoice({
		localId: localId // 需要停止的音频的本地ID,由stopRecord接口获得
	});
}

你可能感兴趣的:(web前端,#,javascript)