我使用Soundmanager2從soundcloud傳輸文件並顯示Eq視覺效果,但在暫停或更改曲目時遇到eqdata問題。Soundmanager2 Soundcloud API crossdomain.xml
據我所知,Flash是無法訪問元數據因的SoundCloud上的「crossdomain.xml的」文件中定義的跨域政策,在這個崗位看出:(以及其他許多)
How to use SoundManager2 to stream from SoundCloud, and make visualizations?
我意識到我必須先解析軌道的stream_url,然後才能將其加載到聲音管理器中。我有一個AJAX調用一個PHP腳本解析URL(如下圖所示),這樣做的:用於解決stream_url
<?php
require 'include/referrer_check.php';
require 'include/SC_API_KEY.php';
require 'include/API_cache.php';
$track_id = intval($_GET['id']);
$key = get_soundcloud_api_key();
$api_call = 'http://api.soundcloud.com/tracks/'.$track_id.'/stream/?client_id='.$key;
function get_web_page($url) {
/*
* hat tip: http://forums.devshed.com/php-development-5/curl-get-final-url-after-inital-url-redirects-544144.html
*/
$options = array(
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => false, // return web page
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_CONNECTTIMEOUT => 5, // timeout on connect
CURLOPT_TIMEOUT => 5, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_RETURNTRANSFER => true, // return web page
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
return $header;
}
$myUrlInfo = get_web_page($api_call);
echo $myUrlInfo["url"];
?>
var client_id = '866143113772fec9556700f7f88f3abc',
url = 'http://api.soundcloud.com/resolve.json?url=http://soundcloud.com/aries-audio-music/tracks&client_id=';
$.getJSON(url+client_id+'&callback=?', function(playlist){
$.each(playlist, function(index, track) {
//append to playlist
$('<li id="tr-'+track.id+'">' + track.title + '</li>').data('track', track).appendTo('.tracks');
//get resolved stream url
$.ajax({
type: 'GET',
url: 'get_sc_url.php?id='+track.id,
success: function(data) {
console.log(data);
sm2_addtrack(track, data); //create SM2 sound object with resolved url
}
});
});
});
function sm2_addtrack(track, stream_url) {
soundManager.createSound({
id: 'track_' + track.id,
url: stream_url,
usePolicyFile : true,
usePeakData: false,
useWaveformData: false,
useEQData: true,
.....
get_sc_url.php我得到的結果是什麼像這樣:
ec-media.soundcloud.com/Ez0B3lUZjjCR.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a52200996dfabd3cefb29b7554ff4fd02baab5100d3a070e07d55f6e1eb41808c65398ce84cd496788c171f7e4 & AWSAccessKeyId = AKIAJNIGGLK7XA7YZSNQ &過期= 1415223069 &簽名= A0qaC1Nr3%2FXw4jwFYMjA%2F98arwI%3D
起着但沒有給我光譜數據都和我仍然得到 computeSpectrum()(EQ數據)的SecurityError:錯誤#2123 從soundmanager2。
我確定ec-media.soundcloud.com/crossdomain.xml正在下載,但我仍然無法解決此問題。