如何使用 Soundcloud api 获取流到 html5 音频播放器?

Posted

技术标签:

【中文标题】如何使用 Soundcloud api 获取流到 html5 音频播放器?【英文标题】:How to use Soundcloud api to get stream into html5 audio player? 【发布时间】:2013-03-04 18:32:26 【问题描述】:

我刚开始学习 javascript,作为我的第一次尝试,我想创建自定义音频播放器,它使用 soundcloud 的 api 作为音乐源。

到目前为止,这是我设置的:

<!DOCTYPE html>
<html>
<head>



<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://connect.soundcloud.com/sdk.js"></script>

<script>
window.onload = function() 
SC.initialize(
  client_id: '10e27db0dacd00954d7160b4c092a6e2' //Demo ID
);

SC.stream("/tracks/75868018", function(sound)
    $("audio-test").attr("src", sound.uri);
);
;
</script>



</head>
<body>

<audio id="audio-test" controls></audio>

</body>
</html>

【问题讨论】:

需要比这更多的工作 - 你能把 javascript 控制代码放在一个 pastebin 中以便我们看一眼吗? @CodeMoose 添加了它,还添加了我用于此 html5 播放器的博客文章的链接。 【参考方案1】:

好的,明白了。问题在于 .stream() - 它旨在提供由 .play() 函数部署的预打包播放器。

如果您改用SC.get(),您将实际访问轨道的属性,并能够将其嵌入到音频标签中。查看我的代码:http://jsfiddle.net/LpzpK/6/

还有一个问题 - 曲目被标记为 401 禁止,因此播放器只会“加载”。您必须找到一种方法来公开您想要播放的曲目。

【讨论】:

感谢您的大力帮助,我想我已经看到了如何处理文档中某处禁止的 401 的一瞥,我会尝试弄清楚 ;) 成功了!只需要将 /stream?client_id=YOUR_ID 附加到 sound.uri ;)) thnx 再次寻求帮助! @Ilja 你们有解决方案吗 @Lakshay,我们最终并没有使用 spotify api 并手动嵌入 souncloud url 以获取其上不可用的曲目。不过那是不久前的事了,我敢肯定他们的 api 已经发生了很大变化,也许现在这是可能的。【参考方案2】:

粗略一看,似乎所有 soundcloud API 对象都带有一个直接链接到资源的 URI 属性。在您的情况下,它将是 sound.uri

在播放器代码的顶部,您有一个 &lt;audio&gt; 标签 - 我猜您可能希望将它的 src 设置为您正在播放的曲目的 URI 值。您可以通过为其附加一个 ID 并调用

SC.stream("/tracks/293", function(sound)
    $("[audio_id]").attr("src", sound.uri);
);

用您为标签选择的任何 ID 替换 [audio_id]。每次播放器更改时,您可能仍然需要做一些事情来重新初始化/重新启动播放器,但这有望让您开始。告诉我它是如何工作的!

【讨论】:

试过了,好像不行。我大大简化了我的播放器以更好地理解一切,但我仍然无法让它工作,这是我的新代码pastebin.com/A76pgjMf 我会把它放在一个小提琴里,然后玩弄它 - 一会儿还给你 我没有让回调函数运行。您是否需要做任何事情来实例化对象(var SC = new soundcloud();) 或其他什么? 让我检查文档 你能看到那个“声音”功能吗,不确定,但是,当用户点击播放按钮时,它是否应该被调用,所以它把那个 src 放进去?

以上是关于如何使用 Soundcloud api 获取流到 html5 音频播放器?的主要内容,如果未能解决你的问题,请参考以下文章

(译)SoundCloud 如何使用 HAProxy 和 Kubernetes 处理用户流量

如何播放 SoundCloud RTMP 流?

从嵌入式 soundcloud 元素中获取声音数据

Soundcloud API - 轨道上的地理标签过滤返回 503 服务不可用

Soundcloud iOS API - 从链接播放声音

有没有办法强制使用SoundCloud javascript流API的MP3块?