|
@@ -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;
|
|
|
|