soundcloud audio.js

FLASH源码 2025-08-13

soundcloud-audio.js

围绕HTML5 <audio>和SoundCloud曲目和播放列表API包装。它可以被视为官方SoundCloud SDK或独立浏览器音频库的小替代品。

安装

npm install soundcloud-audio --save

用法

 const SoundCloudAudio = require ( 'soundcloud-audio' ) ;

// create new instance of audio
// clientId is optional but without it you cannot play tracks directly from SoundCloud API
const scPlayer = new SoundCloudAudio ( 'YOUR_CLIENT_ID' ) ;

// if you have a SoundCloud api stream url you can just play it like that
scPlayer . play ( {
  streamUrl : 'https://api.so*un*dcl*oud.com/tracks/185533328/stream'
} ) ;

// OR if you want to play a NON-SoundCloud audio
scPlayer . play ( { streamUrl : 'https://ex*am*ple.co*m/plain/audio/file' } ) ;

// OR if you need to load a SoundCloud track and resolve it's data
scPlayer . resolve ( 'https://sou*nd*c*loud.com/djangodjango/first-light' , function (
  track
) {
  // do smth with track object
  // e.g. display data in a view etc.
  console . log ( track ) ;

  // once track is loaded it can be played
  scPlayer . play ( ) ;

  // stop playing track and keep silence
  scPlayer . pause ( ) ;
} ) ;

// OR a SoundCloud playlist and resolve it's data
scPlayer . resolve ( 'http://*s**oundcloud.com/jxnblk/sets/yello' , function ( playlist ) {
  // do smth with array of `playlist.tracks` or playlist's metadata
  // e.g. display playlist info in a view etc.
  console . log ( playlist ) ;

  // once playlist is loaded it can be played
  scPlayer . play ( ) ;

  // for playlists it's possible to switch to another track in queue
  // e.g. we do it here when playing track is finished
  scPlayer . on ( 'ended' , function ( ) {
    scPlayer . next ( ) ;
  } ) ;

  // play specific track from playlist by it's index
  scPlayer . play ( { playlistIndex : 2 } ) ;
} ) ; 

API

new SoundCloudAudio('YOUR_CLIENT_ID', 'YOUR_CUSTOM_API_URL')

创建一个SoundCloudaudio的实例,内部使用HTML5 <audio>元素,该元素可在音频属性下使用。

  • 第一个参数,客户端ID字符串是可选的,但是如果您计划直接使用SoundCloud API(可以在此处获取-https://developers.soundcloud.com)。
  • 第二个参数是自定义API URL字符串,也是可选的,但它允许您使用SoundCloud API代理不将客户端ID公开在浏览器中

方法

resolve(url, callback)

如果您没有SoundCloud stream_url (例如https://api.s*o*undc*loud.com/tracks/:id/stream ),或者您需要Track的元数据,那么此方法适合您。将原始曲目或播放列表的URL作为第一个论点。一旦数据解决而没有错误,回调函数将作为唯一的参数将其作为普通对象接收。

play(options)

如果现在不在播放的话,请开始播放轨道。

返回诺言并接受options对象:

  • options.streamUrl任何音频流URL字符串(例如SoundCloud Track的stream_url ),如果通过它,则将是主要的播放源。
  • options.playlistIndex指定在已解决的SoundCloud播放列表的tracks数组中播放的曲目的位置。

preload(streamUrl, preloadType)

预努加载跟踪数据而无需播放。

  • preloadType此属性旨在向浏览器提供有关作者认为会带来最佳用户体验的提示。它可能具有以下值之一:
    • 'none' - 表示音频不应预加载
    • 'metadata' - 表示仅获取音频元数据(例如长度)
    • 'auto' - 指示可以下载整个音频文件,即使不希望用户使用它
    • 请参阅https://developer.m*o**zilla.org/en-us/docs/web/html/element/audio#attributes

pause()

暂停播放音频。

stop()

停止播放音频并倒带开始。

next(options)

跳到播放列表中的下一个曲目进行播放。

返回诺言并接受options对象:

  • options.loop -boolean,如果设置为true ,将在最后一首曲目之后的播放列表的开头开始。

previous()

返回播放列表中的先前曲目(返回承诺)。

seek(DOMEvent)

与HTML <progress>元素及其'polyfills集成的帮助方法。它改变了audio.currentTime与进度位置有关。只需通过您在进度单击中收到的DOM事件,所有必要的计算将自动完成。

setVolume(volumePercentage)

调整音量,数量在0到1之间,0不可听到,而1个数量是完整的。

setTime(seconds)

将歌曲的进度设置为特定数量的秒数。

道具

audio

RAW <audio>元素的实例。有几个有用的属性,例如currentTime (以seconds为单位)或您可能需要使用addEventListener (在HTMLMediaElement的其中的完整列表)收听事件。

duration

SoundCloud轨道持续时间转换为seconds ,以与audio.currentTime同步。

playing

显示播放器的当前状态,返回当前流轨道的false或源。

事件

Soundcloudio提供了在本机audio事件上订阅或取消订阅处理程序功能的快捷方式。可以在此处访问支持事件的列表-https://developer.mozilla.org/en-us/docs/web/guide/guide/events/media_events。

on('event', handler)

off('event', handler)

unbindAll()

 var SoundCloudAudio = require ( 'soundcloud-audio' ) ;

var scPlayer = new SoundCloudAudio ( 'YOUR_CLIENT_ID' ) ;

scPlayer . play ( {
  streamUrl : 'https://api.so*un*dcl*oud.com/tracks/185533328/stream'
} ) ;
scPlayer . on ( 'timeupdate' , function ( ) {
  console . log ( scPlayer . audio . currentTime ) ;
} ) ;
scPlayer . on ( 'ended' , function ( ) {
  console . log ( scPlayer . track . title + ' just ended!' ) ;
} ) ; 

浏览器支持

铬合金 Firefox 即/边缘 歌剧 野生动物园
3+✔ 3.5+✔ 9+✔ 10+✔ 3.1+

执照

麻省理工学院许可

版权(c)2015 dmitri voronianski dmitri.voronianski@gmail.com

特此免费授予获得此软件副本和相关文档文件副本(“软件”)的任何人,以无限制处理该软件,包括无限制的使用权,复制,复制,修改,合并,合并,发布,分发,分发,分发,订婚,和/或允许软件的副本,并允许对以下条件提供以下条件,以下是以下条件。

上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。

该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人都不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权的诉讼中还是其他责任,是由软件,使用或与软件中的使用或其他交易有关的。

下载源码

通过命令行克隆项目:

git clone https://github.com/voronianski/soundcloud-audio.js.git