【问题标题】:Cannot send audio using `RecordRTC.js` to backend无法使用“RecordRTC.js”将音频发送到后端
【发布时间】:2017-12-24 11:45:28
【问题描述】:

我正在使用RecordRTC.js 将音频发送到后端。但我无法做到这一点。甚至找不到原因。

我的代码:

// 捕获麦克风

captureMicrophone(callback) {
    navigator.mediaDevices.getUserMedia({ audio: true })
    .then(callback)
    .catch( (error)=> {
        alert('Unable to access your microphone.');
        console.error(error);
    });
}

// 开始录制

startRecording () {
    this.captureMicrophone( (microphone) => {
        let audio = document.querySelector('audio');
        window['setSrcObject'](microphone, audio);
        audio.play();
        this.recorder = window['RecordRTC'](microphone, {
            type: 'audio',
            recorderType: window['StereoAudioRecorder'],
            desiredSampRate: 16000
        });
        this.recorder.startRecording();
        // release microphone on stopRecording
        this.recorder.microphone = microphone;
        (<HTMLInputElement> document.getElementById('btn-stop-recording')).disabled = false;
    });
};

// 停止录制

stopRecording () {
    (<HTMLInputElement> document.getElementById('btn-stop-recording')).disabled = false;
    this.recorder.stopRecording(() => {
        this.audio = document.querySelector('audio');
        var blob = this.recorder.getBlob();
        this.audio.src = URL.createObjectURL(blob);
        this.audio.play();
        this.recorder.microphone.stop();
    });
};

//这是发送数据到HTTP服务调用后端

sendMMS() {
    var fileType = 'audio'; // or "audio"
    var fileName = 'abcde.wav';  // or "wav"
    let formData = new FormData();
    formData.append('filename', fileName);
    formData.append('data', this.audio.src);
    this.bsService.sendMMS(formData);
}

通话正在进行。但在后端,null 以数据的形式出现。我认为附加数据有问题。我尝试了很多 StackOverflow 的解决方案。但是,没有成功。

请帮帮我。

谢谢...

【问题讨论】:

  • 我也需要回答
  • 只需检查底部的 cmets。可以帮助你webrtc-experiment.com/RecordRTC
  • formData.append('data', this.audio.src); 必须是 recorder.getBlob() 例如formData.append('data', recorder.getBlob());

标签: javascript html5-audio form-data getusermedia recordrtc


【解决方案1】:

请试试这个:

sendMMS() {
    var fileType = 'audio'; // or "audio"
    var fileName = 'abcde.wav';  // or "wav"
    let formData = new FormData();
    formData.append('filename', fileName);
    formData.append('data', this.recorder.getBlob()); // --------- check this line
    this.bsService.sendMMS(formData);
}

【讨论】:

  • 我只使用你的 git-hub sn-p 做到了这一点。谢谢你。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2019-05-15
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多