Невозможно отправить аудио, используя `RecordRTC.js` для серверной части

Я использую 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 идет как данные. Я думаю, что с добавлением данных что-то не так. Я пробовал так много решений от Stackru. Но безуспешно.

Пожалуйста, помогите мне.

Спасибо...

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);
}
Другие вопросы по тегам