JavaScript:Streaming的简单SoundCloud API示例无法在Safari中正常运行

时间:2016-02-01 13:43:28

标签: javascript api safari streaming soundcloud

我对一个简单的soundcloud api流媒体示例感到非常沮丧,我正在研究几天知道。它基本上只是随机选择一个SC-url并打印出一个卷信息。我正在使用Gregg Tavares的audiostreamsource.js库来创建audiocontext和用于创建段落的p5.js。 而已... 它在Fireforx / Chrome上运行得非常好。但由于某种原因,它只在我刷新页面时在Safari中有效。有时它甚至会与Safari崩溃。 :(我想我只是没有足够的经验来解决这个问题。我真的试图从各个角度解决它。现在我被卡住了...... :(

你可以在这里看到我的小例子:http://christianlosert.com/test/01/ 编辑:要查看问题,您必须通过上面的链接进入新的浏览器选项卡。然后你会看到,在几毫秒之后,流媒体就会在Safari中止。

有人可以看到我的错误吗?

PS:在Gregg Tavares的帮助下,我尝试创建一个没有audiostreamsource.js / p5.js库的流媒体示例,以确保错误在我的代码中。奇怪的是,此示例仅适用于Safari(不是Firefox / Chrome):http://christianlosert.com/test/greg/

我真的完全不知道这里发生了什么

1 个答案:

答案 0 :(得分:1)

soundcloud 3.0库不适用于Safari。参见

soundcloud's 2.0 sdk works but 3.0 does not as of Oct 29th, 2015

你可以

  1. 使用soundcloud 2.0库(问题:即使不使用它也会初始化flash)

  2. 使用一些XHR代码

    自行制作soundcloud API请求

    基本上你向

    提出XHR请求
    https://api.soundcloud.com/resolve?url=<musicUrl>&client_id=<yourclientid>&format=json&_status_code[302]=200
    

    注意:您需要在encodeURIComponent上呼叫<musicUrl>,可能在_staus_code[302]

    上呼叫

    如果结果的状态为302,则按照位置

    var result = JSON.parse(resultString);
    if (result.status.substr(0, 3) === "302" && result.location) {
    
       do XHR on result.location
    
    else
    
       use result as normal