当前位置: 首页 > 面试题库 >

SoundCloud Api重定向混乱和音频Api流

池照
2023-03-14
问题内容

我正在尝试向SoundCloud API发出请求。然后,当我得到响应时,将stream_url设置为

这有效:

http://matthiasdv.org/beta/

但并非总是如此…例如,当您搜索“
Bo黑猩猩”时,您可以播放前几首曲目而不会出现任何问题。但是当您尝试演奏“伦敦语法-嘿,现在(bo黑猩猩混音)”时-第七名结果-
它不会播放。它不会抛出任何错误。

我一直在修改Chrome的webdev工具,并在“网络”标签下看到正在发出的请求。我发现DO播放的曲目有一个简短的Request Url,如下所示:

https://ec-media.sndcdn.com/vR5ukuOzyLbw.128.mp3?f10880d39085a94a0418a7ef69b03d522cd6dfee9399eeb9a522029f6bfab939b9ae57af14bba24e44e1542924c205ad28a52352010cd0e7dd461e9243ab54dc0f0bba897d

和那些看起来不是这样的:

https://cf-media.sndcdn.com/8PCswwlkswOd.128.mp3?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiKjovL2NmLW1lZGlhLnNuZGNkbi5jb20vOFBDc3d3bGtzd09kLjEyOC5tcDMiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MzM0Mjc2MDN9fX1dfQ__&Signature=cD-XVhnvQnIATkfrBDDVy0Q7996C8DymwxRLwBBduab0~L0MynF1ftcMky~21T8Q-gCZ2~dMK8dz7uVxvJTIJgXPxEZvhNtbvescMK6iFMg-xSAty-4OhJYjrIZJ2j8NE4uNA4Ml7MWbWcQw4KtUtpZitOQuguS3DPFDII3VF-dvzb2L~xG-G8Uu3uOnI1WhnAAfhf1QWMO7swwB89HtcCiuVBmfluG28ELrJEq-au8mqIMB3sLTno6nUuTtpHXR2ayXBsYcYLLJVXa3Ul8p1rhLS5XWHKWXY8xug4jwey27~C5PVAomK6Z5lJx-mz-0zYs4riUYtl0zACbZ1OfwTQ__&Key-Pair-Id=APKAJAGZ7VMH2PFPW6UQ

现在,乍一看,我认为这是一个编码问题,但是在ajax网址周围包裹一个快速encodeURI()无效。

此外,我不明白这些网址来自何处。在我的代码中,我将ajax请求定向到例如:

https://api.soundcloud.com/tracks/140326936/stream?client_id=5c6ceaa17461a1c79d503b345a26a54e

因此,GET请求中的请求网址(在Chrome的webdev工具的“网络”下可以找到)对我来说毫无意义。SoundCloud是否将获取请求重定向到CDN主机?我注意到的另一件事是,每次触发两个请求而不是一个。第一个始终被取消,并包含“显示临时标头”警告。我相信这是因为我正在设置crossOrigin
=“ anonymous”,否则某些浏览器将不会加载内容。

我猜可能会导致问题的是,当将url设置为元素的src属性时,在Dancer.js库中会触发evenListener,该库将处理音频Api和回放(https://github.com/jsantell
/dancer.js/)。可能是库中某处需要encodeURI()。

我决定以任何方式提出问题,因为我不理解上面的Request Urls的形成方式,为什么触发了两个而不是一个请求,为什么总是取消第一个请求。

我解决回放问题的任何提示也非常受欢迎…


问题答案:

当您运行请求

 https://api.soundcloud.com/tracks/140326936/stream?client_id=5c6ceaa17461a1c79d503b345a26a54e

您会从服务器收到HTTP 302
Found响应,这是URL重定向(http://en.wikipedia.org/wiki/HTTP_302)。这将导致您的浏览器从服务器返回的新URL加载,从而看到两个请求。服务器基本上说“是的,我知道在哪里可以找到该文件,请那边的那个人”。

我想,一个起作用而另一个不起作用的原因是https://ec-media.sndcdn.com设置了访问控制标头,而https://cf-media.sndcdn.com却没有。这是服务器配置的问题,不幸的是,您无法从客户端进行任何控制。Dunno,这是Soundcloud的有意举动,还是您可以向他们询问的内容。



 类似资料:
  • 我正在使用核心音频(与swift包装)播放一些音频样本(一个简短的刺激,其中记录一个冲动)。我坚持使用核心音频,而不是更新的AVFoundation,因为我需要一些严格的定时和多设备输入,更新的框架还没有涵盖(我通过苹果代码请求他们告诉我必须使用核心音频)。 我现在创建了一个非常简单的正弦波,使用: 如果我把它写到一个wav文件并回放,音调就会按预期的方式创建。 然而,我实际上想在应用程序中触发这

  • 例如,我试图向www.testjson发出GET请求。com/json,但响应是从不同的域URL检索的,例如www.testjson。com/confirmJson。 Spring mvc是否支持此功能,特别是restTemplate.exchange功能。 我目前正在做这类事情,但我得到一个500状态码(内部服务器错误),无法找出到底是什么导致了错误。 那么RestTemplate真的可以管理重

  • 我目前正在使用Web音频API。我设法“读懂”了一个麦克风,并将它播放给我的扬声器,这非常无缝。 使用Web Audio API,我现在想重新取样传入的音频流(又名麦克风)从44.1kHz到16kHz。16kHz,因为我正在使用一些需要16kHz的工具。由于44.1kHz除以16kHz不是整数,我相信我不能简单地使用低通滤波器和“跳过样本”,对吗? 我还看到一些人建议使用,但由于它已被弃用,我觉得

  • 我正在尝试将我在应用程序中播放的所有音频重定向到蓝牙扬声器。首先,我将蓝牙设备配对,然后我尝试向audioManager“说”,我播放的所有音频都应发送到蓝牙扬声器: 当我播放音频时。。。 ... 我什么也没听到。 感谢您的提示:-)

  • 在页面上添加视频、声音、动画等,可以增强用户体验。在HTML5之前,为网页添加多媒体的唯一办法,就是使用第三方的插件(如,Adobe Flash等)。 HTML5中,提供了对多媒体的原生支持,只需通过 video元素,就可以向网页嵌入视频、电影或音频资源,通过 audio元素向网页嵌入音频资源,省时省力。 视频 早就听说HTML提供了对视频的原生支持,你可能已经迫不及待想体验一下了。 在HTML5

  • 问题内容: 在下面的示例中,如果1000都是int(我认为它们都是),为什么底部不能编译? 问题答案: 经营者 运算符将操作数组合成表达式。 比较在其他地方讨论。对于其他二进制运算符,除非操作涉及移位或未类型化的常量,否则操作数类型必须相同。对于仅涉及常量的操作,请参见关于常量表达式的部分。 除移位操作外,如果一个操作数是未类型化的常量,而另一个操作数不是,则该常量将转换为另一种操作数的类型。 例