浏览器播放音乐时没有声音,而且报错:

html代码:
//播放按钮
<a href="#" id="play" class="music_play" title="播放">
<audio src="music/1.mp3" id="music_mp3">
js代码:
//暂停和播放
play.click(function(){
if(flag){
musicOBJ.pause();//暂停歌曲
musicStop();
img.removeClass("img_rotate");//歌曲图片停止旋转
play.removeClass("music_pause").addClass("music_play");//暂停按钮变为播放按钮
flag=false;//修改歌曲是否播放标记
}else{
musicStop();
musicOBJ.play();//播放歌曲
musicTime();
img.addClass("img_rotate");//歌曲图片开始旋转
play.removeClass("music_play").addClass("music_pause");//播放按钮变为暂停按钮
flag=true;//修改歌曲是否播放标记
}
})
/*
音频可视化
*/
var wrap = document.getElementById("canvas");
var cxt = wrap.getContext("2d");
//获取API
var AudioContext = AudioContext || webkitAudioContext;
var context = new AudioContext;
//加载媒体
let audioArray = [
'../music/1.mp3',
'../music/2.mp3',
'../music/3.mp3',
'../music/4.mp3',
];
let audioNum = 0;
let oAudio = document.getElementById('music_mp3');
oAudio.crossOrigin = 'anonymous';
oAudio.src = audioArray[audioNum];
//创建节点
var source = context.createMediaElementSource(oAudio);
var analyser = context.createAnalyser();
//连接:source → analyser → destination
source.connect(analyser);
analyser.connect(context.destination);
//创建数据
var output = new Uint8Array(180);
// 计算画布的宽度
width = wrap.offsetWidth,
// 计算画布的高度
height = wrap.offsetHeight,
// 设置宽高
canvas.width = width;
canvas.height = height;
//角度
var du = 2;
//起始坐标
var potInt = { x: wrap.height/2, y: wrap.width/2 };
//半径
var R = 300;
//宽
var W = 10;
//计算出采样频率44100所需的缓冲区长度
var length = analyser.frequencyBinCount * 44100 / context.sampleRate | 0;
//创建数据
var output2 = new Uint8Array(length);
var gradient=cxt.createLinearGradient(0,0,250,800);
gradient.addColorStop("0","#6F00D2");
gradient.addColorStop("0.7","#921AFF");
gradient.addColorStop("1.0","#1818ff");
(function drawSpectrum() {
cxt.shadowOffsetX=-3;
cxt.shadowOffsetY=-3;
cxt.shadowColor='white';
cxt.shadowBlur=100;
analyser.getByteFrequencyData(output);
//获取频域数据
cxt.clearRect(0, 0, wrap.width, wrap.height);
//画线条
for (var i = 0; i < 180; i++) {
var value = output[i] / 2;//<===获取数据
cxt.beginPath();
cxt.lineWidth = W;
Rv1 = (R -value);
Rv2 = (R +value);
//从圆边开始
cxt.moveTo(( Math.sin((i * du) / 180 * Math.PI) * Rv1 + potInt.y),-Math.cos((i * du) / 180 * Math.PI) * Rv1 + potInt.x);
//R * cos (PI/180*一次旋转的角度数) ,-R * sin (PI/180*一次旋转的角度数)
cxt.lineTo((Math.sin((i * du) / 180 * Math.PI) * Rv2 + potInt.y), - Math.cos((i * du) / 180 * Math.PI) * Rv2 + potInt.x);
cxt.stroke();
cxt.strokeStyle = gradient;
}
//请求下一帧
requestAnimationFrame(drawSpectrum);
})();