使用 WebAudio 播放 Soundcloud 曲目
Playing Soundcloud track with WebAudio
我正在探索用于可视化程序的 WebAudio 和 SoundCloud,但似乎无法通过基本测试阶段。这是我用于测试的代码,但我听不到任何声音。我错过了什么吗?
<script src="http://connect.soundcloud.com/sdk.js"></script>
<script>
var context = new AudioContext(),
audio = new Audio(),
source,
url = 'http://api.soundcloud.com/tracks/204082098/' + '?client_id=(used my client id)';
audio.src = url;
source = context.createMediaElementSource(audio);
source.connect(context.destination);
source.mediaElement.play();
</script>
您正在尝试跨域访问声音。由于 SoundCloud 不支持使用 CORS 进行跨域访问,因此当连接 Web Audio 时(因为 Web Audio 允许您检查位),这将不再有效。
我想问题是你如何加载 mp3 文件而你忘记了最后的 /stream。
此代码有效:
audioContext = new AudioContext();
var source = audioContext.createBufferSource();
var gainNode = audioContext.createGain();
source.connect(gainNode);
gainNode.connect(audioContext.destination);
gainNode.gain.value = 0.5;
source.connect(audioContext.destination);
function SCkickOffSampleDownload( sample ) {
var url = new URL(sample+ '?client_id=679877a8ddb9badc6a2a75373c5f3de7');
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.responseType = "arraybuffer";
request.onload = function() {
audioContext.decodeAudioData( request.response,
function(buffer) {
console.log("sample loaded!");
sample.loaded=true;
source.buffer = buffer;
source.start(0);
},
function() { console.log("Decoding error! ");} );
}
sample.loaded = false;
request.send();
}
var sample = 'http://api.soundcloud.com/tracks/204082098/stream';
SCkickOffSampleDownload( sample );
http://jsfiddle.net/iambnz/s7999f8t/
一些相关文档:
- https://developer.mozilla.org/en-US/docs/Web/API/AudioContext
- https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/decodeAudioData
- https://docs.webplatform.org/wiki/apis/webaudio/AudioContext/decodeAudioData
- https://developer.tizen.org/dev-guide/2.2.0/org.tizen.web.appprogramming/html/tutorials/w3c_tutorial/media_tutorial/web_audio_loading_data.htm
我基于 SoundCloud 数据构建了一个采样器,cwilso 可能知道 UI。 ;-)
您可以在此处查看:http://www.dope-dj-culture.com
我正在探索用于可视化程序的 WebAudio 和 SoundCloud,但似乎无法通过基本测试阶段。这是我用于测试的代码,但我听不到任何声音。我错过了什么吗?
<script src="http://connect.soundcloud.com/sdk.js"></script>
<script>
var context = new AudioContext(),
audio = new Audio(),
source,
url = 'http://api.soundcloud.com/tracks/204082098/' + '?client_id=(used my client id)';
audio.src = url;
source = context.createMediaElementSource(audio);
source.connect(context.destination);
source.mediaElement.play();
</script>
您正在尝试跨域访问声音。由于 SoundCloud 不支持使用 CORS 进行跨域访问,因此当连接 Web Audio 时(因为 Web Audio 允许您检查位),这将不再有效。
我想问题是你如何加载 mp3 文件而你忘记了最后的 /stream。
此代码有效:
audioContext = new AudioContext();
var source = audioContext.createBufferSource();
var gainNode = audioContext.createGain();
source.connect(gainNode);
gainNode.connect(audioContext.destination);
gainNode.gain.value = 0.5;
source.connect(audioContext.destination);
function SCkickOffSampleDownload( sample ) {
var url = new URL(sample+ '?client_id=679877a8ddb9badc6a2a75373c5f3de7');
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.responseType = "arraybuffer";
request.onload = function() {
audioContext.decodeAudioData( request.response,
function(buffer) {
console.log("sample loaded!");
sample.loaded=true;
source.buffer = buffer;
source.start(0);
},
function() { console.log("Decoding error! ");} );
}
sample.loaded = false;
request.send();
}
var sample = 'http://api.soundcloud.com/tracks/204082098/stream';
SCkickOffSampleDownload( sample );
http://jsfiddle.net/iambnz/s7999f8t/
一些相关文档:
- https://developer.mozilla.org/en-US/docs/Web/API/AudioContext
- https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/decodeAudioData
- https://docs.webplatform.org/wiki/apis/webaudio/AudioContext/decodeAudioData
- https://developer.tizen.org/dev-guide/2.2.0/org.tizen.web.appprogramming/html/tutorials/w3c_tutorial/media_tutorial/web_audio_loading_data.htm
我基于 SoundCloud 数据构建了一个采样器,cwilso 可能知道 UI。 ;-) 您可以在此处查看:http://www.dope-dj-culture.com