0

VLCで再生されるこのWAVファイルを再生するのに苦労しています(これは、MonoIMA WAV APDCM Audio (ms)サンプリングされたファイルです24000Hz16 bits per sample

を介し て直接埋め込んで再生しようとすると、再生ボタンが非アクティブになっているため、WAV ファイル自体に問題があると思われ<audio>ます... を使用してプログラムで再生しようとするとnew Audio()、エラーが発生しますFailed to load because no supported source was found.

これは、いくつかのサウンドを生成するために私が試したものの最も簡単な例です...AudioContext.decodeAudioDataオーディオのロード時にすべてのチョークを使用しようとする他の試み、 Unable to decode audio data.

AudioBufferこの例では、ある程度認識できるサウンドが生成されますが、非常に引っかき傷があるため、明らかに何か間違ったことをFloat32Array[-1,1]ています。しかし、値の多くは のオーダーであるため、それらを正規化する方法がわかりません10e32

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <style>

    </style>
</head>

<body>
    <script>
    var context = new AudioContext();

    function loadSound(url) {
        var request = new XMLHttpRequest();
        request.open("GET", url, true);
        request.responseType = "arraybuffer";


        request.onload = function() {
            data = new Uint8Array(request.response);

            var buffer = context.createBuffer(1, data.length, 24000);

            var channelData = buffer.getChannelData(0);
            for (var i = 0; i < data.length; i++) {
                channelData[i] = data[i];
            }

            var source = context.createBufferSource();
            source.buffer = buffer;
            source.connect(context.destination);
            source.start(0);
        }

        request.send();
    }

    loadSound('./test.wav');
    </script>
</body>

</html>

助けていただければ幸いです。ありがとう!

4

1 に答える 1

0

この号ではphosphorous 16 ビット オーディオを読み取ってエンコードするreadADPCMand関数で適切な答えを見つけました。encodeAudio16bitUInt8Array

于 2016-06-27T00:12:09.417 に答える