javascript - 声音无法通过网络音频正确播放
问题描述
我正在尝试使用 AudioContext 播放 wav 文件 - 它在加载<audio>
标签时正确播放(如jsfiddle所示),但在使用 AudioContext 时播放不正确。
var startButton = document.getElementById('start-stream');
var wav = new wavefile.WaveFile();
startButton.onclick = function() {
audioCtx = new AudioContext();
wav.fromBase64(mydata);
buffer = audioCtx.createBuffer(1, audioCtx.sampleRate * 3, audioCtx.sampleRate);
// add audio data to buffer
buffer.getChannelData(0).set(wav.getSamples());
source = audioCtx.createBufferSource();
source.buffer = buffer;
source.connect(audioCtx.destination);
source.start();
};
解决方案
Web Audio API的decodeAudioData()
功能可以解码 WAV 文件,这就是为什么您不需要任何外部库来处理这个用例。它会AudioBuffer
为你生成一个。
startButton.onclick = async function () {
audioCtx = new AudioContext();
const arrayBuffer = Uint8Array.from(
atob(mydata),
(character) => character.charCodeAt(0)
).buffer;
buffer = await audioCtx.decodeAudioData(arrayBuffer);
source = audioCtx.createBufferSource();
source.buffer = buffer;
source.connect(audioCtx.destination);
source.start();
};
这是您的小提琴更新版本的链接:https ://jsfiddle.net/pzx0vg89/ 。
推荐阅读
- java - 更改树根后获得高度的最快方法是什么?
- azure-eventgrid - 如何查看发送到主题的事件?
- docker - 尝试详细运行 docker 容器或 docker exec 时在 $PATH 中找不到错误可执行文件
- asp.net-core-mvc - 修改asp.net core mvc中DefaultControllerFactory的CreateController方法中的ControllerContext
- javascript - 带有硒的HTML单元驱动程序不单击按钮
- express - 评论未显示在快速应用程序上
- arrays - 错误:找不到“object”类型的不同支持对象“[object Object]”。NgFor 只支持绑定到 Arrays 等 Iterables 如何解决
- java - 我的验证都在一个
- c - &*NULL 在 C 中是否定义明确?
- ruby-on-rails - 在播种数据库时忽略单个夹具文件