Development Guidelines on Audio Playback

When to Use

You use audio playback APIs to convert audio data into audible analog signals, play the audio signals using output devices, and manage playback tasks.

Figure 1 Playback status

Available APIs

Table 1 media

API

Description

media.createAudioPlayer()

Creates an AudioPlayer instance.

AudioPlayer

Provides audio playback methods.

Table 2 AudioPlayer

API

Description

release()

Releases audio resources.

play()

Starts audio playback.

pause()

Pauses playback.

stop()

Stops playback.

reset()7+

Resets the audio source to be played.

setVolume(vol: number)

Sets playback volume.

seek(timeMs: number)

Changes the playback position.

src:string

Defines the URI of an audio file to play.

state:AudioState

Defines a playback state.

currentTime:number

Defines the current playback position.

duration:number

Defines the playback duration.

loop:boolean

Defines whether to loop audio playback.

on('play', function callback)

Listens for the playback start event.

on('pause', function callback)

Listens for the playback pause event.

on('stop', function callback)

Listens for the playback stop event.

on('reset', function callback)

Listens for the playback reset event.

on('finish',function callback)

Listens for the playback end event.

on('error', function callback)

Listens for the playback error event.

on('dataload', function callback)

Listens for the data loading event.

on('volumeChange', function callback)

Listens for the volume change event.

on('timeUpdate', function callback)

Listens for the progress change event.

  1. Create an audio player.

    var player = media.createAudioPlayer();
    
  2. Set the listeners.

    player.on('play', (err, action) => {
        if (err) {
            console.error('Error returned in the play() callback.');
            return;
         }
         console.info('Current player duration: '+ player.duration);
         console.info('Current player time: ' + player.currentTime);
         console.info('Current player status: '+player.state);
         console.info('Pause MP3');
         player.pause();
    });
    player.on('pause', (err, action) => {
         if (err) {
             console.error('Error returned in the pause() callback.');
             return;
          }
          console.info('Current player status: ' + player.state);
          console.info('Current player time: ' + player.currentTime);
          player.seek(30000); // Seek for 30 seconds.
    });
    player.on('stop', (err, action) => {
        if (err) {
            console.error('Error returned in the stop() callback.');
            return;
        }
        console.info('stop callback invoked. State:' + player.state);
        player.reset();
    });
    player.on('dataLoad', (err, action) => {
        if (err) {
            console.error('Error returned in the dataLoad() callback.');
            return;
        }
         console.info('dataLoad callback invoked. Current time: ' + player.currentTime);
         console.info('Duration of the source:' + player.duration);
         player.play();
    });
    player.on('reset', (err, action) => {
        if (err) {
            console.error('Error returned in the reset() callback.');
            return;
        }
        console.info('reset callback invoked.');
        player.release();
    });
    player.on('finish', (err, action) => {
         if (err) {
            console.error('Error returned in the finish() callback.');
            return;
         }
         console.info('finish callback invoked.');
    });
    player.on('timeUpdate', (seekTime, action) => {
        console.info('Seek time: ' + seekTime);
        console.info('Current player time: ' + player.currentTime);
        var newTime = player.currentTime;
        if(newTime == 30000) {
            console.info('Seek succeeded. New time: ' + newTime);
        } else {
            console.error('Seek failed: ', + newTime);
         }
            player.stop();
    });
    player.on('error', (err) => {
         console.error('Player error: ${err.message}');
    });
    
  3. Start playback.

    var audioSourceMp3 = 'file://test.mp3';
    player.src = audioSourceMp3;
    player.loop = true;