浏览代码

Merge branch '测试录音'

liushengqiang 2 年之前
父节点
当前提交
8a4d467939
共有 1 个文件被更改,包括 17 次插入11 次删除
  1. 17 11
      src/view/evaluating/recordAudio.ts

+ 17 - 11
src/view/evaluating/recordAudio.ts

@@ -1,7 +1,7 @@
-import JsRecorder from 'js-audio-recorder'
-import Recorder from "recorder-core/recorder.mp3.min"; 
+import JsRecorder from "js-audio-recorder";
+import Recorder from "recorder-core/recorder.mp3.min";
 // import Recorder from "recorder-core/recorder.wav.min";
-import { register } from './websocket';
+import { register } from "./websocket";
 let mediaRecorder: JsRecorder | null;
 let chunks: Blob[] = [];
 
@@ -13,11 +13,11 @@ let chunks: Blob[] = [];
  * @param {string} type 下载的文件后缀
  */
 function _download(blob: Blob, name: string, type: string): void {
-    let oA = document.createElement('a');
+	let oA = document.createElement("a");
 
-    oA.href = window.URL.createObjectURL(blob);
-    oA.download = `${ name }.${ type }`;
-    oA.click();
+	oA.href = window.URL.createObjectURL(blob);
+	oA.download = `${name}.${type}`;
+	oA.click();
 }
 
 let rec: typeof Recorder | null;
@@ -45,7 +45,7 @@ var recOpen = function (success?: any) {
 			//dialog&&dialog.Cancel(); 如果开启了弹框,此处需要取消
 			//rec.start() 此处可以立即开始录音,但不建议这样编写,因为open是一个延迟漫长的操作,通过两次用户操作来分别调用open和start是推荐的最佳流程
 			success && success();
-            // register('recorder',)
+			// register('recorder',)
 		},
 		function (msg: any, isUserNotAllow: any) {
 			//用户拒绝未授权或不支持
@@ -64,13 +64,19 @@ function recStart() {
 /**结束录音**/
 function recStop() {
 	rec.stop(
-		function (blob: any, duration: any) {
+		function (blob: Blob, duration: any) {
 			//简单利用URL生成本地文件地址,注意不用了时需要revokeObjectURL,否则霸占内存
 			//此地址只能本地使用,比如赋值给audio.src进行播放,赋值给a.href然后a.click()进行下载(a需提供download="xxx.mp3"属性)
 			var localUrl = (window.URL || webkitURL).createObjectURL(blob);
-            _download(blob, 'test', 'mp3')
-            window?.ORCHESTRA.writeFile(blob)
+			blob.arrayBuffer().then((buffer) => {
+				console.log(buffer);
+                console.log(new Int16Array(buffer))
+				console.log(blob.stream());
+                window?.ORCHESTRA?.writeFile(new Int16Array(buffer));
+			});
 			console.log(blob, localUrl, "时长:" + duration + "ms");
+			_download(blob, "test", "mp3");
+			
 			rec.close(); //释放录音资源,当然可以不释放,后面可以连续调用start;但不释放时系统或浏览器会一直提示在录音,最佳操作是录完就close掉
 			// rec=null;