我正在錄製音頻,將其作爲blob發送到nodejs服務器。然後,nodejs服務器將其發送給當前未記錄的所有連接用戶。音頻Blob無法在IOS/Safari中工作
發送斑:
mediaRecorder.onstop = function(e) {
var blob = new Blob(this.chunks, { 'type' : 'audio/ogg; codecs=opus' });
socket.emit('radio', blob);
};
服務器接收的斑點:
socket.on('radio', function(blob) {
socket.broadcast.emit('voice', blob);
});
監聽器接收斑:
socket.on('voice', function(arrayBuffer) {
var blob = new Blob([arrayBuffer], { 'type' : 'audio/ogg; codecs=opus' });
var audio = document.getElementById('audio');
audio.src = window.URL.createObjectURL(blob);
audio.play();
});
這適用於除safari和任何ios設備之外的所有瀏覽器/設備。 Safari瀏覽器的檢查以進一步我發現這一點:
Safari瀏覽器是否需要BLOB對象別的東西在它的頭被適當解釋?我研究過接受的音頻類型,嘗試aac/mp3/ogg沒有任何成功。在進一步閱讀之後,我聽說過這樣一個事實,即在Safari和IOS中存在流式傳輸blob音頻/視頻數據的錯誤,儘管我不太清楚任何細節。
在儀式方向的指導將是非常有益的!
編輯:它看起來像這條線audio.src = window.URL.createObjectURL(blob);
在接收斑被什麼導致斑點的錯誤(像我聯繫)
編輯2:我想看看如果使用的不是斑點等其他格式將工作,選擇base64編碼的字符串。看起來這可以在除IOS和Safari之外的所有設備和瀏覽器上使用。我得到的印象是它與IOS如何解釋/加載數據有關......
你有沒有找到解決這個問題的方法? – scottmizo