gpt4 book ai didi

streaming - 通过客户端 XHR 打开 Soundcloud Track 的 stream_url?

转载 作者:行者123 更新时间:2023-12-04 22:34:18 25 4
gpt4 key购买 nike

由于您可以通过 XHR 调用 Soundcloud API
(因为它发送的 CORS header http://backstage.soundcloud.com/2010/08/of-cors-we-do/ ,对吗?)
我想知道这是否可以通过音频数据本身实现,例如轨道的 stream_url。

当尝试使用 Web Audio API 使用 XHR(来自客户端)打开 stream_url 时,我得到 Access-Control-Allow-Origin 不允许的 Origin。错误。
有没有办法通过 XHttpRequest 从 Client-Side-Javascript 加载音频资源,还是不可能( https://stackoverflow.com/questions/10871882/audio-data-api-and-streaming-a-no-go )?

会很棒,因为这将允许使用 Web Audio API 进行一些非常酷的事情。

谢谢!

更新

问题可能与调用时获得的 302 重定向有关:

http://api.soundcloud.com/tracks/5646378/stream.json?client_id=[client_id]

或其他一些请求实际媒体文件的电话(见评论)。
HTTP/1.1 302 Moved Temporarily
Server: nginx
Date: Sun, 24 Jun 2012 09:58:01 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Cache-Control: no-cache
Location: http://ec-media.soundcloud.com/[...]
X-Runtime: 41
Content-Length: 339
Access-Control-Allow-Methods: GET, PUT, POST, DELETE
Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Origin
Access-Control-Allow-Origin: *
X-Cacheable: NO:Cache-Control=no-cache
X-Varnish: 2433107209
Age: 0
Via: 1.1 varnish
X-Cache: MISS

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=252460800
Content-Type: audio/mpeg
Date: Sun, 24 Jun 2012 09:58:01 GMT
ETag: "c2241e[...]41bbcf7c0d32f09"
Last-Modified: Tue, 28 Sep 2010 17:57:26 GMT
Server: ECAcc (fra/D484)
x-amz-id-2: oB0XzQcc/[...]+mAr/a
x-amz-meta-bitrate: 128
x-amz-meta-duration: 152900
x-amz-meta-job: t405jWkfNvx7
x-amz-request-id: D65[...]E1355
X-Cache: HIT
Content-Length: 2445478

原始 JSON 响应具有 CORS header ,而重定向的位置没有。

最佳答案

好吧,只要音频文件本身不带有 CORS header (请参阅问题中的 curl -IL 输出),唯一对我有用的解决方案就是打开音频文件并自己添加 header 。

根据我的理解,这也是 https://github.com/tsenart/audiojedit 等其他应用程序所做的。 (在 node.js 中)
这具有将二进制文件的流量转移到您的服务器的巨大缺点,否则由 soundcloud.com 提供服务。

您可以使用 PHP 打开文件,添加标题并使用以下内容重新流式传输:

$fp = fopen('http://api.soundcloud.com/tracks/[track_id]/stream.json?client_id=[client_id]', 'rb');

header("Content-Type: audio/mpeg");
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE");
header("Access-Control-Allow-Headers: Accept, Authorization, Content-Type, Origin");
header("Access-Control-Allow-Origin: *");
fpassthru( $fp );

exit();

正如我所说,这只是一种解决方法,对于生产环境来说不是一个很好的解决方案,
但帮助我继续使用我的网络音频应用程序。

Soundcloud,有没有可能将 CORS header 添加到音频文件中? :)

关于streaming - 通过客户端 XHR 打开 Soundcloud Track 的 stream_url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com