试图让音频通过 Chrome 播放。我有一段可以在 Internet Explorer 上运行但不能在 Chrome 上运行的代码...只要我注释掉上面写着的行,我就可以在 Chrome 上播放声音
var audioSrc = audioCtx.createMediaElementSource(audio);
- 我尝试将音频作为两种不同的形式传递(通过 HTML 音频标签以及通过 Javascript 的 HTMLMediaElement (如Chrome - createMediaElementSource not working此处详述)。只要再次创建MediaElementSource(),两者都可以正常工作被注释掉了
。-如果我删除这些行
var audioSrc = audioCtx.createMediaElementSource(audio);
var analyser = audioCtx.createAnalyser();
audioSrc.connect(analyser);
audioSrc.connect(audioCtx.destination);
analyser.connect(audioCtx.destination);
var bufferSize = analyser.frequencyBinCount;
var frequencyData = new Uint8Array(bufferSize);
analyser.getByteFrequencyData(frequencyData);
声音确实在 chrome 中播放。
下面是我的代码(将 mp3 文件更改为您方便的任何 mp3 文件)。任何帮助,将不胜感激...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
<style>
html, body, #svg {
background-color: #FFFFFF;
}
</style>
</head>
<body>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script>
var audio = new Audio();
audio.src = 'laugh_8.mp3';
audio.controls = true;
document.body.appendChild(audio);
var audioCtx = new (window.AudioContext || window.webkitAudioContext || window.webAudioContext)();
var audioSrc = audioCtx.createMediaElementSource(audio);
var analyser = audioCtx.createAnalyser();
audioSrc.connect(analyser);
audioSrc.connect(audioCtx.destination);
analyser.connect(audioCtx.destination);
var bufferSize = analyser.frequencyBinCount;
var frequencyData = new Uint8Array(bufferSize);
analyser.getByteFrequencyData(frequencyData);
var svgHeight = window.innerHeight - 100;
var svgWidth = window.innerWidth - 10;
var svg = d3.select('body').append('svg')
.attr('width', svgWidth)
.attr('height', svgHeight);
document.write("Code is working.");
var circle = svg.append('circle')
.attr('r', 20)
.attr('cx', 50)
.attr('cy', svgHeight-100)
.attr('fill', 'black');
</script>
</body>
</html>