title: Media
description: Record and play audio on the device.

Android 4.4

Android 5.1

Android 6.0

iOS 9.3

iOS 10.0

Windows 10 Store

Travis CI

cordova-plugin-media

This plugin provides the ability to record and play back audio files on a device.

NOTE: The current implementation does not adhere to a W3C
specification for media capture, and is provided for convenience only.
A future implementation will adhere to the latest W3C specification
and may deprecate the current APIs.

This plugin defines a global Media Constructor.

Although in the global scope, it is not available until after the deviceready event.

playAudioWhenScreenIsLocked: Pass in this option to the play
method to specify whether you want to allow playback when the screen
is locked. If set to true (the default value), the state of the
hardware mute button is ignored, e.g.:

Note: To allow playback with the screen locked or background audio you have to add audio to UIBackgroundModes in the info.plist file. See Apple documentation. Also note that the audio has to be started before going to background.

order of file search: When only a file name or simple path is
provided, iOS searches in the www directory for the file, then in
the application's documents/tmp directory:

var myMedia = new Media("audio/beer.mp3")
myMedia.play() // first looks for file in www/audio/beer.mp3 then in <application>/documents/tmp/audio/beer.mp3

media.release

Releases the underlying operating system's audio resources.
This is particularly important for Android, since there are a finite amount of
OpenCore instances for media playback. Applications should call the release
function for any Media resource that is no longer needed.

media.release();

Quick Example

// Audio player

//

var my_media =newMedia(src, onSuccess, onError);

my_media.play();

my_media.stop();

my_media.release();

media.resumeRecord

Resume recording an audio file.

media.resumeRecord();

Supported Platforms

iOS

Quick Example

// Record audio

//

functionrecordAudio(){

var src ="myrecording.mp3";

var mediaRec =newMedia(src,

// success callback

function(){

console.log("recordAudio():Audio Success");

},

// error callback

function(err){

console.log("recordAudio():Audio Error: "+err.code);

});

// Record audio

mediaRec.startRecord();

// Pause Recording after 5 seconds

setTimeout(function(){

mediaRec.pauseRecord();

},5000);

// Resume Recording after 10 seconds

setTimeout(function(){

mediaRec.resumeRecord();

},10000);

}

media.seekTo

Sets the current position within an audio file.

media.seekTo(milliseconds);

Parameters

milliseconds: The position to set the playback position within the audio, in milliseconds.

Quick Example

// Audio player

//

var my_media =newMedia(src, onSuccess, onError);

my_media.play();

// SeekTo to 10 seconds after 5 seconds

setTimeout(function(){

my_media.seekTo(10000);

},5000);

BlackBerry 10 Quirks

Not supported on BlackBerry OS 5 devices.

media.setVolume

Set the volume for an audio file.

media.setVolume(volume);

Parameters

volume: The volume to set for playback. The value must be within the range of 0.0 to 1.0.

Supported Platforms

Android

iOS

Quick Example

// Play audio

//

functionplayAudio(url){

// Play the audio file at url

var my_media =newMedia(url,

// success callback

function(){

console.log("playAudio():Audio Success");

},

// error callback

function(err){

console.log("playAudio():Audio Error: "+err);

});

// Play audio

my_media.play();

// Mute volume after 2 seconds

setTimeout(function(){

my_media.setVolume('0.0');

},2000);

// Set volume to 1.0 after 5 seconds

setTimeout(function(){

my_media.setVolume('1.0');

},5000);

}

media.startRecord

Starts recording an audio file.

media.startRecord();

Supported Platforms

Android

iOS

Windows Phone 7 and 8

Windows

Quick Example

// Record audio

//

functionrecordAudio(){

var src ="myrecording.mp3";

var mediaRec =newMedia(src,

// success callback

function(){

console.log("recordAudio():Audio Success");

},

// error callback

function(err){

console.log("recordAudio():Audio Error: "+err.code);

});

// Record audio

mediaRec.startRecord();

}

Android Quirks

Android devices record audio in AAC ADTS file format. The specified file should end with a .aac extension.

The hardware volume controls are wired up to the media volume while any Media objects are alive. Once the last created Media object has release() called on it, the volume controls revert to their default behaviour. The controls are also reset on page navigation, as this releases all Media objects.

iOS Quirks

iOS only records to files of type .wav and .m4a and returns an error if the file name extension is not correct.

If a full path is not provided, the recording is placed in the application's documents/tmp directory. This can be accessed via the File API using LocalFileSystem.TEMPORARY. Any subdirectory specified at record time must already exist.

Files can be recorded and played back using the documents URI:

var myMedia = new Media("documents://beer.mp3")

Since iOS 10 it's mandatory to add a NSMicrophoneUsageDescription entry in the info.plist.

NSMicrophoneUsageDescription describes the reason that the app accesses the user’s microphone. When the system prompts the user to allow access, this string is displayed as part of the dialog box. To add this entry you can pass the variable MICROPHONE_USAGE_DESCRIPTION on plugin install.

If you don't pass the variable, the plugin will add an empty string as value.

Windows Quirks

Windows devices can use MP3, M4A and WMA formats for recorded audio. However in most cases it is not possible to use MP3 for audio recording on Windows Phone 8.1 devices, because an MP3 encoder is not shipped with Windows Phone.

If a full path is not provided, the recording is placed in the AppData/temp directory. This can be accessed via the File API using LocalFileSystem.TEMPORARY or ms-appdata:///temp/<filename> URI.

Any subdirectory specified at record time must already exist.

Tizen Quirks

Not supported on Tizen devices.

media.stop

Stops playing an audio file.

media.stop();

Quick Example

// Play audio

//

functionplayAudio(url){

// Play the audio file at url

var my_media =newMedia(url,

// success callback

function(){

console.log("playAudio():Audio Success");

},

// error callback

function(err){

console.log("playAudio():Audio Error: "+err);

}

);

// Play audio

my_media.play();

// Pause after 10 seconds

setTimeout(function(){

my_media.stop();

},10000);

}

media.stopRecord

Stops recording an audio file.

media.stopRecord();

Supported Platforms

Android

iOS

Windows Phone 7 and 8

Windows

Quick Example

// Record audio

//

functionrecordAudio(){

var src ="myrecording.mp3";

var mediaRec =newMedia(src,

// success callback

function(){

console.log("recordAudio():Audio Success");

},

// error callback

function(err){

console.log("recordAudio():Audio Error: "+err.code);

}

);

// Record audio

mediaRec.startRecord();

// Stop recording after 10 seconds

setTimeout(function(){

mediaRec.stopRecord();

},10000);

}

Tizen Quirks

Not supported on Tizen devices.

MediaError

A MediaError object is returned to the mediaError callback
function when an error occurs.