Phonegap Mischen von Audiodateien

Ich erstelle eine Karaoke-App mit Phonegap für Ios.

Ich habe Audiodateien im Ordner www / assets, die ich mit der Funktion media.play () abspielen kann

Auf diese Weise kann der Benutzer den Playback anhören. Während die Medien wiedergegeben werden, zeichnet eine andere Medieninstanz auf.

Sobald die Aufnahme beendet ist, muss ich die Sprachaufnahmedatei über die Hintergrundspur legen, und ich habe keine Ahnung, wie ich das tun könnte.

Ein Ansatz, von dem ich dachte, dass er funktionieren könnte, ist die Verwendung der WEb-Audio-API - ich habe den folgenden Code, den ich übernommen habeHTML5 Rocks Dadurch werden die beiden Dateien in einen AudioContext geladen und ich kann beide gleichzeitig abspielen. Ich möchte jedoch die beiden Puffer in eine einzige WAV-Datei schreiben. Kann ich source1 und source2 auf irgendeine Weise in einer einzigen neuen Datei kombinieren?

var context;
var bufferLoader;

function init() {
    // Fix up prefixing
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    context = new AudioContext();

    bufferLoader = new BufferLoader(
        context,
        [
            'backingTrack.wav',
            'voice.wav',
        ],
        finishedLoading
    );

    bufferLoader.load();
}

function finishedLoading(bufferList) {
    // Create two sources and play them both together.
    var source1 = context.createBufferSource();
    var source2 = context.createBufferSource();
    source1.buffer = bufferList[0];
    source2.buffer = bufferList[1];

    source1.connect(context.destination);
    source2.connect(context.destination);
    source1.start(0);
    source2.start(0);
}


function BufferLoader(context, urlList, callback) {
    this.context = context;
    this.urlList = urlList;
    this.onload = callback;
    this.bufferList = new Array();
    this.loadCount = 0;
}

BufferLoader.prototype.loadBuffer = function(url, index) {
    // Load buffer asynchronously
    var request = new XMLHttpRequest();
    request.open("GET", url, true);
    request.responseType = "arraybuffer";

    var loader = this;

    request.onload = function() {
        // Asynchronously decode the audio file data in request.response
        loader.context.decodeAudioData(
            request.response,
            function(buffer) {
                if (!buffer) {
                    alert('error decoding file data: ' + url);
                    return;
                }
                loader.bufferList[index] = buffer;
                if (++loader.loadCount == loader.urlList.length)
                    loader.onload(loader.bufferList);
            },
            function(error) {
                console.error('decodeAudioData error', error);
            }
        );
    }

    request.onerror = function() {
        alert('BufferLoader: XHR error');
    }

    request.send();
}

BufferLoader.prototype.load = function() {
    for (var i = 0; i < this.urlList.length; ++i)
        this.loadBuffer(this.urlList[i], i);
}

In dieser Lösung könnte sich etwas befindenWie konvertiere ich ein Array von Audiodaten in eine WAV-Datei? Soweit ich das beurteilen kann, verschachteln sie die beiden Puffer und kodieren sie als .wav, aber ich kann nicht herausfinden, wo sie sie in eine Datei schreiben (die neue WAV-Datei speichern). Irgendwelche Ideen?

Die Antwort unten - hilft nicht wirklich, da ich Web Audio Api (Javascript) und nicht IOS verwende

Antworten auf die Frage(2)

Ihre Antwort auf die Frage