如何在 Javascript 中重播音频 Blob?
How to Replay an Audio-Blob in Javascript?
我想重播使用网络音频 API 在 javascript 中录制的音频 blob (wav)。
我尝试了以下方法:
function replayBlob( blob ) {
var blobURL = window.URL.createObjectURL(blob);
var audio0 = new Audio(blobURL);
audio0.play();
}
但是此代码不会重放音频 blob。
我还尝试通过 html 音频标签重播 blob:
<audio id="wavSource"
src="blob:http%3A//localhost/f0b6bae9-7c70-4793-8436-7755a40bae3f"
type="audio/wav" controls>
</audio>
使用以下方式以编程方式设置 blob 源:
var blobURL = window.URL.createObjectURL(blob);
document.getElementById("wavSource").src = blobURL;
音频播放调用使用:
document.getElementById("wavSource").play();
但是没有声音。
为了验证,我下载了 blob:
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = blobURL;
a.download = "test.wav";
a.click();
下载的 blob 包含正确的 wav 格式音频数据。 如何从 javascript 中的 blob 播放此音频数据?
如果您使用网络音频进行录制,我想您也可以使用它来播放,对吧?如果是这样,recorder.js 在自述文件中有一个 how-to:https://github.com/mattdiamond/Recorderjs
我会继续复制这里的要点,以防将来 recorder.js 发生变化。你有两个 Float32Arrays(左声道和右声道),然后执行此操作;
function getBufferCallback( buffers ) {
var newSource = audioContext.createBufferSource();
var newBuffer = audioContext.createBuffer( 2, buffers[0].length, audioContext.sampleRate );
newBuffer.getChannelData(0).set(buffers[0]);
newBuffer.getChannelData(1).set(buffers[1]);
newSource.buffer = newBuffer;
newSource.connect( audioContext.destination );
newSource.start(0);
}
最简单的选择是转换为 64 位编码
const reader = new FileReader();
reader.onload = function(e) {
const srcUrl = e.target.result;
audioNode.src = srcUrl;
};
reader.readAsDataURL(blob);
我想重播使用网络音频 API 在 javascript 中录制的音频 blob (wav)。
我尝试了以下方法:
function replayBlob( blob ) {
var blobURL = window.URL.createObjectURL(blob);
var audio0 = new Audio(blobURL);
audio0.play();
}
但是此代码不会重放音频 blob。
我还尝试通过 html 音频标签重播 blob:
<audio id="wavSource"
src="blob:http%3A//localhost/f0b6bae9-7c70-4793-8436-7755a40bae3f"
type="audio/wav" controls>
</audio>
使用以下方式以编程方式设置 blob 源:
var blobURL = window.URL.createObjectURL(blob);
document.getElementById("wavSource").src = blobURL;
音频播放调用使用:
document.getElementById("wavSource").play();
但是没有声音。
为了验证,我下载了 blob:
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = blobURL;
a.download = "test.wav";
a.click();
下载的 blob 包含正确的 wav 格式音频数据。 如何从 javascript 中的 blob 播放此音频数据?
如果您使用网络音频进行录制,我想您也可以使用它来播放,对吧?如果是这样,recorder.js 在自述文件中有一个 how-to:https://github.com/mattdiamond/Recorderjs
我会继续复制这里的要点,以防将来 recorder.js 发生变化。你有两个 Float32Arrays(左声道和右声道),然后执行此操作;
function getBufferCallback( buffers ) {
var newSource = audioContext.createBufferSource();
var newBuffer = audioContext.createBuffer( 2, buffers[0].length, audioContext.sampleRate );
newBuffer.getChannelData(0).set(buffers[0]);
newBuffer.getChannelData(1).set(buffers[1]);
newSource.buffer = newBuffer;
newSource.connect( audioContext.destination );
newSource.start(0);
}
最简单的选择是转换为 64 位编码
const reader = new FileReader();
reader.onload = function(e) {
const srcUrl = e.target.result;
audioNode.src = srcUrl;
};
reader.readAsDataURL(blob);