Ustawianie źródła multimediów html5 przy użyciu ajax

Potrzebowałem wspomagać nagłówki uwierzytelniania dla moich plików audio, które pobierałem z zewnętrznego serwera. Więc teraz próbuję użyć ajax, mogę pobrać pliki dobrze, ale nie mogę ustawić ich jako źródła mediów dla mojego odtwarzacza. Jak podchodzisz do ustawiania załadowanego pliku ajax jako źródła audio?

EDYTOWAĆ

Skończyło się na naprawianiu, gdyby ktoś wrócił w ten sposób.

if (this.mAudioPlayer.canPlayType("audio/mpeg")) {
    this.mExtension = '.mp3';
}else if (this.mAudioPlayer.canPlayType("audio/ogg")) {
    this.mExtension = '.ogg';
} else if (this.mAudioPlayer.canPlayType("audio/mp4")) {
    this.mExtension = '.m4a'; 
}

this.CreateAudioData = function() {

    //downloading audio for use in data:uri
    $.ajax({
        url: aAudioSource + this.mExtension + '.txt',
        type: 'GET',
        context: this,
        async: false,
        beforeSend: function(xhr) {xhr.setRequestHeader('Authorization', window.userId);},
        success: this.EncodeAudioData,
        error: function(xhr, aStatus, aError) { HandleError('Audio Error: ' + aStatus); }
    });
};

this.EncodeAudioData = function(aData) {
    //this.mAudioData = base64_encode(aData);
    this.mAudioData = aData;

    if (this.mExtension == '.m4a') {
        Debug("playing m4a");
        this.mAudioSrc = "data:audio/mp4;base64," + this.mAudioData;
    } else if (this.mExtension == '.ogg') {
        Debug("playing ogg");
        this.mAudioSrc = "data:audio/ogg;base64," + this.mAudioData;
    } else if (this.mExtension == '.mp3') {
        Debug("playing mp3");
        this.mAudioSrc = "data:audio/mp3;base64," + this.mAudioData;
    }

};

this.play = function() {

    if (this.mAudioPlayer.src != this.mAudioSrc) {
        this.mAudioPlayer.src = this.mAudioSrc;
    }
    this.mAudioPlayer.load();
    this.mAudioPlayer.play();
};

Musiałem zrobić asynch: false, w przeciwnym razie dostałbym małą porcję dźwięku zamiast wszystkiego. Chociaż usunięcie asynchera sprawiło, że debugowanie stało się łatwiejsze.

questionAnswers(2)

yourAnswerToTheQuestion