Nano Hash - криптовалюты, майнинг, программирование

Как получить доступ к общедоступному потоку SoundCloud?

Как мне воспроизвести трек с URL-адреса SoundCloud, который, например, я получил из xml-ответа на запрос

<stream-url>https://api.soundcloud.com/tracks/31164607/stream</stream-url>

Я должен был подумать, что это будет так же просто, как:

https://api.soundcloud.com/tracks/31164607/stream&client_id=my_client_id

но я получаю

<error>401 - Unauthorized</error>

Все, что я хочу сделать, это использовать его в Silverlight MediaElement, поэтому все, что мне нужно, это установить некоторый URL-адрес свойства Source MediaElement.

Я проверил приложение, которое я написал около 2 лет назад, и ТОГДА доступ к URL-адресу потока был таким же простым для общедоступного трека:

http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY

однако это больше не работает.

Например, все, что мне нужно было сделать тогда на C#, это:

MediaElement me = new MediaElement();
me.Source= new Url("http://api.soundcloud.com/tracks/18163056/stream&consumer_key=MY_CONSUMER_KEY");
me.Play();

Любые подсказки будут оценены.

У меня был ответ на форуме Microsoft, который, по-видимому, подразумевает, что SoundCloud может оказаться невозможным для потоковой передачи на устройства Windows 8 Metro без использования всего потока до начала воспроизведения, что весьма беспокоит и, по-видимому, подразумевает, что для обеспечения возможности аутентификации это должно быть сделано полностью в строке запроса URL вместо использования заголовка:

(Следующий ответ является ответом на следующий вопрос: «Я могу получить доступ к аудиопотоку по http с помощью MediaElement, однако мне нужно получить к нему доступ через https, в котором мне нужно добавить информацию oAuth в заголовок исходного запроса. Как это делается при использовании MediaElement, и если это невозможно, каков обходной путь для использования аудиопотока в Metro 8, который требует проверки подлинности заголовка для потоковой передачи?')

«Прямой доступ к базовому сетевому потоку в настоящее время не разрешен MediaElement. Из-за этого в настоящее время нет возможности изменить заголовок HTTP-запроса, чтобы включить какую-либо дополнительную информацию для аутентификации. Тем не менее, вы можете контролировать URL-адрес. Теоретически вы можете настроить прокси-службу HTTP, которая преобразует параметры HTTP-запроса GET в необходимые учетные данные oAuth. Имейте в виду, что это всего лишь теоретический обходной путь. На практике вы можете столкнуться с другим поведением. Другим теоретическим обходным путем может быть обработка oAuth самостоятельно. через сокет необработанного потока и передайте перенастроенные медиаданные в MediaElement через «Установить источник» и «Поток произвольного доступа». Помните, что этот метод имеет серьезные ограничения, чтобы использовать «Поток произвольного доступа» с ME вам необходимо убедиться, что все данные доступны, прежде чем передавать их в ME».

Прокси-сервис не масштабируется для приложения, которое просто распространяется бесплатно, поскольку каждый поток должен проходить через прокси-сервер. И сокет необработанного потока, хотя и обходит это, будет означать, что воспроизведение не может начаться до тех пор, пока не будет загружен весь файл, а это противоречит всем текущим рекомендациям UX (User Experience).

Итак, еще раз, если у кого-то есть какие-либо советы или информация о том, как вся аутентификация может быть достигнута в строке запроса вместо использования заголовков, я был бы признателен!

03.08.2012

Ответы:


1

Я немного запутался, вы имеете в виду публичный или частный трек? Если это общедоступный трек, вам не нужно отправлять какую-либо информацию для аутентификации, только ваш идентификатор клиента.

Когда я запрашиваю https://api.soundcloud.com/tracks/31164607/stream?client_id=YOUR_CLIENT_ID, я получаю перенаправление 302 на правильный поток mp3.

05.08.2012
  • Ты классный, это было именно то, что я искал. Работает прекрасно и означает, что мне не нужно добавлять громоздкий iOS SDK, чтобы предоставить AVPlayer потоковый URL-адрес — удачных времен! 19.09.2013

  • 2

    Помните, что добавление параметров к URL-адресу должно начинаться с ?, а не &. Это может (более чем вероятно) быть причиной того, что вы получаете 401 (SC не получает client_id).

    22.08.2012

    3

    После аутентификации такая ссылка

    http://api.soundcloud.com/tracks/103229681/поток ?consumer_key=d61f17a08f86bfb1dea28539908bc9bf

    работает нормально. Я использую сценарий действий.

    19.08.2013

    4

    Я продолжаю следить за ответом Тома, потому что он обращает внимание на специфику символов URL. Мои HTTP-запросы сегодня случайно начали сбоить, и я предварял свой client_Id ?. Как только я изменил этот единственный ? на &, он начал работать. Так что в моем случае SC не получил мой client_Id, потому что я использовал неправильный символ. Я думаю, что в зависимости от того, где именно в запросе мы говорим, стоит отметить, что различия между ? и & имеют значение.

    08.01.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..