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