json - 从每首歌中获取 HTTP MP3 流

标签 json mp3 soundcloud

我需要从 SoundCloud MP3 文件中获取直接 URL。

我通常使用以下方法:
解析轨道 URL 以获取轨道 ID,例如使用 https://soundcloud.com/linkin_park/burn-it-down

http://api.soundcloud.com/resolve.json?url=http://soundcloud.com/your/link/to/the/track&client_id=client_id

然后使用stream_urls

http://api.sndcdn.com/i1/tracks/track_id_here/streams?client_id=client_id

在大多数情况下,返回“http_128_mp3_url”,即我需要的 URL,它直接链接到歌曲的 MP3。

但在某些情况下,例如当您使用 https://soundcloud.com/dada-life/dada-life-september-2014-mix ,仅返回 rtmp 或 hls 流,我无法将其转换为带有 PHP 或 JavaScript 的文件。

如在 http://sounddrain.com/ 上看到的,在这种情况下也有一种方法可以获取 MP3 文件的链接。

Sounddrain 给了我这个 URL:

https://ec-media.sndcdn.com/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029c6df9ba3f0cf21c0c0d9baf9fe2d9aa920d344c36db47817ce450103d44677da7d832da82ef7609816e

有人知道如何获取以下网址吗?

最佳答案

我认为这特别与您传递给 API 请求的 client_id 类型有关。

HTTP GET: http://api.soundcloud.com/i1/tracks/167132129/streams?client_id=[CLIENT_ID]

使用标准应用程序 client_id,我看不到 http 链接:

回复:
{
  "hls_mp3_128_url": "https://ec-hls-media.soundcloud.com/playlist/KZ5qiLqZ0OSk.128.mp3/playlist.m3u8?f10880d39085a94a0418a7e062b03d52bbdc0e179b82bde1d76ce7a51e4e690d4aa9adbb8e264aa259bfba6e1a3d52e8f8020eeb45fac9d9fbb175e4c35dbd26bdf59ac00d0f2cd80b7e7a685e9cd57c89622a7cc8b7266f4b7317b4",
  "rtmp_mp3_128_url": "rtmp://ec-rtmp-media.soundcloud.com/mp3:KZ5qiLqZ0OSk.128?9527d18f1063a01f059bf10590159adb10dea0996b8c0cdb674f9c282214839d8263f0608a1a3bbe02e4a0ffc5cf5bef80087ca63aa316e338f6cbba24b1493d8355aea84dc2e529757f72273e1fdfc9f88437c992e92845b3e3",
  "preview_mp3_128_url": "https://ec-preview-media.sndcdn.com/preview/0/90/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7e162b03d52e21adf826af17a391e1b741835259dfd645b4f9f979acc1e4d50dd281c2b93dca58d9e3bd086be0aed9c5ae0ae369364f50bd63ee4f1b167cc29b19cf3462f735b8f"
}

但是,使用 youtube-dl iPhone client_id,会返回 http url:

回复:
{
    "http_mp3_128_url": "https://ec-media.sndcdn.com/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029c69f0bd356988380857d739f55360e9ce802160a1ecf506cfa53f249070d96b19de5ac3234cdbd4201d",
    "hls_mp3_128_url": "https://ec-hls-media.soundcloud.com/playlist/KZ5qiLqZ0OSk.128.mp3/playlist.m3u8?f10880d39085a94a0418a7e062b03d52bbdc0e179b82bde1d76ce7a51e4e6e074a18d603fc2146725c4f70a8844d81268632e8339ce8b52aab8fcfbfd450330b409e8614da1996b8e4cd371f07c9eb0d5cc65ffbf60230336388b323",
    "rtmp_mp3_128_url": "rtmp://ec-rtmp-media.soundcloud.com/mp3:KZ5qiLqZ0OSk.128?9527d18f1063a01f059bf10590159adb10dea0996b8c0cdb674f9c28221b8a972788cc587dee254b285c2a0c9e5b57a79b4bd174401f92b31df0cf4260d9f3f6fe542e181d30b4e9314ac36e70737095ddb2b215bd98884660cb",
    "preview_mp3_128_url": "https://ec-preview-media.sndcdn.com/preview/0/90/KZ5qiLqZ0OSk.128.mp3?f10880d39085a94a0418a7e162b03d52e21adf826af17a391e1b7418352a94f7cbd4ec4b06d76ae6caf6f3cc29aed3f7b0922885d994c71a503c307cf86b653b3f6108990bebaae5a15efc74075285b13f23"
}

更多信息可以在 this commit 中找到和 this issue在 youtube-dl 页面上。我不知道常规 client_id 和 iPhone client_id 之间到底有什么区别,但我可以清楚地看到 API 请求返回的内容的区别。 iPhone client_id 似乎是 SoundCloud iOS 客户端用来在应用程序中流式传输轨道的 API key 。

关于json - 从每首歌中获取 HTTP MP3 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914622/

相关文章:

javascript - 从 Google 电子表格解析 JSON

java - 如何在绑定(bind)到 JSON 的对象中定义列表?

javascript - HTML 网站中的 mp3 播放器

javascript - Soundcloud Widget - Event.PLAY 不起作用

jquery - 轨道末端的 Soundcloud 自定义播放器事件

javascript - 为什么 JSON.stringify() 遇到 set 对象时会被忽略?

java - 将没有特定标准结构的 JSON 解析为 Map 或 Java 对象

.htaccess - HTML5 <audio> 标签在 IE10 中无法工作/播放

swift - 从 MP3 HTTP 流中获取元数据

javascript - 有没有办法从 SoundCloud oEmbed 回调实时搜索时间?