MeteorJS - 如何录制手机麦克风的声音?

时间:2017-01-27 18:19:39

标签: javascript cordova meteor audio

我能够从浏览器中获取声音字节数据,但是当我为手机构建它并尝试它时,它无法正常工作。

我已经检查过,人们对cordova-plugin-media-capture有好运但是,它似乎录制了音频并将其存档在设备上。

我需要以某种方式获取音频数据并在手机上自行操作。

我目前正在做什么来在非移动设备上获取音频

navigator.mediaDevices.getUserMedia({audio: true}).then(onMediaSuccess).catch(onMediaError);

function onMediaSuccess(stream) {
    mediaRecorder = new MediaStreamRecorder(stream);
    mediaRecorder.mimeType = 'audio/wav';
    mediaRecorder.ondataavailable = handleDataAvailable;
    mediaRecorder.start();

    function handleDataAvailable(blob) {
        toBuffer(blob, function(err, buffer) {
            if (err)
                throw err

            ws.publish(`com.app.audioStream__`, {payload: buffer});
        });
    }
}

然而,似乎用户媒体似乎没有效果。

我尝试过使用navigator.device.capture.captureAudio,但在手机上调试它并看看控制台输出的内容有点困难。

当我使用该方法时,它会提示一些由cordova管理的UI,它希望我收听声音并停止它然后将其写入文件。我正在寻找积极阅读麦克风。

编辑: 我甚至试过cordova-diagnostic-plugin

    // check and request microphone access
    cordova.plugins.diagnostic.getMicrophoneAuthorizationStatus(function(status) {
        if (status !== "GRANTED") {
            cordova.plugins.diagnostic.requestMicrophoneAuthorization(function(status) {
                //...
                return;
            });
        }
    }, function() {
        throw new Meteor.error('failed to get permission for microphone');
    });

导致空白屏幕。

到目前为止,我没有简单的方法来提示麦克风权限。

0 个答案:

没有答案