Jack Asa
Jack Asa

Reputation: 21

How to encode audio buffer for mp4-muxer using only client side?

Running Vanligy mp4 muxer demo as shown on https://github.com/Vanilagy/mp4-muxer/tree/main/demo works fine on a desktop but produces an error on Android as follows:

"EncodingError: input audio buffer is incompatible with codec paramers."

Any idea on how to set audioEncoder.configure on Android chrome?

if (audioTrack) {
    audioEncoder = new AudioEncoder({
        output: (chunk, meta) => muxer.addAudioChunk(chunk, meta),
        error: e => console.error(e)
    });
    audioEncoder.configure({
        codec: 'mp4a.40.2',
        numberOfChannels: 1,
        sampleRate: audioSampleRate,
        bitrate: 128000
    });

    // Create a MediaStreamTrackProcessor to get AudioData chunks from the audio track
    let trackProcessor = new MediaStreamTrackProcessor({ track: audioTrack });
    let consumer = new WritableStream({
        write(audioData) {
            if (!recording) return;
            audioEncoder.encode(audioData);
            audioData.close();
        }
    });
    trackProcessor.readable.pipeTo(consumer);
}

Expecting to be able to do MP4 Muxing audio and video on smartphone the same way as on a desktop. The audio buffer doesn't seem to work on Android chrome using codec 'mp4a.40.2'.

Upvotes: 1

Views: 243

Answers (0)

Related Questions