qa-prevention-gwj-vue/static/bi/js/ezuikit_v3.4/js/talk/recoder.js

108 lines
3.2 KiB
JavaScript

var audio_context;
var recorder;
function startUserMedia(stream) {
var input = audio_context.createMediaStreamSource(stream);
recorder = new Recorder(input);
}
function startRecording(button) {
recorder && recorder.record();
// button.disabled = true;
// button.nextElementSibling.disabled = false;
}
function stopRecording(button) {
recorder && recorder.stop();
// button.disabled = true;
// button.previousElementSibling.disabled = false;
createAudioDom();
recorder.clear();
}
function voiceInit() {
console.log("run init")
try {
// webkit shim
window.AudioContext = window.AudioContext || window.webkitAudioContext;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
window.URL = window.URL || window.webkitURL;
audio_context = new AudioContext;
console.log('Audio context set up.');
console.log('navigator.getUserMedia ' + (navigator.getUserMedia ? 'available.' : 'not present!'));
} catch (e) {
console.log("err",e)
// layer.msg('No web audio support in this browser!');
}
navigator.getUserMedia({ audio: true }, startUserMedia, function (e) {
console.log('No live audio input: ' + e);
// layer.msg('浏览器未找到麦克风');
});
};
function createAudioDom(){
// recorder && recorder.exportWAV(function (blob) {
// var url = URL.createObjectURL(blob);
// var au = document.createElement('audio');
// au.controls = true;
// au.src = url;
// document.body.appendChild(au);
// });
}
function wavUpload() {
try{
recorder && recorder.stop();
createAudioDom();
recorder &&recorder.exportWAV(function (wav_file) {
console.log("wav_file",wav_file);
if(wav_file.size < 1000){
layer.msg("录音失败,请重试");
recodeTime = 0;
return false;
}
var formdata = new FormData(); // form 表单 {key:value}
formdata.append("voiceFile", wav_file); // form input type="file"
formdata.append("accessToken", accessToken);
formdata.append("deviceSerial", deviceSerial);
formdata.append("channelNo", channelNo);
padding = true;
$.ajax({
url: "/api/lapp/voice/sendonce",
type: 'post',
processData: false,
contentType: false,
data: formdata,
dataType: 'json',
success: function (data) {
console.log(data);
if(data.code == '200'){
countTime('sub', recodeTime + 2); // 延时
}else if(data.code == "111001"){
return false;
} else {
if(recodeTime !== 0){ // 仅需提示过短外其他错误
layer.msg(data.msg || '发送失败,请稍后再试')
}
}
//ocument.getElementById("player").src = "/get_audio/" + data.filename;
padding = false;
recodeTime = 0;
},
error: function(err){
console.log("err",err);
padding = false;
recodeTime = 0;
layer.msg("网络异常,请稍后再试");
}
})
});
recorder && recorder.clear();
}catch(err){
console.log(err);
}
}