2012-08-13 151 views
1

我有一個代碼將一個ArrayBuffer(從一個XMLHttpRequest調用來獲取一個mp3作爲一個數組緩衝區)保存到一個web sql數據庫中,從一個sql查詢中檢索它,對象ArrayBuffer。但是,當我嘗試解碼AudioData或createBuffer時,出現類型錯誤。從Web SQL數據庫檢索音頻並使用Web Audio API

var buffer = audioContext.createBuffer(result.xtalk,false);

給出了一個遺漏的類型錯誤:錯誤類型

如果我把在result.xtalk警報是反對ArrayBuffer

這是在Chrome 21.0.1180.75在Mac

我試圖創建一個ArrayBuffer並逐字節填充,然後傳遞 - 但這也不起作用。

回答

0

入住這tutorial.May這將有助於

var dogBarkingBuffer = null; 
var context = new webkitAudioContext(); 

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

    // Decode asynchronously 
    request.onload = function() { 
    context.decodeAudioData(request.response, function(buffer) { 
    dogBarkingBuffer = buffer; 
    }, onError); 
} 
request.send(); 

}

請參考以下鏈接: - 在arraybuffer對象 http://www.html5rocks.com/en/tutorials/webaudio/intro/

還做 「的typeof」 你是receiving.Arraybuffer有一個名爲byteLength的屬性。

如果其不確定的,這意味着你從SQL數據庫接收對象不arraybuffer對象

參考:-https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays/ArrayBuffer

+0

Thast就是我所做的,除了在onload中保存ArrayBuffer對象並將其恢復播放。我也將它保存爲Blob,並嘗試檢索並將其轉換爲ArrayBuffer。它似乎只是保存文本[對象Blob]或[對象ArrayBuffer],如果我調試Web數據庫,這可能是問題。或者調試器沒有告訴正確的值。從web sql數據庫返回的typeof是字符串,因此看起來像chrome中的web sql,safari不存儲blob – 2012-08-14 10:47:24