2 q463406390 q463406390 于 2015.05.26 23:08 提问

HTML5 从<audio>标签获取声音源用于分析,为什么用别人的MP3链接会无法加载?
//标签
 <audio id="music" src="源" controls="controls">
 //js
 var el = document.getElementById('music');
var audioCtx = new AudioContext();
var source = audioCtx.createMediaElementSource(el);
source.connect(audioCtx.destination);

(只写标签能正常获取)
如果源是本地的没有问题,如果源是其他网站链接,chrome会没声音,firefox会不加载。
chrome中会有提示:MediaElementAudioSource outputs zeroes due to CORS access restrictions for “源”
求大神帮忙解决

8个回答

caozhy
caozhy   Ds   Rxr 2015.05.26 23:17

应该是你的地址跨域了。

q463406390
q463406390 还想请教一下:为什么只写<audio>标签就不跨域,多加下面的代码就算跨域,能获取到MP3资源不就是允许跨域吗?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.27 10:44

所谓跨域就是,你的网页来自www.a.com,你的音频不能够从www.b.com获取。这是为了防止一些黑客利用js注入代码进行跨域攻击。

QIUYEBOKE
QIUYEBOKE   2015.08.24 14:11

我也遇到该问题,话说只有前几个月开始才有这种问题,应该是w3c的更新导致的,我现在也找不到解决的方法,所谓跨域问题根本不存在。应该是js语法的更新,求答案,具体问题可到博客www.wuover.com听听音乐就知道了,注意一定要用谷歌浏览器或360极速浏览器,如果你听到有声音又看到有频谱的话,只有一种可能,那就是我解决了该问题。

smtctc
smtctc   2016.01.11 10:50

楼主你解决了吗?我也同样的问题。老的chrome正常,新的chrome无法播放,firefox也无法播放。。。

q463406390
q463406390 没有解决哦,大概是MediaElementAudioSource这个东西不允许跨域
接近 2 年之前 回复
qq_35227225
qq_35227225   2016.06.05 16:32

不知道,我的audio标签用的src是本地的音乐,刚开始升级了chrome之后也不行,也是在走但没有声音,也是MediaElementAudioSource outputs zeroes due to CORS access restrictions for,但后来好像把它挂到本地服务器上就正常了,你也可以试试,phpstudy

zhi863762566
zhi863762566   2016.06.05 17:23

一句话:在audio标签有src链接的同时设置上属性rossOrigin="anonymous";

在html不要直接写地址,让浏览器一开始加载就就直接跨域了,所以如果写了得设置audio标签这个属性(crossOrigin='anonymous';)

或者 是html的src先不设置,在javascript里边设置再建立
var audio =document.getElementById("audio");
audio.crossOrigin = 'anonymous';
audio.src='https://fourthof5assets.s3-eu-west-1.amazonaws.com/heng-feeling-good.mp3';
var source = context1.createMediaElementSource(audio);

zhi863762566
zhi863762566   2016.06.05 17:26

一句话:在audio标签有src链接的同时设置上属性crossOrigin="anonymous";

Conderpath
Conderpath   2017.06.20 18:10

@正达 设置了 crossOrigin="anonymous"还是不顶用

Csdn user default icon
上传中...
上传图片
插入图片