Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript web音频api出现Soundcloud CORS错误_Javascript_Audio_Cors_Soundcloud_Web Audio Api - Fatal编程技术网

Javascript web音频api出现Soundcloud CORS错误

Javascript web音频api出现Soundcloud CORS错误,javascript,audio,cors,soundcloud,web-audio-api,Javascript,Audio,Cors,Soundcloud,Web Audio Api,我正在尝试使用web音频API访问soundcloud音频。我正在使用下面的audio元素来获取音频(并使用createMediaElementSource从javascript获取) 这是从web audio api访问soundcloud剪辑的正确方法吗?如果不是,最好的方法是什么 提前感谢您可以这样做: var audio = new Audio(); audio.src = 'http://api.soundcloud.com/tracks/204082098/stream?client

我正在尝试使用web音频API访问soundcloud音频。我正在使用下面的audio元素来获取音频(并使用createMediaElementSource从javascript获取)

这是从web audio api访问soundcloud剪辑的正确方法吗?如果不是,最好的方法是什么


提前感谢

您可以这样做:

var audio = new Audio();
audio.src = 'http://api.soundcloud.com/tracks/204082098/stream?client_id=17a992358db64d99e492326797fff3e8';
audio.controls = true;
audio.autoplay = true;
audio.crossOrigin = "anonymous";
document.body.appendChild(audio);

var context = new (window.AudioContext || window.webkitAudioContext)();

window.addEventListener('load', function(e) {
  var source = context.createMediaElementSource(audio);
  source.connect(context.destination);  
}, false);

我想你可能会遇到另一张海报不久前做的同样的事情。请核对我的答案


tl;dr-Soundcloud似乎已禁用某些曲目的CORS,但并非所有曲目。您的示例中的一个来自cf-media.sndcdn.com,它不提供所需的CORS头。

有一个SDK可用,是的,给出了一个关于如何播放音频的示例,但我不确定如果有人投票否决了答案,如何将其与web音频链接,如果能得到一个关于原因的通知,那就太好了。这很有帮助,但是我需要播放实时流,所以不能首先使用http请求下载,我的代码与此非常相似,但是使用createMediaElementSource,这会破坏它。(我不是落选的选民:P)选项1对我有效。这基本上就是你的代码。你试过了吗?嗯,您将始终使用http请求来访问/下载/缓冲这些曲目。选项1有效。我希望同时支持soundcloud和来自另一个站点的实时音频流以及非常长的音频文件,所以想改用createMediaElementSource。这是您的代码的一个调整版本(我无法使用):当然您可以同时支持这两个版本,普通的buffersource比createmediaelementsource更灵活-afaik。嗯,好的,我看了一下,没有找到任何链接到的轨迹。而不是链接到的所有轨迹。这是因为我做错了什么,还是因为大部分曲目都禁用了CORS(如果你有一个示例url进行测试就好了),不幸的是,没有,我没有示例url。不过,也许值得问一下@fauxnoir,因为他/她似乎有一个。:)也不确定启用CORS的曲目的百分比。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://cf-media.sndcdn.com/OfjMZo27DlvH.128.mp3?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLW1lZGlhLnNuZGNkbi5jb20vT2ZqTVpvMjdEbHZILjEyOC5tcDMiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MzU0MTI0NzR9fX1dfQ__&Signature=SwXVan2GT2pvaP2Db5VtpElWKcUNVJdEd1MVsvjWu1NLNyt~BPMJO2Yx1Z1vvbX3hc887sw4BabAQBqlp6UldpxK13kizR2l2PJsnMRrO9Tm-MgaoWWDNr0QdUDJeqOp8do94lriA72IwYg21dm61-onQFpuKTZGR7wlvLeiQWMWJArEC0ATj7XfAM-Dy4bCrKGMHFhd6PbkcNigkS00~oUMes~HfjYzph~tAB~EAFcjqx4LFyBM6qMWb63O1U3~-jG39YFOHfR5-VqqA7ojEugtaAlJ30eUp3ygmG9jmfUHoaq1ebU1fIWsx94KOzDEY-8psqLhrj5LjWMBLf5kLg__&Key-Pair-Id=APKAJAGZ7VMH2PFPW6UQ. This can be fixed by moving the resource to the same domain or enabling CORS.
var audio = new Audio();
audio.src = 'http://api.soundcloud.com/tracks/204082098/stream?client_id=17a992358db64d99e492326797fff3e8';
audio.controls = true;
audio.autoplay = true;
audio.crossOrigin = "anonymous";
document.body.appendChild(audio);

var context = new (window.AudioContext || window.webkitAudioContext)();

window.addEventListener('load', function(e) {
  var source = context.createMediaElementSource(audio);
  source.connect(context.destination);  
}, false);