
Product
Redesigned Repositories Page: A Faster Way to Prioritize Security Risk
Our redesigned Repositories page adds alert severity, filtering, and tabs for faster triage and clearer insights across all your projects.
Dead simple way to have audio playback functionality in the JS application.
Dead simple way to have audio playback functionality in the JS application.
Check out the Demo App
Check the Documentation
# npm
npm install rxjs-audio --save
# yarn
yarn install rxjs-audio
Before using, you need to create an object of the Stream class. You'll need to pick a class depening on your use-case:
AudioStream
is the base-class similar to the html5 audio element where you can load a track.PlaylistAudioStream
is like the name says more suitable for playing playlists, in the options you'll be able to add an array of tracksimport { AudioStream } from 'rxjs-audio';
...
// For single track streams
const audioStream = new AudioStream();
// For playlists
const audioStream = new PlaylistAudioStream();
Starting or loading a single track
const audioStream = new AudioStream({
// Optional
autoPlay: true, // Start playing the track as soon as it loads
});
audioStream.loadTrack('https://ia801609.us.archive.org/16/items/nusratcollection_20170414_0953/Man%20Atkiya%20Beparwah%20De%20Naal%20Nusrat%20Fateh%20Ali%20Khan.mp3')
const tracks: string[] = [
'https://ia801504.us.archive.org/3/items/EdSheeranPerfectOfficialMusicVideoListenVid.com/Ed_Sheeran_-_Perfect_Official_Music_Video%5BListenVid.com%5D.mp3',
'https://ia801609.us.archive.org/16/items/nusratcollection_20170414_0953/Man%20Atkiya%20Beparwah%20De%20Naal%20Nusrat%20Fateh%20Ali%20Khan.mp3',
'https://ia801503.us.archive.org/15/items/TheBeatlesPennyLane_201805/The%20Beatles%20-%20Penny%20Lane.mp3',
];
const audioStream = new PlaylistAudioStream(tracks, {
// Optional
autoPlay: true, // Start playing the track as soon as it loads
// Optional
initialTrack: 1; // Set the track you want to start playing first
// Optional
autoPlayNext: true, // Automatically start playing the next song when a track finishes
});
rxjs-audio
provides lots of playback features like play
, pause
, next
, previous
out of the box. Check documentation of AudioStream
class for more detail.
To play
the media. Run the following:
this.audio.play();
To pause
the media. Run the following:
this.audio.pause();
To stop
the media. Run the following:
this.audio.stop();
To seekTo
a position. Run the following:
this.audio.seekTo(20);
To change the volume, use
this.audio.setVolume(0.5);
next
track (only for PlaylistAudioStream)To play the next
track in list. Run the following:
this.audio.next();
// Optional: Not required when `autoPlay` is set to true
this.audio.play();
Check the documentation at and demo application for more detail.
It's fairly easy to listen to audio media events like playing
, ended
.
You just need to subscribe
to the Observable
return by AudioStream.events()
method, as shown below:
this.audio.events()
.subscribe(event => {
console.log(event);
});
rxjs-audio
also provides an Observable to listen to state changes. You can use it as shown below:
// Update State
this.audio.getState()
.subscribe(state => {
this.state = state;
});
The state:StreamState
Object gives us folowing information:
{
playing: boolean; // If media is currently playing or not.
isFirstTrack: boolean; // (only for PlaylistAudioStream) If first track is playing or not.
isLastTrack: boolean; // (only for PlaylistAudioStream) If last track is playing or not.
trackInfo: StreamTrackInfo // Check the definition below
}
And trackInfo:StreamTrackInfo
provide us following information:
{
currentTrack: number | undefined, // index of the current playing track
duration: number | undefined, // duration of media
currentTime: number | undefined // currentTime of media
}
Following is a very simple example of Error Handing
this.audio.events()
.subscribe(event => {
if(event.type === 'canplay') {
this.error = false;
}
else if(event.type === 'error') {
this.error = true;
}
});
Read the documentation at https://imsingh.github.io/rxjs-audio for more detail.
Licensed under MIT
FAQs
Dead simple way to have audio playback functionality in the JS application.
We found that rxjs-audio demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Our redesigned Repositories page adds alert severity, filtering, and tabs for faster triage and clearer insights across all your projects.
Security News
Multiple deserialization flaws in PyTorch Lightning could allow remote code execution when loading untrusted model files, affecting versions up to 2.4.0.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.