我使用 SoundCloud API 来检索可流式轨道的流 URL。我遵循重定向,最终得到一个如下所示的 URL:
http://ec-media.soundcloud.com/eodihgiuh.128.mp3?<a string>
AWSAccessKeyId=<access key>
&Expires=<timestamp>
&Signature=<signature>
或者
http://ak-media.soundcloud.com/euieuieie.128.mp3?
AWSAccessKeyId=<access key>
&Expires=<timestamp>
&Signature=<signature>
&__gda__=<a string>
然后我开始在这个 URL 上流式传输 MP3 数据。
首先,我发送一个HEAD
读取Content-Length
标题的请求,这样我就知道需要发送多少个GET
请求才能播放整首歌曲。
然后我发送几个部分GET
请求,每个请求都有不同的Range
标头。
问题是有时HEAD
请求会返回403
状态码,即使GET
对完全相同的 URL 的请求会返回200
状态码。似乎当且仅当主机是 时才会发生这种情况ak-media.soundcloud.com
。
这应该发生吗?我希望HEAD
请求返回与请求完全相同的标头GET
,只是没有正文响应。
干杯,
铅
PS:我可能应该提一下,我的代码不是在计算机上运行,而是在具有非常有限资源的微型 8 位处理器的音频设备上运行。