Mehdi Souregi
Mehdi Souregi

Reputation: 3265

Play wav file as bytes received from server

I am receiving a raw data wave file from server, and I need to play this array of bytes on the client side.

I tried to use decodeAudioData like in this link but i got the error :

DOMException : Unable to decode Audio data.

It is logical because my raw data is not a regular mp3 file, it is a wave that needs to be played with 8000Hz rate and 1 channel and 16bits per sample.

Is there a function to play a byte array received from server with a certain rate and a number of channels

Upvotes: 0

Views: 1785

Answers (1)

Mehdi Souregi
Mehdi Souregi

Reputation: 3265

I managed to play the bytes on browser using this method :

function playWave(byteArray) {
    var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
    var myAudioBuffer = audioCtx.createBuffer(1, byteArray.length, 8000);
    var nowBuffering = myAudioBuffer.getChannelData(0);
    for (var i = 0; i < byteArray.length; i++) {
        nowBuffering[i] = byteArray[i];
    }

    var source = audioCtx.createBufferSource();
    source.buffer = myAudioBuffer;
    source.connect(audioCtx.destination);
    source.start();
}

Upvotes: 2

Related Questions