不能分析的,因为缺乏CORS政策的SoundCloud的流式音频(Cannot analyse So

2019-10-22 05:19发布

我工作的这个可视化http://trif.it仍然运作良好的Chrome稳定(41.X),但在Chrome浏览器开发,测试版和金丝雀(42.x起)停止工作,因为在一个变化如何铬(和在此之前,Firefox)的处理要分析音频源。

这里是有问题的代码。 直到删除正在处理的音频路由的最后部分的意见应该很好地工作。

var audioElement = new Audio();
var clientId = "xxxxx";

var oReq = new XMLHttpRequest();
//oReq.onload = reqListener;
oReq.open("get", "http://api.soundcloud.com/tracks/194245583.json?client_id=" + clientId, true);
oReq.send();

oReq.onreadystatechange = function() {
  if (oReq.readyState != 4)  { return; }

  var serverResponse = JSON.parse(oReq.responseText);
  console.log(serverResponse);

  audioElement.src = serverResponse.stream_url + "?client_id=" + clientId;
  audioElement.autoplay = true;
  audioElement.preload = true;
};

/*var audioContext = new AudioContext();
var audioSource = audioContext.createMediaElementSource(audioElement);
var audioAnalyser = audioContext.createAnalyser();
var audioGain = audioContext.createGain();
audioGain.gain.value = 1.0;

audioSource.connect(audioAnalyser);
audioAnalyser.connect(audioGain);
audioGain.connect(audioContext.destination);*/

我最初张贴在铬的bug跟踪系统中的错误/请求( https://code.google.com/p/chromium/issues/detail?id=462998 ),但有大约需要有CORS在头从现在的答案对将要分析任何媒体资源(或称通过createMediaElementSource )和的SoundCloud还有Shoutcast的流,我使用目前在网站上没有提供。 我总是可以使用一个CORS代理,但或许你已经知道一种解决方法或CORS标头在某些时候,今年计划尽可能多的网站将面临同样的问题,因为我很快就好了?

谢谢。

Answer 1:

添加:

audioElement.crossOrigin = "anonymous";

地方在那里,设置源之前,应该很好地工作。



Answer 2:

这是跨域安全原因,并不太可能改变。 不知道的SoundCloud等计划CORS访问。



文章来源: Cannot analyse Soundcloud's streaming audio because of the lack of CORS policy