2015-05-03 19 views
2

前提:我注意到其他類似的問題,但看起來像有趣的沒有答案。例如Have a blob for a wav file on client side, how do I send it as a wav file to the server?包含WAV文件和WAV文件的Blob:有什麼區別以及如何相互轉換?

我使用RecordRTC來獲取用戶語音輸入的WAV文件。

我得到的是一個BLOB(二進制文件)印(在控制檯)爲:

Blob {} 
    size: 131116 
    type: "audio/wav" 
    __proto__ 

據我瞭解,斑點包含WAV音頻流,但WAV由斑點包含的,而不是WAV容器(即WAV文件)。 對不對?

那麼,我該如何提取WAV流,例如,通過ajax/http調用將其發送到服務器?

如果需要的話,我不介意使用HTTP或NodeJS腳本。

編輯我會嘗試在一個答案中提出的內容。 由於我在AngularJS這樣做(我仍然在這一個初學者)我想這樣做......

services.sendAudioMessage(recordedAudio) 
    .then(function (data) { 
} 

其中服務由廠家定義:

.factory('services', function($http,$q) { 
    return { 
     sendAudioMessage: function (audioMessage) { 
      return $http.jsonp('http://.../api.php?callback=JSON_CALLBACK', { 
       params: { 
        audio: audioMessage 
       } 
      }) 
       .then(function (response) { 
        if (typeof response.data === 'object') { 
         return response.data; 
        } else { 
         return $q.reject(response.data); 
        } 
       }, function (response) { 
        return $q.reject(response.data); 
       }); 
     } 
    }; 
});  

,而不是作爲在提出了使用Ajax調用:How can javascript upload a blob?

回答

2

BLOB是隻是一個二進制對象在內存中。 RecordRTC實際上爲你存儲了一個帶有Wav頭文件的完整WAV文件。這不僅僅是PCM樣本,它是一個普通的WAV文件。

你可以直接用這些數據做一些事情,或者像其他任何blob一樣上傳到你的服務器。另見:https://stackoverflow.com/a/13333478/362536

+0

非常感謝Brad。我會嘗試一段時間(然後我肯定會接受答案)。 任何你可以解釋如何使用AngularJS的前提來解決它的方法? (我現在會更新我的問題) – dragonmnl

+0

剛剛編輯:)謝謝 – dragonmnl

+0

對不起,我不是一個Angular的人,但你並不真的需要Angular來完成你的項目的這一部分。 – Brad