SoundManager2 получает ошибку данных, и я ничего не могу визуализировать?
or
Я не могу получить доступ к песне, доступ запрещен?
or
Это работает, когда я впервые играю, но если я приостановлю его и воспроизведу снова, я получу ошибку данных?
SoundManager2 получает ошибку данных, и я ничего не могу визуализировать?
or
Я не могу получить доступ к песне, доступ запрещен?
or
Это работает, когда я впервые играю, но если я приостановлю его и воспроизведу снова, я получу ошибку данных?
Недавно это было исправлено, так как частично это было связано с наличием половины необходимых файлов. Однако теперь это исправлено, но все равно может не работать сразу.
Очевидным первым шагом является использование API для получения трека stream_url, который выглядит как http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID
.
Если вы используете это в качестве URL-адреса мультимедиа в SoundCloud, вы обнаружите, что нажимаете кнопку воспроизведения, и если у вас есть визуализации, они будут работать, и все хорошо. Однако, если вы сейчас приостановите воспроизведение трека и снова нажмете кнопку воспроизведения, вы получите ошибку данных, метаданные перестанут быть доступными, а ваши визуализации сломаются. Это связано с тем, что api.soundcloud.com
имеет междоменный файл, и при доступе к нему вы получаете перенаправление 3XX на ec-media.soundcloud.com
. На этом сайте теперь также есть файл crossdomain.xml, однако эта надоедливая переадресация 3XX разрушает оба разрешения, поэтому вы сталкиваетесь с ошибкой.
Ответ на этот вопрос заключается в том, что вы сначала выполняете скачок перенаправления вне soundmanager2, чтобы не было перенаправления, которое сломает его. Например, в Python:
import urllib2
starturl = 'http://api.soundcloud.com/tracks/69322564/stream?client_id=CLIENT_ID'
res = urllib2.urlopen(starturl)
finalurl = res.geturl()
print finalurl
Это может быть более элегантно, но будет печатать URL-адрес, на который перенаправляет API. Этот URL будет выглядеть примерно так: http://ec-media.soundcloud.com/2j0lNF81jv9m.128.mp3?LONG_STRING&AWSAccessKeyId=ACCESS_KEY&Expires=1355864871&Signature=SIGNATURE
В этом домене есть файл crossdomain.xml, и за счет того, что нет редиректа, все будет работать гладко, доступ к данным будет, все будет хорошо.
"Я сделал это, и это сработало, но теперь пишет, что файл запрещен"
Теперь обращаем ваше внимание на предыдущий адрес, в частности &Expires=1355864871
. Файл, на который вы перенаправляетесь, не является постоянным, поэтому вам нужно каждый раз его захватывать. Для меня это легко, я работаю в django, поэтому я могу просто запустить python выше в своих сценариях представлений. Вам придется найти способ реализовать это в выбранном вами коде. (Должно работать и в javascript).
После того, как все это будет сделано, вы сможете ставить на паузу и воспроизводить столько, сколько хотите, а также получать данные формы волны, данные эквалайзера и пиковые данные. С этими вещами можно сделать некоторые забавные вещи. Надеюсь, это помогло.