by martin-juul | v1.0.0
NativeScript plugin to play audio from filesystem and network.
npm i --save @martin-juul/nativescript-astreamer


Forked from https://github.com/nstudio/nativescript-audio


  • Removed recording capability
  • Fixed iOS player


tns plugin add nativescript-astreamer

Android Native Classes

iOS Native Classes


TypeScript Example

import { NSAudioPlayer } from 'nativescript-astreamer';

export class YourClass {
private player: NSAudioPlayer;

constructor() {
this.player = new NSAudioPlayer();
this.player.debug = true; // set true to enable TNSPlayer console logs for debugging.

(async () => {
await this.player.initFromFile({
audioFile: '~/audio/song.mp3', // ~ = app directory
loop: false,
completeCallback: this._trackComplete.bind(this),
errorCallback: this._trackError.bind(this)

// iOS: duration is in seconds
// Android: duration is in milliseconds
const duration = this.player.getAudioTrackDuration();
console.log(`duration: ${duration}`);

public togglePlay() {
if (this.player.isAudioPlaying()) {
} else {

private _trackComplete(args: any) {
console.log('reference back to player:', args.player);
// iOS only: flag indicating if completed succesfully
console.log('whether song play completed successfully:', args.flag);

private _trackError(args: any) {
console.log('reference back to player:', args.player);
console.log('the error:', args.error);
// Android only: extra detail on error
console.log('extra info on the error:', args.extra);



NSAudioPlayer Methods

Method Description
initFromFile(options: AudioPlayerOptions): Promise Initialize player instance with a file without auto-playing.
playFromFile(options: AudioPlayerOptions): Promise Auto-play from a file.
initFromUrl(options: AudioPlayerOptions): Promise Initialize player instance from a url without auto-playing.
playFromUrl(options: AudioPlayerOptions): Promise Auto-play from a url.
pause(): Promise<boolean> Pause playback.
resume(): void Resume playback.
seekTo(time:number): Promise<boolean> Seek to position of track (in seconds).
dispose(): Promise<boolean> Free up resources when done playing audio.
isAudioPlaying(): boolean Determine if player is playing.
getAudioTrackDuration(): Promise<string> Duration of media file assigned to the player.
playAtTime(time: number): void - iOS Only Play audio track at specific time of duration.
changePlayerSpeed(speed: number): void - On Android Only API 23+ Change the playback speed of the media player.

NSAudioPlayer Instance Properties

Property Description
ios Get the native ios AVAudioPlayer instance.
android Get the native android MediaPlayer instance.
debug: boolean Set true to enable debugging console logs (default false).
currentTime: number Get the current time in the media file's duration.
volume: number Get/Set the player volume. Value range from 0 to 1.



Demo App


The demo has not been migrated yet.

  • fork/clone the repository
  • cd into the src directory
  • execute npm run demo.android or npm run demo.ios (scripts are located in the scripts of the package.json in the src directory if you are curious)