![](/img/trans.png)
[英]how to convert getUsermedia audio stream into a blob or buffer?
[英]How to convert (audio) buffer to blob to replay
我正在努力錄制音頻並在移動safari中重播。
這個來源絕對是神話般的。
在iOS11上未調用onaudioprocess
我可以看到大量音頻數據即將到來...
// get Buffers (Essentially a Uint8Array DataView of the same Float32 values)
var chunks = []
micStream.on('data', function(chunk) {
var raw = MicrophoneStream.toRaw(chunk)
chunks.push(raw)
});
function replay(){
var blob = new Blob( chunks, { 'type' : 'audio/webm;codecs=opus' });
var blobURL = window.URL.createObjectURL(blob)
var audio = new Audio();
audio.src = blobURL
audio.play()
}
但是我無法重播。
如何將原始音頻數據轉換為Blob並重播?
而且我不知道哪一個都不能使用。
如果我可以使用MediaRecorder API,
var chunks = []
mediaRecorder.ondataavailable = (event) => {
chunks.push(event.data);
}
function replay(){
var blob = new Blob( chunks, { 'type' : 'audio/webm;codecs=opus' });
var blobURL = window.URL.createObjectURL(blob)
var audio = new Audio();
audio.src = blobURL
audio.play()
}
此功能適用於桌面版Chrome,但不幸的是Safari不支持MediaRecorder API。
有人可以幫我嗎?
提前致謝。
您可以在GitHub上參考Recorderjs: https : //github.com/mattdiamond/Recorderjs
該演示可以將音頻錄制為blob,然后再播放。 它適用於台式機Chrome,但不適用於iOS 11 Safari:examples \\ example_simple_exportwav.html
通過添加audio_context.resume()對功能startRecording()進行簡單的修改,它就可以在iOS 11 Safari上運行:
function startRecording(button) {
audio_context.resume();
recorder && recorder.record();
button.disabled = true;
button.nextElementSibling.disabled = false;
__log('Recording...');
}
希望這對您也有用。
湯米
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.