7***@qq.com
7***@qq.com
  • 发布:2022-06-13 12:13
  • 更新:2022-06-13 12:13
  • 阅读:364

renderjs 录音功能 录好后播放时无声 会是什么原因呢,

分类:uni-app

我有两台Android 大屏,用renderjs实现了录音获得频流后语音识别功能,一台设备上正常能用,另一台设备上没任何反应,
我用uni.getRecorderManager() 来实现录音时没问题都能收到音,也能播放很正常,但是用renderjs录音就不行,刚开始只开启了【RECORD_AUDIO】时直接报错,无权限,后来加上【MODIFY_AUDIO_SETTINGS】权限后不报无权限的错误了,但是录音后播放无声,语音识别也同样无反应,有问题的那台大屏只有USB接口,我买了usb公对公的数据线,但连接后,adb devices 里无任何设备,不知道什么原因,所以也无法跟踪代码,知道代码到哪里报的错。两台Android 版本均为 7.1.2,内核版本 均为4.4.126。 代码里的 mediaRecorder.ignoreMutedMedia = true; 这个是我后加的,不过, 加不加这一行,录音播放都是无声音。

if(navigator.mediaDevices) {
// 获取打开麦克风权限,以及stream对象
navigator.mediaDevices.getUserMedia({audio: true})
.then((stream) => {
console.log(11)
var chunks = [];
// 创建MediaRecorder对象,需要传入stream对象
var mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ignoreMutedMedia = true;

            var startBtn = document.createElement('button');  
            var stopBtn = document.createElement('button');  
            document.body.append(startBtn);  
            document.body.append(stopBtn);  
            startBtn.innerText = '开始';  
            stopBtn.innerText = '结束';  

            // 开始  
            startBtn.onclick = () => {  
                // 开始录音   
                try {  
                  mediaRecorder.start();  
                } catch (error) {  
                  alert(error);  
                }  
            }  
            // 结束  
            stopBtn.onclick = () => {  
                // 停止录音  
                try {  
                    mediaRecorder.stop();  
                } catch (error) {  
                    alert(error);  
                }  
            }  

            // 添加事件监听  
            mediaRecorder.onstart = () => {  
                console.log('start', mediaRecorder.state);  
            }  
            mediaRecorder.onstop = () => {  
                console.log('stop', mediaRecorder.state);  
                // 数据块合成blob对象  
                var blob = new Blob(chunks, {type: 'audio/webm;codecs=opus'});  
                console.log(blob)  

                var audio = document.createElement('audio');  
                var url = (window.URL || webkitURL).createObjectURL(blob);  
                audio.src = url;  
                audio.controls = true;  
                document.body.appendChild(audio);  
                console.log(audio, url)  
            }  
            mediaRecorder.ondataavailable = (e) => {  
                console.log('data');  
                console.log(e);  
                chunks.push(e.data);  
            }  
        }).catch((e) => {  
                console.log(e);  
                alert(e);  
        })  
    }
2022-06-13 12:13 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复