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
特此免费授予获得此软件副本和相关文档文件副本(“软件”)的任何人,以无限制处理该软件,包括无限制的使用权,复制,复制,修改,合并,合并,发布,分发,分发,分发,订婚,和/或允许软件的副本,并允许对以下条件提供以下条件,以下是以下条件。
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人都不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权的诉讼中还是其他责任,是由软件,使用或与软件中的使用或其他交易有关的。
通过命令行克隆项目: