Commit 5e615a95 authored by caicaicai's avatar caicaicai

修改

parent d1116b71
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<span class="voiceAppContent_left_title">当前语音通话情况:</span> <span class="voiceAppContent_left_title">当前语音通话情况:</span>
</div> </div>
<audio autoplay :src='srcUrl' style="display:none;"></audio> <audio controls currentTime autoplay :src='srcUrl' style="display:none;"></audio>
<div class="situationStyle"> <div class="situationStyle">
<div v-for="(item,index) in videoContentAllArray" :key="index" class='situation_fa1'> <div v-for="(item,index) in videoContentAllArray" :key="index" class='situation_fa1'>
...@@ -314,7 +314,7 @@ export default { ...@@ -314,7 +314,7 @@ export default {
//WebSocket数据发送 //WebSocket数据发送
websocketsend(agentData){ websocketsend(agentData){
this.websocket.send(agentData); this.websocket.send(agentData);
}, },
//WebSocket关闭 //WebSocket关闭
websocketclose(e){ websocketclose(e){
console.log("connection closed (" + e + ")"); console.log("connection closed (" + e + ")");
...@@ -480,37 +480,14 @@ export default { ...@@ -480,37 +480,14 @@ export default {
}; };
var blob=this.recLogLast.res.blob; var blob=this.recLogLast.res.blob;
//本例子假设使用原始XMLHttpRequest请求方式,实际使用中自行调整为自己的请求方式
//录音结束时拿到了blob文件对象,可以用FileReader读取出内容,或者用FormData上传
var api="https://xx.xx/test_request";
var onreadystatechange=function(title){
return function(){
if(xhr.readyState==4){
if(xhr.status==200){
This.reclog(title+"上传成功",2);
}else{
This.reclog(title+"没有完成上传,演示上传地址无需关注上传结果,只要浏览器控制台内Network面板内看到的请求数据结构是预期的就ok了。", "#d8c1a0");
console.error(title+"上传失败",xhr.status,xhr.responseText);
};
};
};
};
This.reclog("开始上传到"+api+",请求稍后...","#f60");
/***方式一:将blob文件转成base64纯文本编码,使用普通application/x-www-form-urlencoded表单上传***/ /***方式一:将blob文件转成base64纯文本编码 ***/
var reader=new FileReader(); var reader=new FileReader();
reader.onloadend=function(){ reader.onloadend=function(){
var postData=""; var postData="";
postData+="mime="+encodeURIComponent(blob.type);//告诉后端,这个录音是什么格式的,可能前后端都固定的mp3可以不用写 postData+="mime="+encodeURIComponent(blob.type);//告诉后端,这个录音是什么格式的,可能前后端都固定的mp3可以不用写
postData+="&upfile_b64="+encodeURIComponent((/.+;\s*base64\s*,\s*(.+)$/i.exec(reader.result)||[])[1]) //录音文件内容,后端进行base64解码成二进制 postData+="&upfile_b64="+encodeURIComponent((/.+;\s*base64\s*,\s*(.+)$/i.exec(reader.result)||[])[1]) //录音文件内容,后端进行base64解码成二进制
//...其他表单参数 //postData+=encodeURIComponent((/.+;\s*base64\s*,\s*(.+)$/i.exec(reader.result)||[])[1]) //录音文件内容,后端进行base64解码成二进制
// var xhr=new XMLHttpRequest();
// xhr.open("POST", api);
// xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// xhr.onreadystatechange=onreadystatechange("上传方式一【Base64】");
// xhr.send(postData);
//发送语音数据 //发送语音数据
if (This.websocket.readyState == 1) { // that.websock.readyState = 1 表示连接成功,可以立即发送信息 if (This.websocket.readyState == 1) { // that.websock.readyState = 1 表示连接成功,可以立即发送信息
...@@ -634,17 +611,25 @@ export default { ...@@ -634,17 +611,25 @@ export default {
}, },
//播放语音 //播放语音
selectSituation(item){ selectSituation(item){
//this.recClose();
// Blobdata 就是后端返回给你的Blob数据 // var arr = item.contentText.split(',');
const reader = new FileReader(); // //注意base64的最后面中括号和引号是不转译的
const booo = new Blob([item.contentText]); // let bstr = atob(arr);
reader.readAsArrayBuffer(booo); // let n = bstr.length;
reader.onload = (e) => { // let u8arr = new Uint8Array(n);
// while (n--) {
// u8arr[n] = bstr.charCodeAt(n);
// }
// console.log(new Blob([u8arr], {type:'audio/mp3'}));
const reader1 = new FileReader();
const booo = new Blob([item.contentText],{type:'audio/mp3'});
reader1.readAsArrayBuffer(booo);
reader1.onload = (e) => {
const bufer = e.srcElement.result; const bufer = e.srcElement.result;
const blob = this.addWavHeader(bufer, 16000, 16, 1); const blob = this.addWavHeader(bufer, 16000, 16, 1);
this.srcUrl = (window.URL||webkitURL).createObjectURL(blob); this.srcUrl = (window.URL||webkitURL).createObjectURL(blob);
}; };
}, },
//删除某个语音 //删除某个语音
selectDeleteSituation(index){ selectDeleteSituation(index){
...@@ -694,7 +679,7 @@ export default { ...@@ -694,7 +679,7 @@ export default {
} else { } else {
this.floatTo32BitPCM(view, samples); this.floatTo32BitPCM(view, samples);
} }
return new Blob([view], { type: 'audio/wav' }); return new Blob([view], { type: 'audio/mp3' });
}, },
writeString(view, offset, string) { writeString(view, offset, string) {
for (let i = 0; i < string.length; i += 1) { for (let i = 0; i < string.length; i += 1) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment