1

変数として格納されている AudioBuffer があり、それを Audio 要素で再生したいと考えています。これが私の現在の機能しないコードです:

const blob = new Blob(audioBuffer.getChannelData(1), { type: "audio/wav" });
const url = window.URL.createObjectURL(blob);
audioElement.src = url;

audioElement を再生しようとすると、次のエラーが発生します。

Uncaught (in promise) DOMException: 要素にはサポートされているソースがありません。

これを解決する方法について誰かアイデアがありますか? 前もって感謝します!

4

1 に答える 1

0

AudioBuffer は PCM データであり、まだ WAV としてエンコードされていません。WAV が必要な場合は、https://www.npmjs.com/package/audiobuffer-to-wavなどのエンコーディングを行うライブラリを取得する必要があります。

上記のコードを含めた後 (audioBufferToWav 関数とそれが呼び出す関数を index.js からコピーするだけです)。

const blob = new Blob([audioBufferToWav(audioBuffer.getChannelData(1))], { type: "audio/wav" });
const url = window.URL.createObjectURL(blob);
audioElement.src = url;

以下、Web Audio API を使用して PCM AudioBuffer を直接再生します。

var myArrayBuffer = audioBuffer;
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var source = audioCtx.createBufferSource();
source.buffer = myArrayBuffer;
source.connect(audioCtx.destination);
source.start();
于 2020-04-16T15:51:08.633 に答える