Преобразование аудио данных в mp3 (или ogg) - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу преобразовать данные аудио, которые у меня есть, как Blob, поступающие из моего микрофона, в другой (менее занимающий место) формат.

И я нашел этот проект на GitHub, он делает что-то очень близкое к тому, что я хочу, но проблема в том, что я передаю свои аудиоданные через:

navigator.mediaDevices.getUserMedia
then
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
    .......
    audioChunks.push(e.data);
    if (rec.state == "inactive") {
        let blob = new Blob(audioChunks,{type:'audio/x-mpeg-3'});
        .....

, в то время как проект, который я обнаружил, обрабатывает аудио данных по-другому:

navigator.getUserMedia({audio: true}, function(stream) {
      callback(new RecorderObject(audio_context.createMediaStreamSource(stream), cfg));
}, function(e) {
      console.log("An error occurred"); //Null if something goes wrong
      callback(null);
});

В результате кажется сложным использовать то, что я вижу в проекте GitHub, для своего собственного.Я был бы рад, если бы кто-то освоил предмет, возможно, зная проект, о котором я говорю, мог бы сказать мне, если есть какой-то способ, которым я могу адаптировать то, что делается в этом проекте, к моим собственным потребностям.

1 Ответ

0 голосов
/ 26 сентября 2018

Первый пример уже делает то, что вы хотите.MediaRecorder включает поддержку кодеков.

Строка:

let blob = new Blob(audioChunks, {type: 'audio/x-mpeg-3'});

должна быть:

let blob = new Blob(audioChunks, {type: rec.mimeType});

https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/mimeType

Также обратите внимание, что для более старыхВ браузерах свойство mimeType может отсутствовать.Для этого просто инициализируйте MediaRecorder с тем же типом.

new MediaRecorder(stream, {mimeType: 'audio/webm'})

https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/MediaRecorder

Второй пример для записи данных PCM с API Web Audio ... метод, которыйбольше не нужно, особенно в том, что MediaRecorder теперь поддерживает PCM в WebM.

...