harmony 鸿蒙@ohos.multimedia.media (Media)

2022-08-09 浏览 (915)

@ohos.multimedia.media (Media)

NOTE

The initial APIs of this module are supported since API version 6. Newly added APIs will be marked with a superscript to indicate their earliest API version.

The multimedia subsystem provides a set of simple and easy-to-use APIs for you to access the system and use media resources.

This subsystem offers the following audio and video services:

  • Audio and video playback, implemented by the AVPlayer9+ class. This class has integrated AudioPlayer6+ and VideoPlayer8+, with the state machine and error codes upgraded. It is recommended.
  • Audio and video recording, implemented by the AVRecorder9+ class. This class has integrated AudioRecorder6+ and VideoRecorder9+. It is recommended.
  • Audio playback, implemented by the AudioPlayer6+ class. It is deprecated. You are advised to use AVPlayer9+.
  • Video playback, implemented by the VideoPlayer8+ class. It is deprecated. You are advised to use AVPlayer9+.
  • Audio recording, implemented by the AudioRecorder6+ class. It is deprecated. You are advised to use AVRecorder9+.
  • Video recording, implemented by the VideoRecorder9+ class. It is deprecated. You are advised to use AVRecorder9+.

Modules to Import

import media from '@ohos.multimedia.media';

media.createAVPlayer9+

createAVPlayer(callback: AsyncCallback<AVPlayer>): void

Creates an AVPlayer instance. This API uses an asynchronous callback to return the result.

NOTE

  • A maximum of 13 instances can be created in video-only playback scenarios.
  • A maximum of 16 instances can be created in both audio and video playback scenarios.
  • The actual number of instances that can be created may be different. It depends on the specifications of the device chip in use. For example, in the case of RK3568, a maximum of 6 instances can be created in video-only playback scenarios.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<AVPlayer>YesCallback used to return the result. If the operation is successful, an AVPlayer instance is returned; otherwise, null is returned. The instance can be used to play audio and video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by callback.

Example

import { BusinessError } from '@ohos.base';

let avPlayer: media.AVPlayer;
media.createAVPlayer((error: BusinessError, video: media.AVPlayer) => {
  if (video != null) {
    avPlayer = video;
    console.info('createAVPlayer success');
  } else {
    console.error(`createAVPlayer fail, error message:${error.message}`);
  }
});

media.createAVPlayer9+

createAVPlayer(): Promise<AVPlayer>

Creates an AVPlayer instance. This API uses a promise to return the result.

NOTE

  • A maximum of 13 instances can be created in video-only playback scenarios.
  • A maximum of 16 instances can be created in both audio and video playback scenarios.
  • The actual number of instances that can be created may be different. It depends on the specifications of the device chip in use. For example, in the case of RK3568, a maximum of 6 instances can be created in video-only playback scenarios.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<AVPlayer>Promise used to return the result. If the operation is successful, an AVPlayer instance is returned; otherwise, null is returned. The instance can be used to play audio and video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by promise.

Example

import { BusinessError } from '@ohos.base';

let avPlayer: media.AVPlayer;
media.createAVPlayer().then((video: media.AVPlayer) => {
  if (video != null) {
    avPlayer = video;
    console.info('createAVPlayer success');
  } else {
    console.error('createAVPlayer fail');
  }
}).catch((error: BusinessError) => {
  console.error(`AVPlayer catchCallback, error message:${error.message}`);
});

media.createAVRecorder9+

createAVRecorder(callback: AsyncCallback<AVRecorder>): void

Creates an AVRecorder instance. This API uses an asynchronous callback to return the result.

NOTE

  • A maximum of 2 instances can be created in audio and video recording scenarios.
  • Only one instance can perform audio recording on a device at one time, since all the applications share the audio channel. Any attempt to create the second instance for audio recording fails due to audio channel conflicts.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<AVRecorder>YesCallback used to return the result. If the operation is successful, an AVRecorder instance is returned; otherwise, null is returned. The instance can be used to record audio and video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by callback.

Example

let avRecorder: media.AVRecorder;

media.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => {
  if (recorder != null) {
    avRecorder = recorder;
    console.info('createAVRecorder success');
  } else {
    console.error(`createAVRecorder fail, error message:${error.message}`);
  }
});

media.createAVRecorder9+

createAVRecorder(): Promise<AVRecorder>

Creates an AVRecorder instance. This API uses a promise to return the result.

NOTE

  • A maximum of 2 instances can be created in audio and video recording scenarios.
  • Only one instance can perform audio recording on a device at one time, since all the applications share the audio channel. Any attempt to create the second instance for audio recording fails due to audio channel conflicts.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<AVRecorder>Promise used to return the result. If the operation is successful, an AVRecorder instance is returned; otherwise, null is returned. The instance can be used to record audio and video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by promise.

Example

let avRecorder: media.AVRecorder;

media.createAVRecorder().then((recorder: media.AVRecorder) => {
  if (recorder != null) {
    avRecorder = recorder;
    console.info('createAVRecorder success');
  } else {
    console.error('createAVRecorder fail');
  }
}).catch((error: Error) => {
  console.error(`createAVRecorder catchCallback, error message:${error.message}`);
});

media.createVideoRecorder9+

createVideoRecorder(callback: AsyncCallback<VideoRecorder>): void

Creates a VideoRecorder instance. This API uses an asynchronous callback to return the result. Only one VideoRecorder instance can be created per device.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<VideoRecorder>YesCallback used to return the result. If the operation is successful, a VideoRecorder instance is returned; otherwise, null is returned. The instance can be used to record video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by callback.

Example

let videoRecorder: media.VideoRecorder;

media.createVideoRecorder((error: BusinessError, video: media.VideoRecorder) => {
  if (video != null) {
    videoRecorder = video;
    console.info('video createVideoRecorder success');
  } else {
    console.error(`video createVideoRecorder fail, error message:${error.message}`);
  }
});

media.createVideoRecorder9+

createVideoRecorder(): Promise<VideoRecorder>

Creates a VideoRecorder instance. This API uses a promise to return the result. Only one VideoRecorder instance can be created per device.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<VideoRecorder>Promise used to return the result. If the operation is successful, a VideoRecorder instance is returned; otherwise, null is returned. The instance can be used to record video.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by promise.

Example

let videoRecorder: media.VideoRecorder;

media.createVideoRecorder().then((video: media.VideoRecorder) => {
  if (video != null) {
    videoRecorder = video;
    console.info('video createVideoRecorder success');
  } else {
    console.error('video createVideoRecorder fail');
  }
}).catch((error: Error) => {
  console.error(`video catchCallback, error message:${error.message}`);
});

media.createSoundPool10+

createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback<SoundPool>): void

Creates a SoundPool instance. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.SoundPool

Parameters

NameTypeMandatoryDescription
maxStreamsnumberYesMaximum number of streams that can be played by the SoundPool instance.
audioRenderInfoaudio.AudioRendererInfoYesAudio renderer parameters.
callbackAsyncCallback<SoundPool>YesCallback used to return the result. If the operation is successful, a SoundPool instance is returned; otherwise, null is returned. The instance is used for loading and playback.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by callback.

Example

let soundPool: media.SoundPool;
let audioRendererInfo: audio.AudioRendererInfo = {
  content : audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION
  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
  rendererFlags : 1
}

media.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => {
  if (error) {
    console.info(`createSoundPool failed`)
    return;
  } else {
    soundPool = soundPool_;
    console.info(`createSoundPool success`)
  }
});

media.createSoundPool10+

createSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise<SoundPool>

Creates a SoundPool instance. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.SoundPool

Parameters

NameTypeMandatoryDescription
maxStreamsnumberYesMaximum number of streams that can be played by the SoundPool instance.
audioRenderInfoaudio.AudioRendererInfoYesAudio renderer parameters.

Return value

TypeDescription
Promise<SoundPool>Promise used to return the result. If the operation is successful, a SoundPool instance is returned; otherwise, null is returned. The instance is used for loading and playback.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by promise.

Example

let soundPool: media.SoundPool;
let audioRendererInfo: audio.AudioRendererInfo = {
  content : audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION
  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
  rendererFlags : 1
}

media.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => {
  if (soundpool_ != null) {
    soundPool = soundpool_;
    console.info('create SoundPool success');
  } else {
    console.error('create SoundPool fail');
  }
}).catch((error) => {
  console.error(`soundpool catchCallback, error message:${error.message}`);
});

AVErrorCode9+

Enumerates the media error codes.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
AVERR_OK0The operation is successful.
AVERR_NO_PERMISSION201You do not have the permission to perform the operation.
AVERR_INVALID_PARAMETER401Invalid input parameter.
AVERR_UNSUPPORT_CAPABILITY801Unsupported API.
AVERR_NO_MEMORY5400101The system memory is insufficient or the number of services reaches the upper limit.
AVERR_OPERATE_NOT_PERMIT5400102The operation is not allowed in the current state or you do not have the permission to perform the operation.
AVERR_IO5400103The data stream is abnormal.
AVERR_TIMEOUT5400104The system or network response times out.
AVERR_SERVICE_DIED5400105The service process is dead.
AVERR_UNSUPPORT_FORMAT5400106The format of the media asset is not supported.

MediaType8+

Enumerates the media types.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
MEDIA_TYPE_AUD0Media.
MEDIA_TYPE_VID1Video.

CodecMimeType8+

Enumerates the codec MIME types.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
VIDEO_H263'video/h263'Video in H.263 format.
VIDEO_AVC'video/avc'Video in AVC format.
VIDEO_MPEG2'video/mpeg2'Video in MPEG-2 format.
VIDEO_MPEG4'video/mp4v-es'Video in MPEG-4 format.
VIDEO_VP8'video/x-vnd.on2.vp8'Video in VP8 format.
AUDIO_AAC'audio/mp4a-latm'Audio in MP4A-LATM format.
AUDIO_VORBIS'audio/vorbis'Audio in Vorbis format.
AUDIO_FLAC'audio/flac'Audio in FLAC format.

MediaDescriptionKey8+

Enumerates the media description keys.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
MD_KEY_TRACK_INDEX'track_index'Track index, which is a number.
MD_KEY_TRACK_TYPE'track_type'Track type, which is a number. For details, see MediaType.
MD_KEY_CODEC_MIME'codec_mime'Codec MIME type, which is a string.
MD_KEY_DURATION'duration'Media duration, which is a number, in units of ms.
MD_KEY_BITRATE'bitrate'Bit rate, which is a number, in units of bit/s.
MD_KEY_WIDTH'width'Video width, which is a number, in units of pixel.
MD_KEY_HEIGHT'height'Video height, which is a number, in units of pixel.
MD_KEY_FRAME_RATE'frame_rate'Video frame rate, which is a number, in units of 100 fps.
MD_KEY_AUD_CHANNEL_COUNT'channel_count'Number of audio channels, which is a number.
MD_KEY_AUD_SAMPLE_RATE'sample_rate'Sampling rate, which is a number, in units of Hz.

BufferingInfoType8+

Enumerates the buffering event types.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
BUFFERING_START1Buffering starts.
BUFFERING_END2Buffering ends.
BUFFERING_PERCENT3Buffering progress, in percent.
CACHED_DURATION4Cache duration, in ms.

StateChangeReason9+

Enumerates the reasons for the state transition of the AVPlayer or AVRecorder instance. The enum value is reported together with state.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
USER1State transition triggered by user behavior. It happens when a user or the client calls an API.
BACKGROUND2State transition caused by system behavior. For example, if an application does not have the permission of Media Controller, the application is forcibly suspended or stopped by the system when it switches to the background.

AVPlayer9+

A playback management class that provides APIs to manage and play media assets. Before calling any API in AVPlayer, you must use createAVPlayer() to create an AVPlayer instance.

For details about the audio and video playback demo, see Audio Playback and Video Playback.

Attributes

System capability: SystemCapability.Multimedia.Media.AVPlayer

NameTypeReadableWritableDescription
url9+stringYesYesURL of the media asset. It is a static attribute and can be set only when the AVPlayer is in the idle state.
The video formats MP4, MPEG-TS, WebM, and MKV are supported.
The audio formats M4A, AAC, MP3, OGG, WAV, and FLAC are supported.
Example of supported URLs:
1. FD: fd://xx

2. HTTP: http://xx
3. HTTPS: https://xx
4. HLS: http://xx or https://xx
fdSrc9+AVFileDescriptorYesYesFD of the media asset. It is a static attribute and can be set only when the AVPlayer is in the idle state.
This attribute is required when media assets of an application are continuously stored in a file.
The video formats MP4, MPEG-TS, WebM, and MKV are supported.
The audio formats M4A, AAC, MP3, OGG, WAV, and FLAC are supported.
Example:
Assume that a media file that stores continuous assets consists of the following:
Video 1 (address offset: 0, byte length: 100)
Video 2 (address offset: 101; byte length: 50)
Video 3 (address offset: 151, byte length: 150)
1. To play video 1: AVFileDescriptor {fd = resource handle; offset = 0; length = 100; }
2. To play video 2: AVFileDescriptor {fd = resource handle; offset = 101; length = 50; }
3. To play video 3: AVFileDescriptor {fd = resource handle; offset = 151; length = 150; }
To play an independent media file, use src=fd://xx.
dataSrc10+AVDataSrcDescriptorYesYesDescriptor of a streaming media asset. It is a static attribute and can be set only when the AVPlayer is in the idle state.
Use scenario: An application starts playing a media file while the file is still being downloaded from the remote to the local host.
The video formats MP4, MPEG-TS, WebM, and MKV are supported.
The audio formats M4A, AAC, MP3, OGG, WAV, and FLAC are supported.
Example:
A user is obtaining an audio and video file from a remote server and wants to play the downloaded file content. To implement this scenario, do as follows:
1. Obtain the total file size, in bytes. If the total size cannot be obtained, set fileSize to -1.
2. Implement the func callback to fill in data. If fileSize is -1, the format of func is func(buffer: ArrayBuffer, length: number), and the AVPlayer obtains data in sequence; otherwise, the format is func(buffer: ArrayBuffer, length: number, pos: number), and the AVPlayer seeks and obtains data in the required positions.
3. Set AVDataSrcDescriptor {fileSize = size, callback = func}.
Notes:
If the media file to play is in MP4/M4A format, ensure that the moov field (specifying the media information) is before the mdat field (specifying the media data) or the fields before the moov field is less than 10 MB. Otherwise, the parsing fails and the media file cannot be played.
surfaceId9+stringYesYesVideo window ID. By default, there is no video window. It is a static attribute and can be set only when the AVPlayer is in the initialized state.
It is used to render the window for video playback and therefore is not required in audio-only playback scenarios.
Example:
Create a surface ID through XComponent.
loop9+booleanYesYesWhether to loop playback. The value true means to loop playback, and false (default) means the opposite. It is a dynamic attribute
and can be set only when the AVPlayer is in the prepared, playing, paused, or completed state.
This setting is not supported in live mode.
videoScaleType9+VideoScaleTypeYesYesVideo scaling type. The default value is VIDEO_SCALE_TYPE_FIT_CROP. It is a dynamic attribute
and can be set only when the AVPlayer is in the prepared, playing, paused, or completed state.
audioInterruptMode9+audio.InterruptModeYesYesAudio interruption mode. The default value is SHARE_MODE. It is a dynamic attribute
and can be set only when the AVPlayer is in the prepared, playing, paused, or completed state.
audioRendererInfo10+audio.AudioRendererInfoYesYesAudio renderer information. The default values of content, usage, and rendererFlags are CONTENT_TYPE_MUSIC, STREAM_USAGE_MEDIA, and 0, respectively.
It can be set only when the AVPlayer is in the initialized state.
audioEffectMode10+audio.AudioEffectModeYesYesAudio effect mode. The audio effect mode is a dynamic attribute and is restored to the default value EFFECT_DEFAULT when content and usage of audioRendererInfo are changed. It can be set only when the AVPlayer is in the prepared, playing, paused, or completed state.
state9+AVPlayerStateYesNoAVPlayer state. It can be used as a query parameter when the AVPlayer is in any state.
currentTime9+numberYesNoCurrent video playback position, in ms. It can be used as a query parameter when the AVPlayer is in the prepared, playing, paused, or completed state.
The value -1 indicates an invalid value.
In live mode, -1 is returned by default.
duration9+numberYesNoVideo duration, in ms. It can be used as a query parameter when the AVPlayer is in the prepared, playing, paused, or completed state.
The value -1 indicates an invalid value.
In live mode, -1 is returned by default.
width9+numberYesNoVideo width, in pixels. It can be used as a query parameter when the AVPlayer is in the prepared, playing, paused, or completed state.
The value 0 indicates an invalid value.
height9+numberYesNoVideo height, in pixels. It can be used as a query parameter when the AVPlayer is in the prepared, playing, paused, or completed state.
The value 0 indicates an invalid value.

NOTE

After the resource handle (FD) is transferred to the AVPlayer, do not use the resource handle to perform read and write operations, including but not limited to transferring it to multiple AVPlayers. Competition occurs when multiple AVPlayers use the same resource handle to read and write files at the same time, resulting in playback errors.

on('stateChange')9+

on(type: 'stateChange', callback: (state: AVPlayerState, reason: StateChangeReason) => void): void

Subscribes to AVPlayer state changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'stateChange' in this case. This event can be triggered by both user operations and the system.
callbackfunctionYesCallback invoked when the event is triggered. It reports the following information:
state: AVPlayerState, indicating the AVPlayer state.
reason: StateChangeReason, indicating the reason for the state transition.

Example

// Create an AVPlayer instance.
let avPlayer = await media.createAVPlayer();

avPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
  switch (state) {
    case 'idle':
      console.info('state idle called')
      break;
    case 'initialized':
      console.info('initialized prepared called')
      break;
    case 'prepared':
      console.info('state prepared called')
      break;
    case 'playing':
      console.info('state playing called')
      break;
    case 'paused':
      console.info('state paused called')
      break;
    case 'completed':
      console.info('state completed called')
      break;
    case 'stopped':
      console.info('state stopped called')
      break;
    case 'released':
      console.info('state released called')
      break;
    case 'error':
      console.info('state error called')
      break;
    default:
      console.info('unkown state :' + state)
      break;
  }
})

off('stateChange')9+

off(type: 'stateChange'): void

Unsubscribes from AVPlayer state changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'stateChange' in this case.

Example

avPlayer.off('stateChange')

on('error')9+

on(type: 'error', callback: ErrorCallback): void

Subscribes to AVPlayer errors. This event is used only for error prompt and does not require the user to stop playback control. If the AVPlayer state is also switched to error, call reset() or release() to exit the playback.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case. This event can be triggered by both user operations and the system.
callbackfunctionYesCallback used to return the error code ID and error message.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
201Permission denied
401The parameter check failed.
801Capability not supported.
5400101No Memory.
5400102Operation not allowed.
5400103I/O error
5400104Time out
5400105Service Died.
5400106Unsupport Format.

Example

avPlayer.on('error', (error: BusinessError) => {
  console.error('error happened,and error message is :' + error.message)
  console.error('error happened,and error code is :' + error.code)
})

off('error')9+

off(type: 'error'): void

Unsubscribes from AVPlayer errors.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.

Example

avPlayer.off('error')

prepare9+

prepare(callback: AsyncCallback<void>): void

Prepares for audio and video playback. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the initialized state. The state changes can be detected by subscribing to the stateChange event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400106Unsupport format. Return by callback.

Example

avPlayer.prepare((err: BusinessError) => {
  if (err == null) {
    console.info('prepare success');
  } else {
    console.error('prepare filed,error message is :' + err.message)
  }
})

prepare9+

prepare(): Promise<void>

Prepares for audio and video playback. This API uses a promise to return the result. It can be called only when the AVPlayer is in the initialized state. The state changes can be detected by subscribing to the stateChange event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400106Unsupport format. Return by promise.

Example

avPlayer.prepare().then(() => {
  console.info('prepare success');
}, (err: BusinessError) => {
  console.error('prepare filed,error message is :' + err.message)
})

play9+

play(callback: AsyncCallback<void>): void

Starts to play an audio and video asset. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the prepared, paused, or completed state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.play((err: BusinessError) => {
  if (err == null) {
    console.info('play success');
  } else {
    console.error('play filed,error message is :' + err.message)
  }
})

play9+

play(): Promise<void>

Starts to play an audio and video asset. This API uses a promise to return the result. It can be called only when the AVPlayer is in the prepared, paused, or completed state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.play().then(() => {
  console.info('play success');
}, (err: BusinessError) => {
  console.error('play filed,error message is :' + err.message)
})

pause9+

pause(callback: AsyncCallback<void>): void

Pauses audio and video playback. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the playing state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.pause((err: BusinessError) => {
  if (err == null) {
    console.info('pause success');
  } else {
    console.error('pause filed,error message is :' + err.message)
  }
})

pause9+

pause(): Promise<void>

Pauses audio and video playback. This API uses a promise to return the result. It can be called only when the AVPlayer is in the playing state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.pause().then(() => {
  console.info('pause success');
}, (err: BusinessError) => {
  console.error('pause filed,error message is :' + err.message)
})

stop9+

stop(callback: AsyncCallback<void>): void

Stops audio and video playback. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the prepared, playing, paused, or completed state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.stop((err: BusinessError) => {
  if (err == null) {
    console.info('stop success');
  } else {
    console.error('stop filed,error message is :' + err.message)
  }
})

stop9+

stop(): Promise<void>

Stops audio and video playback. This API uses a promise to return the result. It can be called only when the AVPlayer is in the prepared, playing, paused, or completed state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.stop().then(() => {
  console.info('stop success');
}, (err: BusinessError) => {
  console.error('stop filed,error message is :' + err.message)
})

reset9+

reset(callback: AsyncCallback<void>): void

Resets audio and video playback. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the initialized, prepared, playing, paused, completed, stopped, or error state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.reset((err: BusinessError) => {
  if (err == null) {
    console.info('reset success');
  } else {
    console.error('reset filed,error message is :' + err.message)
  }
})

reset9+

reset(): Promise<void>

Resets audio and video playback. This API uses a promise to return the result. It can be called only when the AVPlayer is in the initialized, prepared, playing, paused, completed, stopped, or error state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.reset().then(() => {
  console.info('reset success');
}, (err: BusinessError) => {
  console.error('reset filed,error message is :' + err.message)
})

release9+

release(callback: AsyncCallback<void>): void

Releases the playback resources. This API uses an asynchronous callback to return the result. It can be called when the AVPlayer is in any state except released.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackfunctionYesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.release((err: BusinessError) => {
  if (err == null) {
    console.info('reset success');
  } else {
    console.error('release filed,error message is :' + err.message)
  }
})

release9+

release(): Promise<void>

Releases the playback resources. This API uses a promise to return the result. It can be called when the AVPlayer is in any state except released.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.release().then(() => {
  console.info('release success');
}, (err: BusinessError) => {
  console.error('release filed,error message is :' + err.message)
})

getTrackDescription9+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

Obtains the audio and video track information. This API uses an asynchronous callback to return the result. It can be called only when the AVPlayer is in the prepared, playing, or paused state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Array<MediaDescription>>YesCallback used to return a MediaDescription array, which records the audio and video track information.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.

Example

avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
  if ((arrList) != null) {
    console.info('getTrackDescription success');
  } else {
    console.log(`video getTrackDescription fail, error:${error}`);
  }
});

getTrackDescription9+

getTrackDescription(): Promise<Array<MediaDescription>>

Obtains the audio and video track information. This API uses a promise to return the result. It can be called only when the AVPlayer is in the prepared, playing, or paused state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Return value

TypeDescription
Promise<Array<MediaDescription>>Promise used to return a MediaDescription array, which records the audio and video track information.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.

Example

avPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
  console.info('getTrackDescription success');
}).catch((error: BusinessError) => {
  console.info(`video catchCallback, error:${error}`);
});

seek9+

seek(timeMs: number, mode?:SeekMode): void

Seeks to the specified playback position. This API can be called only when the AVPlayer is in the prepared, playing, paused, or completed state. You can check whether the seek operation takes effect by subscribing to the seekDone event. This API is not supported in live mode.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
timeMsnumberYesPosition to seek to, in ms. The value range is [0, duration].
modeSeekModeNoSeek mode based on the video I frame. The default value is SEEK_PREV_SYNC. Set this parameter only for video playback.

Example

let seekTime: number = 1000
avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)

on('seekDone')9+

on(type: 'seekDone', callback: Callback<number>): void

Subscribes to the event to check whether the seek operation takes effect.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'seekDone' in this case. This event is triggered each time seek() is called.
callbackCallback<number>YesCallback invoked when the event is triggered. It reports the time position requested by the user.
For video playback, SeekMode may cause the actual position to be different from that requested by the user. The exact position can be obtained from the currentTime attribute. The time in this callback only means that the requested seek operation is complete.

Example

avPlayer.on('seekDone', (seekDoneTime:number) => {
  console.info('seekDone success,and seek time is:' + seekDoneTime)
})

off('seekDone')9+

off(type: 'seekDone'): void

Unsubscribes from the event that checks whether the seek operation takes effect.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'seekDone' in this case.

Example

avPlayer.off('seekDone')

setSpeed9+

setSpeed(speed: PlaybackSpeed): void

Sets the playback speed. This API can be called only when the AVPlayer is in the prepared, playing, paused, or completed state. You can check whether the setting takes effect by subscribing to the speedDone event. This API is not supported in live mode.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
speedPlaybackSpeedYesPlayback speed to set.

Example

avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)

on('speedDone')9+

on(type: 'speedDone', callback: Callback<number>): void

Subscribes to the event to check whether the playback speed is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'speedDone' in this case. This event is triggered each time setSpeed() is called.
callbackCallback<number>YesCallback invoked when the event is triggered. It reports the speed set. For details, see PlaybackSpeed.

Example

avPlayer.on('speedDone', (speed:number) => {
  console.info('speedDone success,and speed value is:' + speed)
})

off('speedDone')9+

off(type: 'speedDone'): void

Unsubscribes from the event that checks whether the playback speed is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'speedDone' in this case.

Example

avPlayer.off('speedDone')

setBitrate9+

setBitrate(bitrate: number): void

Sets the bit rate, which is valid only for HTTP Live Streaming (HLS) streams. This API can be called only when the AVPlayer is in the prepared, playing, paused, or completed state. You can check whether the setting takes effect by subscribing to the bitrateDone event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
bitratenumberYesBit rate to set. You can obtain the available bit rates of the current HLS stream by subscribing to the availableBitrates event. If the bit rate to set is not in the list of the available bit rates, the AVPlayer selects from the list the minimum bit rate that is closed to the bit rate to set. If the length of the available bit rate list obtained through the event is 0, no bit rate can be set and the bitrateDone callback will not be triggered.

Example

let bitrate: number = 96000
avPlayer.setBitrate(bitrate)

on('bitrateDone')9+

on(type: 'bitrateDone', callback: Callback<number>): void

Subscribes to the event to check whether the bit rate is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bitrateDone' in this case. This event is triggered each time setBitrate() is called.
callbackfunctionYesCallback invoked when the event is triggered. It reports the effective bit rate.

Example

avPlayer.on('bitrateDone', (bitrate:number) => {
  console.info('bitrateDone success,and bitrate value is:' + bitrate)
})

off('bitrateDone')9+

off(type: 'bitrateDone'): void

Unsubscribes from the event that checks whether the bit rate is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bitrateDone' in this case.

Example

avPlayer.off('bitrateDone')

on('availableBitrates')9+

on(type: 'availableBitrates', callback: (bitrates: Array<number>) => void): void

Subscribes to available bit rates of HLS streams. This event is reported only after the AVPlayer switches to the prepared state.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'availableBitrates' in this case. This event is triggered once after the AVPlayer switches to the prepared state.
callbackfunctionYesCallback invoked when the event is triggered. It returns an array that holds the available bit rates. If the array length is 0, no bit rate can be set.

Example

avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
  console.info('availableBitrates success,and availableBitrates length is:' + bitrates.length)
})

off('availableBitrates')9+

off(type: 'availableBitrates'): void

Unsubscribes from available bit rates of HLS streams.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'availableBitrates' in this case.

Example

avPlayer.off('availableBitrates')

setVolume9+

setVolume(volume: number): void

Sets the volume. This API can be called only when the AVPlayer is in the prepared, playing, paused, or completed state. You can check whether the setting takes effect by subscribing to the volumeChange event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
volumenumberYesRelative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).

Example

let volume: number = 1.0
avPlayer.setVolume(volume)

on('volumeChange')9+

on(type: 'volumeChange', callback: Callback<number>): void

Subscribes to the event to check whether the volume is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'volumeChange' in this case. This event is triggered each time setVolume() is called.
callbackfunctionYesCallback invoked when the event is triggered. It reports the effective volume.

Example

avPlayer.on('volumeChange', (vol: number) => {
  console.info('volumeChange success,and new volume is :' + vol)
})

off('volumeChange')9+

off(type: 'volumeChange'): void

Unsubscribes from the event that checks whether the volume is successfully set.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'volumeChange' in this case.

Example

avPlayer.off('volumeChange')

on('endOfStream')9+

on(type: 'endOfStream', callback: Callback<void>): void

Subscribes to the event that indicates the end of the stream being played. If loop=1 is set, the AVPlayer seeks to the beginning of the stream and plays the stream again. If loop is not set, the completed state is reported through the stateChange event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'endOfStream' in this case. This event is triggered when the AVPlayer finishes playing the media asset.
callbackCallback<void>YesCallback invoked when the event is triggered.

Example

avPlayer.on('endOfStream', () => {
  console.info('endOfStream success')
})

off('endOfStream')9+

off(type: 'endOfStream'): void

Unsubscribes from the event that indicates the end of the stream being played.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'endOfStream' in this case.

Example

avPlayer.off('endOfStream')

on('timeUpdate')9+

on(type: 'timeUpdate', callback: Callback<number>): void

Subscribes to playback position changes. It is used to refresh the current position of the progress bar. By default, this event is reported every 1 second. However, it is reported immediately upon a successful seek operation. The 'timeUpdate' event is not supported in live mode.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'timeUpdate' in this case.
callbackfunctionYesCallback invoked when the event is triggered. It reports the current playback position, in ms.

Example

avPlayer.on('timeUpdate', (time:number) => {
  console.info('timeUpdate success,and new time is :' + time)
})

off('timeUpdate')9+

off(type: 'timeUpdate'): void

Unsubscribes from playback position changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'timeUpdate' in this case.

Example

avPlayer.off('timeUpdate')

on('durationUpdate')9+

on(type: 'durationUpdate', callback: Callback<number>): void

Subscribes to media asset duration changes. It is used to refresh the length of the progress bar. By default, this event is reported once when the AVPlayer switches to the prepared state. However, it can be repeatedly reported for special streams that trigger duration changes. The 'durationUpdate' event is not supported in live mode.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'durationUpdate' in this case.
callbackfunctionYesCallback invoked when the event is triggered. It reports the media asset duration, in ms.

Example

avPlayer.on('durationUpdate', (duration: number) => {
  console.info('durationUpdate success,new duration is :' + duration)
})

off('durationUpdate')9+

off(type: 'durationUpdate'): void

Unsubscribes from media asset duration changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'durationUpdate' in this case.

Example

avPlayer.off('durationUpdate')

on('bufferingUpdate')9+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

Subscribes to audio and video buffer changes. This subscription is supported only in network playback scenarios.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bufferingUpdate' in this case.
callbackfunctionYesCallback invoked when the event is triggered.
When BufferingInfoType is set to BUFFERING_PERCENT or CACHED_DURATION, value is valid. Otherwise, value is fixed at 0.

Example

avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
  console.info('bufferingUpdate success,and infoType value is:' + infoType + ', value is :' + value)
})

off('bufferingUpdate')9+

off(type: 'bufferingUpdate'): void

Unsubscribes from audio and video buffer changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bufferingUpdate' in this case.

Example

avPlayer.off('bufferingUpdate')

on('startRenderFrame')9+

on(type: 'startRenderFrame', callback: Callback<void>): void

Subscribes to the event that indicates rendering starts for the first frame. This subscription is supported only in the video playback scenarios. This event only means that the playback service sends the first frame to the display module. The actual rendering effect depends on the rendering performance of the display service.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'startRenderFrame' in this case.
callbackCallback<void>YesCallback invoked when the event is triggered.

Example

avPlayer.on('startRenderFrame', () => {
  console.info('startRenderFrame success')
})

off('startRenderFrame')9+

off(type: 'startRenderFrame'): void

Unsubscribes from the event that indicates rendering starts for the first frame.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'startRenderFrame' in this case.

Example

avPlayer.off('startRenderFrame')

on('videoSizeChange')9+

on(type: 'videoSizeChange', callback: (width: number, height: number) => void): void

Subscribes to video size (width and height) changes. This subscription is supported only in the video playback scenarios. By default, this event is reported only once in the prepared state. However, it is also reported upon resolution changes in the case of HLS streams.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'videoSizeChange' in this case.
callbackfunctionYesCallback invoked when the event is triggered. width indicates the video width, and height indicates the video height.

Example

avPlayer.on('videoSizeChange', (width: number, height: number) => {
  console.info('videoSizeChange success,and width is:' + width + ', height is :' + height)
})

off('videoSizeChange')9+

off(type: 'videoSizeChange'): void

Unsubscribes from video size changes.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'videoSizeChange' in this case.

Example

avPlayer.off('videoSizeChange')

on('audioInterrupt')9+

on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void

Subscribes to the audio interruption event. When multiple audio and video assets are played at the same time, this event is triggered based on the audio interruption mode audio.InterruptMode.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'audioInterrupt' in this case.
callbackaudio.InterruptEvent9+YesCallback invoked when the event is triggered.

Example

import audio from '@ohos.multimedia.audio';

avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
  console.info('audioInterrupt success,and InterruptEvent info is:' + info)
})

off('audioInterrupt')9+

off(type: 'audioInterrupt'): void

Unsubscribes from the audio interruption event.

System capability: SystemCapability.Multimedia.Media.AVPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'audioInterrupt' in this case.

Example

avPlayer.off('audioInterrupt')

AVPlayerState9+

Enumerates the states of the AVPlayer. Your application can proactively obtain the AVPlayer state through the state attribute or obtain the reported AVPlayer state by subscribing to the stateChange event. For details about the rules for state transition, see Audio Playback.

System capability: SystemCapability.Multimedia.Media.AVPlayer

NameTypeDescription
idlestringThe AVPlayer enters this state after createAVPlayer() or reset() is called.
In case createAVPlayer() is used, all attributes are set to their default values.
In case reset() is called, the url9+, fdSrc9+, or dataSrc10+ attribute and the loop attribute are reset, and other attributes are retained.
initializedstringThe AVPlayer enters this state after url9+ or fdSrc9+ attribute is set in the idle state. In this case, you can configure static attributes such as the window and audio.
preparedstringThe AVPlayer enters this state when prepare() is called in the initialized state. In this case, the playback engine has prepared the resources.
playingstringThe AVPlayer enters this state when play() is called in the prepared, paused, or completed state.
pausedstringThe AVPlayer enters this state when pause() is called in the playing state.
completedstringThe AVPlayer enters this state when a media asset finishes playing and loop playback is not set (no loop = 1). In this case, if play() is called, the AVPlayer enters the playing state and replays the media asset; if stop() is called, the AVPlayer enters the stopped state.
stoppedstringThe AVPlayer enters this state when stop() is called in the prepared, playing, paused, or completed state. In this case, the playback engine retains the attributes but releases the memory resources. You can call prepare() to prepare the resources again, call reset() to reset the attributes, or call release() to destroy the playback engine.
releasedstringThe AVPlayer enters this state when release() is called. The playback engine associated with the AVPlayer instance is destroyed, and the playback process ends. This is the final state.
errorstringThe AVPlayer enters this state when an irreversible error occurs in the playback engine. You can call reset() to reset the attributes or call release() to destroy the playback engine. For details on the errors, see Media Error Codes.
NOTE Relationship between the error state and the on('error') event
1. When the AVPlayer enters the error state, the on('error') event is triggered. You can obtain the detailed error information through this event.
2. When the AVPlayer enters the error state, the playback service stops. This requires the client to design a fault tolerance mechanism to call reset() or release().
3. The client receives on('error') event but the AVPlayer does not enter the error state. This situation occurs due to either of the following reasons:
Cause 1: The client calls an API in an incorrect state or passes in an incorrect parameter, and the AVPlayer intercepts the call. If this is the case, the client must correct its code logic.
Cause 2: A stream error is detected during playback. As a result, the container and decoding are abnormal for a short period of time, but continuous playback and playback control operations are not affected. If this is the case, the client does not need to design a fault tolerance mechanism.

AVFileDescriptor9+

Describes an audio and video file asset. It is used to specify a particular asset for playback based on its offset and length within a file.

System capability: SystemCapability.Multimedia.Media.Core

NameTypeMandatoryDescription
fdnumberYesResource handle, which is obtained by calling resourceManager.getRawFileDescriptor.
offsetnumberYesResource offset, which needs to be entered based on the preset asset information. An invalid value causes a failure to parse audio and video assets.
lengthnumberYesResource length, which needs to be entered based on the preset asset information. An invalid value causes a failure to parse audio and video assets.

AVDataSrcDescriptor10+

Defines the descriptor of an audio and video file, which is used in DataSource playback mode.
Use scenario: An application can create a playback instance and start playback before it finishes downloading the audio and video resources.

System capability: SystemCapability.Multimedia.Media.AVPlayer

NameTypeMandatoryDescription
fileSizenumberYesSize of the file to play, in bytes. The value -1 indicates that the size is unknown. If fileSize is set to -1, the playback mode is similar to the live mode. In this mode, the seek and setSpeed operations cannot be performed, and the loop attribute cannot be set, indicating that loop playback is unavailable.
callbackfunctionYesCallback used to fill in data.
- buffer: memory to be filled. The value is of the ArrayBuffer type. This parameter is mandatory.
- length: maximum length of the memory to be filled. The value is of the number type. This parameter is mandatory.
- pos: position of the data to be filled in the file. The value is of the number type. This parameter is optional. When fileSize is set to -1, this parameter cannot be used.

SeekMode8+

Enumerates the video playback seek modes, which can be passed in the seek API.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
SEEK_NEXT_SYNC0Seeks to the next key frame at the specified position. You are advised to use this value for the rewind operation.
SEEK_PREV_SYNC1Seeks to the previous key frame at the specified position. You are advised to use this value for the fast-forward operation.

PlaybackSpeed8+

Enumerates the video playback speeds, which can be passed in the setSpeed API.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

NameValueDescription
SPEED_FORWARD_0_75_X0Plays the video at 0.75 times the normal speed.
SPEED_FORWARD_1_00_X1Plays the video at the normal speed.
SPEED_FORWARD_1_25_X2Plays the video at 1.25 times the normal speed.
SPEED_FORWARD_1_75_X3Plays the video at 1.75 times the normal speed.
SPEED_FORWARD_2_00_X4Plays the video at 2.00 times the normal speed.

VideoScaleType9+

Enumerates the video scale modes.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

NameValueDescription
VIDEO_SCALE_TYPE_FIT0The video will be stretched to fit the window.
VIDEO_SCALE_TYPE_FIT_CROP1The video will be stretched to fit the window, without changing its aspect ratio. The content may be cropped.

MediaDescription8+

Defines media information in key-value mode.

System capability: SystemCapability.Multimedia.Media.Core

NameTypeMandatoryDescription
[key: string]ObjectYesFor details about the key range supported and the object type and range of each key, see MediaDescriptionKey.

Example

import media from '@ohos.multimedia.media'
function printfItemDescription(obj: media.MediaDescription, key: string) {
  let property: Object = obj[key];
  console.info('audio key is ' + key); // Specify a key. For details about the keys, see [MediaDescriptionKey].
  console.info('audio value is ' + property); // Obtain the value of the key. The value can be any type. For details about the types, see [MediaDescriptionKey].
}

avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
  if (arrList != null) {
    for (let i = 0; i < arrList.length; i++) {
      printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE);  // Print the MD_KEY_TRACK_TYPE value of each track.
    }
  } else {
    console.log(`audio getTrackDescription fail, error:${error}`);
  }
});

AVRecorder9+

A recording management class that provides APIs to record media assets. Before calling any API in AVRecorder, you must use createAVRecorder() to create an AVRecorder instance.

For details about the audio and video recording demo, see Audio Recording and Video Recording.

NOTE

To use the camera to record videos, the camera module is required. For details about how to use the APIs provided by the camera module, see Camera Management.

Attributes

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameTypeReadableWritableDescription
state9+AVRecorderStateYesNoAVRecorder state.

prepare9+

prepare(config: AVRecorderConfig, callback: AsyncCallback<void>): void

Sets audio and video recording parameters. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.MICROPHONE

This permission is required only if audio recording is involved.

To use the camera to record videos, the camera module is required. For details about how to obtain the permissions and use the APIs, see Camera Management.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
configAVRecorderConfigYesAudio and video recording parameters to set.
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
201Permission denied. Return by callback.
401Parameter error. Return by callback.
5400102Operate not permit. Return by callback.
5400105Service died. Return by callback.

Example

// Configure the parameters based on those supported by the hardware device.
let avRecorderProfile: media.AVRecorderProfile = {
  audioBitrate : 48000,
  audioChannels : 2,
  audioCodec : media.CodecMimeType.AUDIO_AAC,
  audioSampleRate : 48000,
  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
  videoBitrate : 2000000,
  videoCodec : media.CodecMimeType.VIDEO_AVC,
  videoFrameWidth : 640,
  videoFrameHeight : 480,
  videoFrameRate : 30
}
let avRecorderConfig: media.AVRecorderConfig = {
  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  profile : avRecorderProfile,
  url : 'fd://', // Before passing in an FD to this parameter, the file must be created by the caller and granted with the read and write permissions. Example value: fd://45.
  rotation: 0, // The value can be 0, 90, 180, or 270. If any other value is used, prepare() reports an error.
  location : { latitude : 30, longitude : 130 }
}

avRecorder.prepare(avRecorderConfig, (err: BusinessError) => {
  if (err == null) {
    console.info('prepare success');
  } else {
    console.error('prepare failed and error is ' + err.message);
  }
})

prepare9+

prepare(config: AVRecorderConfig): Promise<void>

Sets audio and video recording parameters. This API uses a promise to return the result.

Required permissions: ohos.permission.MICROPHONE

This permission is required only if audio recording is involved.

To use the camera to record videos, the camera module is required. For details about how to obtain the permissions and use the APIs, see Camera Management.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
configAVRecorderConfigYesAudio and video recording parameters to set.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
201Permission denied. Return by promise.
401Parameter error. Return by promise.
5400102Operate not permit. Return by promise.
5400105Service died. Return by promise.

Example

// Configure the parameters based on those supported by the hardware device.
let avRecorderProfile: media.AVRecorderProfile = {
  audioBitrate : 48000,
  audioChannels : 2,
  audioCodec : media.CodecMimeType.AUDIO_AAC,
  audioSampleRate : 48000,
  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
  videoBitrate : 2000000,
  videoCodec : media.CodecMimeType.VIDEO_AVC,
  videoFrameWidth : 640,
  videoFrameHeight : 480,
  videoFrameRate : 30
}
let avRecorderConfig: media.AVRecorderConfig = {
  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  profile : avRecorderProfile,
  url : 'fd://', // Before passing in an FD to this parameter, the file must be created by the caller and granted with the read and write permissions. Example value: fd://45.
  rotation: 0, // The value can be 0, 90, 180, or 270. If any other value is used, prepare() reports an error.
  location : { latitude : 30, longitude : 130 }
}

avRecorder.prepare(avRecorderConfig).then(() => {
  console.info('prepare success');
}).catch((err: Error) => {
  console.error('prepare failed and catch error is ' + err.message);
});

getInputSurface9+

getInputSurface(callback: AsyncCallback<string>): void

Obtains the surface required for recording. This API uses an asynchronous callback to return the result. The caller obtains the surfaceBuffer from this surface and fills in the corresponding video data.

Note that the video data must carry the timestamp (in ns) and buffer size, and the start time of the timestamp must be based on the system startup time.

This API can be called only after the prepare() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<string>YesCallback used to obtain the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

let surfaceID: string; // The surfaceID is transferred to the camera API to create a videoOutput instance.

avRecorder.getInputSurface((err: BusinessError, surfaceId: string) => {
  if (err == null) {
    console.info('getInputSurface success');
    surfaceID = surfaceId;
  } else {
    console.error('getInputSurface failed and error is ' + err.message);
  }
});

getInputSurface9+

getInputSurface(): Promise<string>

Obtains the surface required for recording. This API uses a promise to return the result. The caller obtains the surfaceBuffer from this surface and fills in the corresponding video data.

Note that the video data must carry the timestamp (in ns) and buffer size, and the start time of the timestamp must be based on the system startup time.

This API can be called only after the prepare() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<string>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

let surfaceID: string; // The surfaceID is transferred to the camera API to create a videoOutput instance.

avRecorder.getInputSurface().then((surfaceId: string) => {
  console.info('getInputSurface success');
  surfaceID = surfaceId;
}).catch((err: Error) => {
  console.error('getInputSurface failed and catch error is ' + err.message);
});

start9+

start(callback: AsyncCallback<void>): void

Starts recording. This API uses an asynchronous callback to return the result.

For audio-only recording, this API can be called only after the prepare() API is called. For video-only recording, this API can be called only after the getInputSurface() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.start((err: BusinessError) => {
  if (err == null) {
    console.info('start AVRecorder success');
  } else {
    console.error('start AVRecorder failed and error is ' + err.message);
  }
});

start9+

start(): Promise<void>

Starts recording. This API uses a promise to return the result.

For audio-only recording, this API can be called only after the prepare() API is called. For video-only recording, this API can be called only after the getInputSurface() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

avRecorder.start().then(() => {
  console.info('start AVRecorder success');
}).catch((err: Error) => {
  console.error('start AVRecorder failed and catch error is ' + err.message);
});

pause9+

pause(callback: AsyncCallback<void>): void

Pauses recording. This API uses an asynchronous callback to return the result.

This API can be called only after the start() API is called. You can call resume() to resume recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to obtain the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.pause((err: BusinessError) => {
  if (err == null) {
    console.info('pause AVRecorder success');
  } else {
    console.error('pause AVRecorder failed and error is ' + err.message);
  }
});

pause9+

pause(): Promise<void>

Pauses recording. This API uses a promise to return the result.

This API can be called only after the start() API is called. You can call resume() to resume recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

avRecorder.pause().then(() => {
  console.info('pause AVRecorder success');
}).catch((err: Error) => {
  console.error('pause AVRecorder failed and catch error is ' + err.message);
});

resume9+

resume(callback: AsyncCallback<void>): void

Resumes recording. This API uses an asynchronous callback to return the result.

This API can be called only after the pause() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.resume((err: BusinessError) => {
  if (err == null) {
    console.info('resume AVRecorder success');
  } else {
    console.error('resume AVRecorder failed and error is ' + err.message);
  }
});

resume9+

resume(): Promise<void>

Resumes recording. This API uses a promise to return the result.

This API can be called only after the pause() API is called.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

avRecorder.resume().then(() => {
  console.info('resume AVRecorder success');
}).catch((err: Error) => {
  console.error('resume AVRecorder failed and catch error is ' + err.message);
});

stop9+

stop(callback: AsyncCallback<void>): void

Stops recording. This API uses an asynchronous callback to return the result.

This API can be called only after the start() or pause() API is called.

For audio-only recording, you can call prepare() again for re-recording. For video-only recording or audio and video recording, you can call prepare() and getInputSurface() again for re-recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.stop((err: BusinessError) => {
  if (err == null) {
    console.info('stop AVRecorder success');
  } else {
    console.error('stop AVRecorder failed and error is ' + err.message);
  }
});

stop9+

stop(): Promise<void>

Stops recording. This API uses a promise to return the result.

This API can be called only after the start() or pause() API is called.

For audio-only recording, you can call prepare() again for re-recording. For video-only recording or audio and video recording, you can call prepare() and getInputSurface() again for re-recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

avRecorder.stop().then(() => {
  console.info('stop AVRecorder success');
}).catch((err: Error) => {
  console.error('stop AVRecorder failed and catch error is ' + err.message);
});

reset9+

reset(callback: AsyncCallback<void>): void

Resets audio and video recording. This API uses an asynchronous callback to return the result.

For audio-only recording, you can call prepare() again for re-recording. For video-only recording or audio and video recording, you can call prepare() and getInputSurface() again for re-recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.reset((err: BusinessError) => {
  if (err == null) {
    console.info('reset AVRecorder success');
  } else {
    console.error('reset AVRecorder failed and error is ' + err.message);
  }
});

reset9+

reset(): Promise<void>

Resets audio and video recording. This API uses a promise to return the result.

For audio-only recording, you can call prepare() again for re-recording. For video-only recording or audio and video recording, you can call prepare() and getInputSurface() again for re-recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103IO error. Return by promise.
5400105Service died. Return by promise.

Example

avRecorder.reset().then(() => {
  console.info('reset AVRecorder success');
}).catch((err: Error) => {
  console.error('reset AVRecorder failed and catch error is ' + err.message);
});

release9+

release(callback: AsyncCallback<void>): void

Releases the audio and video recording resources. This API uses an asynchronous callback to return the result.

After the resources are released, you can no longer perform any operation on the AVRecorder instance.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400105Service died. Return by callback.

Example

avRecorder.release((err: BusinessError) => {
  if (err == null) {
    console.info('release AVRecorder success');
  } else {
    console.error('release AVRecorder failed and error is ' + err.message);
  }
});

release9+

release(): Promise<void>

Releases the audio and video recording resources. This API uses a promise to return the result.

After the resources are released, you can no longer perform any operation on the AVRecorder instance.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400105Service died. Return by callback.

Example

avRecorder.release().then(() => {
  console.info('release AVRecorder success');
}).catch((err: Error) => {
  console.error('release AVRecorder failed and catch error is ' + err.message);
});

on('stateChange')9+

on(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void

Subscribes to AVRecorder state changes. An application can subscribe to only one AVRecorder state change event. When the application initiates multiple subscriptions to this event, the last subscription prevails.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'stateChange' in this case. This event can be triggered by both user operations and the system.
callbackfunctionYesCallback invoked when the event is triggered. It reports the following information:
state: AVRecorderState, indicating the AVRecorder state.
reason: StateChangeReason, indicating the reason for the state transition.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103IO error. Return by callback.
5400105Service died. Return by callback.

Example

avRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => {
  console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
});

off('stateChange')9+

off(type: 'stateChange'): void

Unsubscribes from AVRecorder state changes.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'stateChange' in this case. This event can be triggered by both user operations and the system.

Example

avRecorder.off('stateChange');

on('error')9+

on(type: 'error', callback: ErrorCallback): void

Subscribes to AVRecorder errors. This event is used only for error prompt and does not require the user to stop recording control. If the AVRecorderState is also switched to error, call reset() or release() to exit the recording.

An application can subscribe to only one AVRecorder error event. When the application initiates multiple subscriptions to this event, the last subscription prevails.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during recording.
callbackErrorCallbackYesCallback invoked when the event is triggered.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400101No memory. Return by callback.
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400104Time out. Return by callback.
5400105Service died. Return by callback.
5400106Unsupport format. Return by callback.

Example

avRecorder.on('error', (err: BusinessError) => {
  console.error('case avRecorder.on(error) called, errMessage is ' + err.message);
});

off('error')9+

off(type: 'error'): void

Unsubscribes from AVRecorder errors. After the unsubscription, your application can no longer receive AVRecorder errors.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during recording.

Example

avRecorder.off('error');

AVRecorderState9+

Enumerates the AVRecorder states. You can obtain the state through the state attribute.

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameTypeDescription
idlestringThe AVRecorder enters this state after it is just created or the AVRecorder.reset() API is called when the AVRecorder is in any state except released. In this state, you can call AVRecorder.prepare() to set recording parameters.
preparedstringThe AVRecorder enters this state when the parameters are set. In this state, you can call AVRecorder.start() to start recording.
startedstringThe AVRecorder enters this state when the recording starts. In this state, you can call AVRecorder.pause() to pause recording or call AVRecorder.stop() to stop recording.
pausedstringThe AVRecorder enters this state when the recording is paused. In this state, you can call AVRecorder.resume() to continue recording or call AVRecorder.stop() to stop recording.
stoppedstringThe AVRecorder enters this state when the recording stops. In this state, you can call AVRecorder.prepare() to set recording parameters so that the AVRecorder enters the prepared state again.
releasedstringThe AVRecorder enters this state when the recording resources are released. In this state, no operation can be performed. In any other state, you can call AVRecorder.release() to enter the released state.
errorstringThe AVRecorder enters this state when an irreversible error occurs in the AVRecorder instance. In this state, the AVRecorder.on('error') event is reported, with the detailed error cause. In the error state, you must call AVRecorder.reset() to reset the AVRecorder instance or call AVRecorder.release() to release the resources.

AVRecorderConfig9+

Describes the audio and video recording parameters.

The audioSourceType and videoSourceType parameters are used to distinguish audio-only recording, video-only recording, and audio and video recording. For audio-only recording, set only audioSourceType. For video-only recording, set only videoSourceType. For audio and video recording, set both audioSourceType and videoSourceType.

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameTypeMandatoryDescription
audioSourceTypeAudioSourceTypeNoType of the audio source to record. This parameter is mandatory for audio recording.
videoSourceTypeVideoSourceTypeNoType of the video source to record. This parameter is mandatory for video recording.
profileAVRecorderProfileYesRecording profile. This parameter is mandatory.
urlstringYesRecording output URL: fd://xx (fd number).
img
This parameter is mandatory.
rotationnumberNoRotation angle of the recorded video. The value can only be 0 (default), 90, 180, or 270.
locationLocationNoGeographical location of the recorded video. By default, the geographical location information is not recorded.

AVRecorderProfile9+

Describes the audio and video recording profile.

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameTypeMandatoryDescription
audioBitratenumberNoAudio encoding bit rate. This parameter is mandatory for audio recording. The value range is [8000 - 384000].
audioChannelsnumberNoNumber of audio channels. This parameter is mandatory for audio recording. The value range is [1 - 2].
audioCodecCodecMimeTypeNoAudio encoding format. This parameter is mandatory for audio recording. Only AUDIO_AAC is supported.
audioSampleRatenumberNoAudio sampling rate. This parameter is mandatory for audio recording. The value range is [8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 96000].
fileFormatContainerFormatTypeYesContainer format of a file. This parameter is mandatory.
videoBitratenumberNoVideo encoding bit rate. This parameter is mandatory for video recording. The value range is [1 - 3000000].
videoCodecCodecMimeTypeNoVideo encoding format. This parameter is mandatory for video recording. Only VIDEO_MPEG4 is supported.
videoFrameWidthnumberNoWidth of a video frame. This parameter is mandatory for video recording. The value range is [2 - 1920].
videoFrameHeightnumberNoHeight of a video frame. This parameter is mandatory for video recording. The value range is [2 - 1080].
videoFrameRatenumberNoVideo frame rate. This parameter is mandatory for video recording. The value range is [1 - 30].

AudioSourceType9+

Enumerates the audio source types for video recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameValueDescription
AUDIO_SOURCE_TYPE_DEFAULT0Default audio input source.
AUDIO_SOURCE_TYPE_MIC1Mic audio input source.

VideoSourceType9+

Enumerates the video source types for video recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

NameValueDescription
VIDEO_SOURCE_TYPE_SURFACE_YUV0The input surface carries raw data.
VIDEO_SOURCE_TYPE_SURFACE_ES1The input surface carries ES data.

ContainerFormatType8+

Enumerates the container format types (CFTs).

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
CFT_MPEG_4'mp4'Video container format MP4.
CFT_MPEG_4A'm4a'Audio container format M4A.

Location

Describes the geographical location of the recorded video.

System capability: SystemCapability.Multimedia.Media.Core

NameTypeMandatoryDescription
latitudenumberYesLatitude of the geographical location.
longitudenumberYesLongitude of the geographical location.

VideoRecorder9+

NOTE

This class is deprecated after AVRecorder9+ is released. You are advised to use AVRecorder instead.

Implements video recording. Before calling any API in the VideoRecorder class, you must use createVideoRecorder() to create a VideoRecorder instance.

Attributes

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

NameTypeReadableWritableDescription
state9+VideoRecordStateYesNoVideo recording state.

prepare9+

prepare(config: VideoRecorderConfig, callback: AsyncCallback<void>): void

Sets video recording parameters. This API uses an asynchronous callback to return the result.

Required permissions: ohos.permission.MICROPHONE

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
configVideoRecorderConfigYesVideo recording parameters to set.
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
201Permission denied. Return by callback.
401Parameter error. Return by callback.
5400102Operation not allowed. Return by callback.
5400105Service died. Return by callback.

Example

// Configure the parameters based on those supported by the hardware device.
let videoProfile: media.VideoRecorderProfile = {
  audioBitrate : 48000,
  audioChannels : 2,
  audioCodec : 'audio/mp4a-latm',
  audioSampleRate : 48000,
  fileFormat : 'mp4',
  videoBitrate : 2000000,
  videoCodec : 'video/avc',
  videoFrameWidth : 640,
  videoFrameHeight : 480,
  videoFrameRate : 30
}

let videoConfig: media.VideoRecorderConfig = {
  audioSourceType : 1,
  videoSourceType : 0,
  profile : videoProfile,
  url : 'fd://xx',   // The file must be created by the caller and granted with proper permissions.
  orientationHint : 0,
  location : { latitude : 30, longitude : 130 },
}

// asyncallback
videoRecorder.prepare(videoConfig, (err: BusinessError) => {
  if (err == null) {
    console.info('prepare success');
  } else {
    console.error('prepare failed and error is ' + err.message);
  }
})

prepare9+

prepare(config: VideoRecorderConfig): Promise<void>

Sets video recording parameters. This API uses a promise to return the result.

Required permissions: ohos.permission.MICROPHONE

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
configVideoRecorderConfigYesVideo recording parameters to set.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
201Permission denied. Return by promise.
401Parameter error. Return by promise.
5400102Operation not allowed. Return by promise.
5400105Service died. Return by promise.

Example

// Configure the parameters based on those supported by the hardware device.
let videoProfile: media.VideoRecorderProfile = {
  audioBitrate : 48000,
  audioChannels : 2,
  audioCodec : 'audio/mp4a-latm',
  audioSampleRate : 48000,
  fileFormat : 'mp4',
  videoBitrate : 2000000,
  videoCodec : 'video/avc',
  videoFrameWidth : 640,
  videoFrameHeight : 480,
  videoFrameRate : 30
}

let videoConfig: media.VideoRecorderConfig = {
  audioSourceType : 1,
  videoSourceType : 0,
  profile : videoProfile,
  url : 'fd://xx',   // The file must be created by the caller and granted with proper permissions.
  orientationHint : 0,
  location : { latitude : 30, longitude : 130 },
}

// promise
videoRecorder.prepare(videoConfig).then(() => {
  console.info('prepare success');
}).catch((err: Error) => {
  console.error('prepare failed and catch error is ' + err.message);
});

getInputSurface9+

getInputSurface(callback: AsyncCallback<string>): void

Obtains the surface required for recording. This API uses an asynchronous callback to return the result. The caller obtains the surfaceBuffer from this surface and fills in the corresponding data.

Note that the video data must carry the timestamp (in ns) and buffer size, and the start time of the timestamp must be based on the system startup time.

This API can be called only after prepare() is called.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<string>YesCallback used to obtain the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
let surfaceID: string;                                               // Surface ID passed to the external system.
videoRecorder.getInputSurface((err: BusinessError, surfaceId: string) => {
  if (err == null) {
    console.info('getInputSurface success');
    surfaceID = surfaceId;
  } else {
    console.error('getInputSurface failed and error is ' + err.message);
  }
});

getInputSurface9+

getInputSurface(): Promise<string>;

Obtains the surface required for recording. This API uses a promise to return the result. The caller obtains the surfaceBuffer from this surface and fills in the corresponding data.

Note that the video data must carry the timestamp (in ns) and buffer size, and the start time of the timestamp must be based on the system startup time.

This API can be called only after prepare() is called.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<string>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
let surfaceID: string;                                               // Surface ID passed to the external system.
videoRecorder.getInputSurface().then((surfaceId: string) => {
  console.info('getInputSurface success');
  surfaceID = surfaceId;
}).catch((err: Error) => {
  console.error('getInputSurface failed and catch error is ' + err.message);
});

start9+

start(callback: AsyncCallback<void>): void

Starts recording. This API uses an asynchronous callback to return the result.

This API can be called only after prepare() and getInputSurface() are called, because the data source must pass data to the surface first.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.start((err: BusinessError) => {
  if (err == null) {
    console.info('start videorecorder success');
  } else {
    console.error('start videorecorder failed and error is ' + err.message);
  }
});

start9+

start(): Promise<void>

Starts recording. This API uses a promise to return the result.

This API can be called only after prepare() and getInputSurface() are called, because the data source must pass data to the surface first.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
videoRecorder.start().then(() => {
  console.info('start videorecorder success');
}).catch((err: Error) => {
  console.error('start videorecorder failed and catch error is ' + err.message);
});

pause9+

pause(callback: AsyncCallback<void>): void

Pauses recording. This API uses an asynchronous callback to return the result.

This API can be called only after start() is called. You can resume recording by calling resume().

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.pause((err: BusinessError) => {
  if (err == null) {
    console.info('pause videorecorder success');
  } else {
    console.error('pause videorecorder failed and error is ' + err.message);
  }
});

pause9+

pause(): Promise<void>

Pauses recording. This API uses a promise to return the result.

This API can be called only after start() is called. You can resume recording by calling resume().

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
videoRecorder.pause().then(() => {
  console.info('pause videorecorder success');
}).catch((err: Error) => {
  console.error('pause videorecorder failed and catch error is ' + err.message);
});

resume9+

resume(callback: AsyncCallback<void>): void

Resumes recording. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.resume((err: Error) => {
  if (err == null) {
    console.info('resume videorecorder success');
  } else {
    console.error('resume videorecorder failed and error is ' + err.message);
  }
});

resume9+

resume(): Promise<void>

Resumes recording. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
videoRecorder.resume().then(() => {
  console.info('resume videorecorder success');
}).catch((err: Error) => {
  console.error('resume videorecorder failed and catch error is ' + err.message);
});

stop9+

stop(callback: AsyncCallback<void>): void

Stops recording. This API uses an asynchronous callback to return the result.

To start another recording, you must call prepare() and getInputSurface() again.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.stop((err: BusinessError) => {
  if (err == null) {
    console.info('stop videorecorder success');
  } else {
    console.error('stop videorecorder failed and error is ' + err.message);
  }
});

stop9+

stop(): Promise<void>

Stops recording. This API uses a promise to return the result.

To start another recording, you must call prepare() and getInputSurface() again.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
videoRecorder.stop().then(() => {
  console.info('stop videorecorder success');
}).catch((err: Error) => {
  console.error('stop videorecorder failed and catch error is ' + err.message);
});

release9+

release(callback: AsyncCallback<void>): void

Releases the video recording resources. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.release((err: BusinessError) => {
  if (err == null) {
    console.info('release videorecorder success');
  } else {
    console.error('release videorecorder failed and error is ' + err.message);
  }
});

release9+

release(): Promise<void>

Releases the video recording resources. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400105Service died. Return by callback.

Example

// promise
videoRecorder.release().then(() => {
  console.info('release videorecorder success');
}).catch((err: Error) => {
  console.error('release videorecorder failed and catch error is ' + err.message);
});

reset9+

reset(callback: AsyncCallback<void>): void

Resets video recording. This API uses an asynchronous callback to return the result.

To start another recording, you must call prepare() and getInputSurface() again.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// asyncallback
videoRecorder.reset((err: BusinessError) => {
  if (err == null) {
    console.info('reset videorecorder success');
  } else {
    console.error('reset videorecorder failed and error is ' + err.message);
  }
});

reset9+

reset(): Promise<void>

Resets video recording. This API uses a promise to return the result.

To start another recording, you must call prepare() and getInputSurface() again.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

Example

// promise
videoRecorder.reset().then(() => {
  console.info('reset videorecorder success');
}).catch((err: Error) => {
  console.error('reset videorecorder failed and catch error is ' + err.message);
});

on('error')9+

on(type: 'error', callback: ErrorCallback): void

Subscribes to video recording error events. After an error event is reported, you must handle the event and exit the recording.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during video recording.
callbackErrorCallbackYesCallback invoked when the event is triggered.

Error codes

For details about the error codes, see Media Error Codes.

IDError Message
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

Example

// This event is reported when an error occurs during the retrieval of videoRecordState.
videoRecorder.on('error', (error: Error) => {                                  // Set the 'error' event callback.
  console.error(`audio error called, error: ${error}`);
})

VideoRecordState9+

Enumerates the video recording states. You can obtain the state through the state attribute.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

NameTypeDescription
idlestringThe video recorder is idle.
preparedstringThe video recording parameters are set.
playingstringVideo recording is in progress.
pausedstringVideo recording is paused.
stoppedstringVideo recording is stopped.
errorstringVideo recording is in the error state.

VideoRecorderConfig9+

Describes the video recording parameters.

The audioSourceType and videoSourceType parameters are used to distinguish video-only recording from audio and video recording. (For audio-only recording, use AVRecorder or AudioRecorder.) For video-only recording, set only videoSourceType. For audio and video recording, set both audioSourceType and videoSourceType.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

NameTypeMandatoryDescription
audioSourceTypeAudioSourceTypeNoType of the audio source for video recording. This parameter is mandatory for audio recording.
videoSourceTypeVideoSourceTypeYesType of the video source for video recording.
profileVideoRecorderProfileYesVideo recording profile.
rotationnumberNoRotation angle of the recorded video. The value can only be 0 (default), 90, 180, or 270.
locationLocationNoGeographical location of the recorded video. By default, the geographical location information is not recorded.
urlstringYesVideo output URL. Supported: fd://xx (fd number)

VideoRecorderProfile9+

Describes the video recording profile.

System capability: SystemCapability.Multimedia.Media.VideoRecorder

System API: This is a system API.

NameTypeMandatoryDescription
audioBitratenumberNoAudio encoding bit rate. This parameter is mandatory for audio recording.
audioChannelsnumberNoNumber of audio channels. This parameter is mandatory for audio recording.
audioCodecCodecMimeTypeNoAudio encoding format. This parameter is mandatory for audio recording.
audioSampleRatenumberNoAudio sampling rate. This parameter is mandatory for audio recording.
fileFormatContainerFormatTypeYesContainer format of a file.
videoBitratenumberYesVideo encoding bit rate.
videoCodecCodecMimeTypeYesVideo encoding format.
videoFrameWidthnumberYesWidth of the recorded video frame.
videoFrameHeightnumberYesHeight of the recorded video frame.
videoFrameRatenumberYesVideo frame rate.

media.createAudioPlayer(deprecated)

createAudioPlayer(): AudioPlayer

Creates an AudioPlayer instance in synchronous mode.

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use createAVPlayer instead.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Return value

TypeDescription
AudioPlayerIf the operation is successful, an AudioPlayer instance is returned; otherwise, null is returned. After the instance is created, you can start, pause, or stop audio playback.

Example

let audioPlayer: media.AudioPlayer = media.createAudioPlayer();

media.createVideoPlayer(deprecated)

createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void

Creates a VideoPlayer instance. This API uses an asynchronous callback to return the result.

NOTE

This API is supported since API version 8 and deprecated since API version 9. You are advised to use createAVPlayer instead.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<VideoPlayer>YesCallback used to return the result. If the operation is successful, a VideoPlayer instance is returned; otherwise, null is returned. The instance can be used to manage and play video.

Example

import { BusinessError } from '@ohos.base';

let videoPlayer: media.VideoPlayer;
media.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
  if (video != null) {
    videoPlayer = video;
    console.info('video createVideoPlayer success');
  } else {
    console.error(`video createVideoPlayer fail, error:${error}`);
  }
});

media.createVideoPlayer(deprecated)

createVideoPlayer(): Promise<VideoPlayer>

Creates a VideoPlayer instance. This API uses a promise to return the result.

NOTE

This API is supported since API version 8 and deprecated since API version 9. You are advised to use createAVPlayer instead.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<VideoPlayer>Promise used to return the result. If the operation is successful, a VideoPlayer instance is returned; otherwise, null is returned. The instance can be used to manage and play video.

Example

import { BusinessError } from '@ohos.base';

let videoPlayer: media.VideoPlayer;
media.createVideoPlayer().then((video: media.VideoPlayer) => {
  if (video != null) {
    videoPlayer = video;
    console.info('video createVideoPlayer success');
  } else {
    console.error('video createVideoPlayer fail');
  }
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

media.createAudioRecorder(deprecated)

createAudioRecorder(): AudioRecorder

Creates an AudioRecorder instance to control audio recording. Only one AudioRecorder instance can be created per device.

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use createAVRecorder instead.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Return value

TypeDescription
AudioRecorderIf the operation is successful, an AudioRecorder instance is returned; otherwise, null is returned. The instance can be used to record audio.

Example

let audioRecorder: media.AudioRecorder = media.createAudioRecorder();

MediaErrorCode(deprecated)

Enumerates the media error codes.

NOTE

This enum is supported since API version 8 and deprecated since API version 9. You are advised to use Media Error Codes instead.

System capability: SystemCapability.Multimedia.Media.Core

NameValueDescription
MSERR_OK0The operation is successful.
MSERR_NO_MEMORY1Failed to allocate memory. The system may have no available memory.
MSERR_OPERATION_NOT_PERMIT2No permission to perform the operation.
MSERR_INVALID_VAL3Invalid input parameter.
MSERR_IO4An I/O error occurs.
MSERR_TIMEOUT5The operation times out.
MSERR_UNKNOWN6An unknown error occurs.
MSERR_SERVICE_DIED7Invalid server.
MSERR_INVALID_STATE8The operation is not allowed in the current state.
MSERR_UNSUPPORTED9The operation is not supported in the current version.

AudioPlayer(deprecated)

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use AVPlayer instead.

Provides APIs to manage and play audio. Before calling any API in AudioPlayer, you must use createAudioPlayer() to create an AudioPlayer instance.

Attributes

System capability: SystemCapability.Multimedia.Media.AudioPlayer

NameTypeReadableWritableDescription
srcstringYesYesAudio file URI. The mainstream audio formats (M4A, AAC, MP3, OGG, and WAV) are supported.
Example of supported URLs:
1. FD: fd://xx

2. HTTP: http://xx
3. HTTPS: https://xx
4. HLS: http://xx or https://xx
Required permissions: ohos.permission.READ_MEDIA or ohos.permission.INTERNET
fdSrc9+AVFileDescriptorYesYesDescription of the audio file. This attribute is required when audio assets of an application are continuously stored in a file.
Example:
Assume that a music file that stores continuous music assets consists of the following:
Music 1 (address offset: 0, byte length: 100)
Music 2 (address offset: 101; byte length: 50)
Music 3 (address offset: 151, byte length: 150)
1. To play music 1: AVFileDescriptor {fd = resource handle; offset = 0; length = 100; }
2. To play music 2: AVFileDescriptor {fd = resource handle; offset = 101; length = 50; }
3. To play music 3: AVFileDescriptor {fd = resource handle; offset = 151; length = 150; }
To play an independent music file, use src=fd://xx.
loopbooleanYesYesWhether to loop audio playback. The value true means to loop audio playback, and false means the opposite.
audioInterruptMode9+audio.InterruptModeYesYesAudio interruption mode.
currentTimenumberYesNoCurrent audio playback position, in ms.
durationnumberYesNoAudio duration, in ms.
stateAudioStateYesNoAudio playback state. This state cannot be used as the condition for triggering the call of play(), pause(), or stop().

play

play(): void

Starts to play an audio asset. This API can be called only after the 'dataLoad' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Example

audioPlayer.on('play', () => {    // Set the 'play' event callback.
  console.log('audio play success');
});
audioPlayer.play();

pause

pause(): void

Pauses audio playback.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Example

audioPlayer.on('pause', () => {    // Set the 'pause' event callback.
  console.log('audio pause success');
});
audioPlayer.pause();

stop

stop(): void

Stops audio playback.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Example

audioPlayer.on('stop', () => {    // Set the 'stop' event callback.
  console.log('audio stop success');
});
audioPlayer.stop();

reset7+

reset(): void

Resets the audio asset to be played.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Example

audioPlayer.on('reset', () => {    // Set the 'reset' event callback.
  console.log('audio reset success');
});
audioPlayer.reset();

seek

seek(timeMs: number): void

Seeks to the specified playback position.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
timeMsnumberYesPosition to seek to, in ms. The value range is [0, duration].

Example

audioPlayer.on('timeUpdate', (seekDoneTime: number) => {    // Set the 'timeUpdate' event callback.
  if (seekDoneTime == null) {
    console.info('audio seek fail');
    return;
  }
  console.log('audio seek success. seekDoneTime: ' + seekDoneTime);
});
audioPlayer.seek(30000); // Seek to 30000 ms.

setVolume

setVolume(vol: number): void

Sets the volume.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
volnumberYesRelative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).

Example

audioPlayer.on('volumeChange', () => {    // Set the 'volumeChange' event callback.
  console.log('audio volumeChange success');
});
audioPlayer.setVolume(1);    // Set the volume to 100%.

release

release(): void

Releases the audio playback resources.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Example

audioPlayer.release();
audioPlayer = undefined;

getTrackDescription8+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

Obtains the audio track information. This API uses an asynchronous callback to return the result. It can be called only after the 'dataLoad' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Array<MediaDescription>>YesCallback used to return a MediaDescription array, which records the audio track information.

Example

audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
  if (arrList != null) {
    console.log('audio getTrackDescription success');
  } else {
    console.log(`audio getTrackDescription fail, error:${error}`);
  }
});

getTrackDescription8+

getTrackDescription(): Promise<Array<MediaDescription>>

Obtains the audio track information. This API uses a promise to return the result. It can be called only after the 'dataLoad' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Return value

TypeDescription
Promise<Array<MediaDescription>>Promise used to return a MediaDescription array, which records the audio track information.

Example

audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
  console.log('audio getTrackDescription success');
}).catch((error: BusinessError) => {
  console.info(`audio catchCallback, error:${error}`);
});

on('bufferingUpdate')8+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

Subscribes to the audio buffering update event. This API works only under online playback.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bufferingUpdate' in this case.
callbackfunctionYesCallback invoked when the event is triggered.
When BufferingInfoType is set to BUFFERING_PERCENT or CACHED_DURATION, value is valid. Otherwise, value is fixed at 0.

Example

audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
  console.log('audio bufferingInfo type: ' + infoType);
  console.log('audio bufferingInfo value: ' + value);
});

on('play'|'pause'|'stop'|'reset'|'dataLoad'|'finish'|'volumeChange')

on(type: 'play'|'pause'|'stop'|'reset'|'dataLoad'|'finish'|'volumeChange', callback: () => void): void

Subscribes to the audio playback events.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The following events are supported:
- 'play': triggered when the play() API is called and audio playback starts.
- 'pause': triggered when the pause() API is called and audio playback is paused.
- 'stop': triggered when the stop() API is called and audio playback stops.
- 'reset': triggered when the reset() API is called and audio playback is reset.
- 'dataLoad': triggered when the audio data is loaded, that is, when the src attribute is configured.
- 'finish': triggered when the audio playback is finished.
- 'volumeChange': triggered when the setVolume() API is called and the playback volume is changed.
callback() => voidYesCallback invoked when the event is triggered.

Example

import fs from '@ohos.file.fs';
import { BusinessError } from '@ohos.base';

let audioPlayer: media.AudioPlayer = media.createAudioPlayer();  // Create an AudioPlayer instance.
audioPlayer.on('dataLoad', () => {            // Set the 'dataLoad' event callback, which is triggered when the src attribute is set successfully.
  console.info('audio set source success');
  audioPlayer.play();                       // Start the playback and trigger the 'play' event callback.
});
audioPlayer.on('play', () => {                // Set the 'play' event callback.
  console.info('audio play success');
  audioPlayer.seek(30000);                  // Call the seek() API and trigger the 'timeUpdate' event callback.
});
audioPlayer.on('pause', () => {               // Set the 'pause' event callback.
  console.info('audio pause success');
  audioPlayer.stop();                       // Stop the playback and trigger the 'stop' event callback.
});
audioPlayer.on('reset', () => {               // Set the 'reset' event callback.
  console.info('audio reset success');
  audioPlayer.release();                    // Release the AudioPlayer instance.
  audioPlayer = undefined;
});
audioPlayer.on('timeUpdate', (seekDoneTime: number) => {  // Set the 'timeUpdate' event callback.
  if (seekDoneTime == null) {
    console.info('audio seek fail');
    return;
  }
  console.info('audio seek success, and seek time is ' + seekDoneTime);
  audioPlayer.setVolume(0.5);                // Set the volume to 50% and trigger the 'volumeChange' event callback.
});
audioPlayer.on('volumeChange', () => {         // Set the 'volumeChange' event callback.
  console.info('audio volumeChange success');
  audioPlayer.pause();                       // Pause the playback and trigger the 'pause' event callback.
});
audioPlayer.on('finish', () => {               // Set the 'finish' event callback.
  console.info('audio play finish');
  audioPlayer.stop();                        // Stop the playback and trigger the 'stop' event callback.
});
audioPlayer.on('error', (error: BusinessError) => {           // Set the 'error' event callback.
  console.error(`audio error called, error: ${error}`);
});

// Set the FD (local playback) of the audio file selected by the user.
let fdPath = 'fd://';
// The stream in the path can be pushed to the device by running the "hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" command.
let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
fs.open(path).then((file) => {
  fdPath = fdPath + '' + file.fd;
  console.info('open fd success fd is' + fdPath);
  audioPlayer.src = fdPath;  // Set the src attribute and trigger the 'dataLoad' event callback.
}, (err: BusinessError) => {
  console.info('open fd failed err is' + err);
}).catch((err: BusinessError) => {
  console.info('open fd failed err is' + err);
});

on('timeUpdate')

on(type: 'timeUpdate', callback: Callback<number>): void

Subscribes to the 'timeUpdate' event. This event is reported every second when the audio playback is in progress.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'timeUpdate' in this case.
The 'timeUpdate' event is triggered when the audio playback starts after an audio playback timestamp update.
callbackCallback<number>YesCallback invoked when the event is triggered. The input parameter is the updated timestamp.

Example

audioPlayer.on('timeUpdate', (newTime: number) => {    // Set the 'timeUpdate' event callback.
  if (newTime == null) {
    console.info('audio timeUpadate fail');
    return;
  }
  console.log('audio timeUpadate success. seekDoneTime: ' + newTime);
});
audioPlayer.play();    // The 'timeUpdate' event is triggered when the playback starts.

on('error')

on(type: 'error', callback: ErrorCallback): void

Subscribes to audio playback error events. After an error event is reported, you must handle the event and exit the playback.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during audio playback.
callbackErrorCallbackYesCallback invoked when the event is triggered.

Example

audioPlayer.on('error', (error: BusinessError) => {      // Set the 'error' event callback.
  console.error(`audio error called, error: ${error}`); 
});
audioPlayer.setVolume(3); // Set volume to an invalid value to trigger the 'error' event.

AudioState(deprecated)

Enumerates the audio playback states. You can obtain the state through the state attribute.

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use AVPlayerState instead.

System capability: SystemCapability.Multimedia.Media.AudioPlayer

NameTypeDescription
idlestringNo audio playback is in progress. The audio player is in this state after the 'dataload' or 'reset' event is triggered.
playingstringAudio playback is in progress. The audio player is in this state after the 'play' event is triggered.
pausedstringAudio playback is paused. The audio player is in this state after the 'pause' event is triggered.
stoppedstringAudio playback is stopped. The audio player is in this state after the 'stop' event is triggered.
errorstringAudio playback is in the error state.

VideoPlayer(deprecated)

NOTE

This API is supported since API version 8 and deprecated since API version 9. You are advised to use AVPlayer instead.

Provides APIs to manage and play video. Before calling any API of VideoPlayer, you must use createVideoPlayer() to create a VideoPlayer instance.

Attributes

System capability: SystemCapability.Multimedia.Media.VideoPlayer

NameTypeReadableWritableDescription
url8+stringYesYesVideo URL. The mainstream video formats (MP4, MPEG-TS, WebM, and MKV) are supported.
Example of supported URLs:
1. FD: fd://xx

2. HTTP: http://xx
3. HTTPS: https://xx
4. HLS: http://xx or https://xx
fdSrc9+AVFileDescriptorYesYesDescription of a video file. This attribute is required when video assets of an application are continuously stored in a file.
Example:
Assume that a music file that stores continuous music assets consists of the following:
Video 1 (address offset: 0, byte length: 100)
Video 2 (address offset: 101; byte length: 50)
Video 3 (address offset: 151, byte length: 150)
1. To play video 1: AVFileDescriptor {fd = resource handle; offset = 0; length = 100; }
2. To play video 2: AVFileDescriptor {fd = resource handle; offset = 101; length = 50; }
3. To play video 3: AVFileDescriptor {fd = resource handle; offset = 151; length = 150; }
To play an independent video file, use src=fd://xx.
loop8+booleanYesYesWhether to loop video playback. The value true means to loop video playback, and false means the opposite.
videoScaleType9+VideoScaleTypeYesYesVideo scale type.
audioInterruptMode9+audio.InterruptModeYesYesAudio interruption mode.
currentTime8+numberYesNoCurrent video playback position, in ms.
duration8+numberYesNoVideo duration, in ms. The value -1 indicates the live mode.
state8+VideoPlayStateYesNoVideo playback state.
width8+numberYesNoVideo width, in pixels.
height8+numberYesNoVideo height, in pixels.

setDisplaySurface8+

setDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void

Sets SurfaceId. This API uses an asynchronous callback to return the result.

*Note: SetDisplaySurface must be called between the URL setting and the calling of prepare. A surface must be set for video streams without audio. Otherwise, the calling of prepare fails.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
surfaceIdstringYesSurface ID to set.
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let surfaceId: string = '';
videoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => {
  if (err == null) {
    console.info('setDisplaySurface success!');
  } else {
    console.error('setDisplaySurface fail!');
  }
});

setDisplaySurface8+

setDisplaySurface(surfaceId: string): Promise<void>

Sets SurfaceId. This API uses a promise to return the result.

*Note: SetDisplaySurface must be called between the URL setting and the calling of prepare. A surface must be set for video streams without audio. Otherwise, the calling of prepare fails.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
surfaceIdstringYesSurface ID to set.

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

let surfaceId: string = '';
videoPlayer.setDisplaySurface(surfaceId).then(() => {
  console.info('setDisplaySurface success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

prepare8+

prepare(callback: AsyncCallback<void>): void

Prepares for video playback. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.prepare((err: BusinessError) => {
  if (err == null) {
    console.info('prepare success!');
  } else {
    console.error('prepare fail!');
  }
});

prepare8+

prepare(): Promise<void>

Prepares for video playback. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.prepare().then(() => {
  console.info('prepare success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

play8+

play(callback: AsyncCallback<void>): void

Starts to play video assets. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.play((err: BusinessError) => {
  if (err == null) {
    console.info('play success!');
  } else {
    console.error('play fail!');
  }
});

play8+

play(): Promise<void>

Starts to play video assets. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.play().then(() => {
  console.info('play success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

pause8+

pause(callback: AsyncCallback<void>): void

Pauses video playback. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.pause((err: BusinessError) => {
  if (err == null) {
    console.info('pause success!');
  } else {
    console.info('pause fail!');
  }
});

pause8+

pause(): Promise<void>

Pauses video playback. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.pause().then(() => {
  console.info('pause success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

stop8+

stop(callback: AsyncCallback<void>): void

Stops video playback. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.stop((err: BusinessError) => {
  if (err == null) {
    console.info('stop success!');
  } else {
    console.error('stop fail!');
  }
});

stop8+

stop(): Promise<void>

Stops video playback. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.stop().then(() => {
  console.info('stop success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

reset8+

reset(callback: AsyncCallback<void>): void

Resets the video asset to be played. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.reset((err: BusinessError) => {
  if (err == null) {
    console.info('reset success!');
  } else {
    console.error('reset fail!');
  }
});

reset8+

reset(): Promise<void>

Resets the video asset to be played. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.reset().then(() => {
  console.info('reset success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

seek8+

seek(timeMs: number, callback: AsyncCallback<number>): void

Seeks to the specified playback position. The previous key frame at the specified position is played. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
timeMsnumberYesPosition to seek to, in ms. The value range is [0, duration].
callbackAsyncCallback<number>YesCallback used to return the result.

Example

let seekTime: number = 5000;
videoPlayer.seek(seekTime, (err: BusinessError, result: number) => {
  if (err == null) {
    console.info('seek success!');
  } else {
    console.error('seek fail!');
  }
});

seek8+

seek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void

Seeks to the specified playback position. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
timeMsnumberYesPosition to seek to, in ms. The value range is [0, duration].
modeSeekModeYesSeek mode.
callbackAsyncCallback<number>YesCallback used to return the result.

Example

import media from '@ohos.multimedia.media'
let seekTime: number = 5000;
videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => {
  if (err == null) {
    console.info('seek success!');
  } else {
    console.error('seek fail!');
  }
});

seek8+

seek(timeMs: number, mode?:SeekMode): Promise<number>

Seeks to the specified playback position. If mode is not specified, the previous key frame at the specified position is played. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
timeMsnumberYesPosition to seek to, in ms. The value range is [0, duration].
modeSeekModeNoSeek mode based on the video I frame. The default value is SEEK_PREV_SYNC.

Return value

TypeDescription
Promise<number>Promise used to return the playback position, in ms.

Example

import media from '@ohos.multimedia.media'
let seekTime: number = 5000;
videoPlayer.seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime indicates the position after the seek operation is complete.
  console.info('seek success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => {
  console.info('seek success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

setVolume8+

setVolume(vol: number, callback: AsyncCallback<void>): void

Sets the volume. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
volnumberYesRelative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).
callbackAsyncCallback<void>YesCallback used to return the result.

Example

let vol: number = 0.5;
videoPlayer.setVolume(vol, (err: BusinessError) => {
  if (err == null) {
    console.info('setVolume success!');
  } else {
    console.error('setVolume fail!');
  }
});

setVolume8+

setVolume(vol: number): Promise<void>

Sets the volume. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
volnumberYesRelative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

let vol: number = 0.5;
videoPlayer.setVolume(vol).then(() => {
  console.info('setVolume success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

release8+

release(callback: AsyncCallback<void>): void

Releases the video playback resources. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<void>YesCallback used to return the result.

Example

videoPlayer.release((err: BusinessError) => {
  if (err == null) {
    console.info('release success!');
  } else {
    console.error('release fail!');
  }
});

release8+

release(): Promise<void>

Releases the video playback resources. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<void>Promise used to return the result.

Example

videoPlayer.release().then(() => {
  console.info('release success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

getTrackDescription8+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

Obtains the video track information. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
callbackAsyncCallback<Array<MediaDescription>>YesCallback used to return a MediaDescription array, which records the video track information.

Example

videoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
  if ((arrList) != null) {
    console.info('video getTrackDescription success');
  } else {
    console.log(`video getTrackDescription fail, error:${error}`);
  }
});

getTrackDescription8+

getTrackDescription(): Promise<Array<MediaDescription>>

Obtains the video track information. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Return value

TypeDescription
Promise<Array<MediaDescription>>Promise used to return a MediaDescription array, which records the video track information.

Example

videoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
  if (arrList != null) {
    console.info('video getTrackDescription success');
  } else {
    console.log('video getTrackDescription fail');
  }
}).catch((error: BusinessError) => {
  console.info(`video catchCallback, error:${error}`);
});

setSpeed8+

setSpeed(speed:number, callback: AsyncCallback<number>): void

Sets the video playback speed. This API uses an asynchronous callback to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
speednumberYesVideo playback speed. For details, see PlaybackSpeed.
callbackAsyncCallback<number>YesCallback used to return the result.

Example

import media from '@ohos.multimedia.media'
let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;

videoPlayer.setSpeed(speed, (err: BusinessError, result: number) => {
  if (err == null) {
    console.info('setSpeed success!');
  } else {
    console.error('setSpeed fail!');
  }
});

setSpeed8+

setSpeed(speed:number): Promise<number>

Sets the video playback speed. This API uses a promise to return the result.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
speednumberYesVideo playback speed. For details, see PlaybackSpeed.

Return value

TypeDescription
Promise<number>Promise used to return playback speed. For details, see PlaybackSpeed.

Example

import media from '@ohos.multimedia.media'
let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;

videoPlayer.setSpeed(speed).then((result: number) => {
  console.info('setSpeed success');
}).catch((error: BusinessError) => {
  console.error(`video catchCallback, error:${error}`);
});

on('playbackCompleted')8+

on(type: 'playbackCompleted', callback: Callback<void>): void

Subscribes to the video playback completion event.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'playbackCompleted' in this case.
callbackfunctionYesCallback invoked when the event is triggered.

Example

videoPlayer.on('playbackCompleted', () => {
  console.info('playbackCompleted success!');
});

on('bufferingUpdate')8+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

Subscribes to the video buffering update event. Only network playback supports this subscription.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'bufferingUpdate' in this case.
callbackfunctionYesCallback invoked when the event is triggered.
When BufferingInfoType is set to BUFFERING_PERCENT or CACHED_DURATION, value is valid. Otherwise, value is fixed at 0.

Example

videoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
  console.log('video bufferingInfo type: ' + infoType);
  console.log('video bufferingInfo value: ' + value);
});

on('startRenderFrame')8+

on(type: 'startRenderFrame', callback: Callback<void>): void

Subscribes to the frame rendering start event.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'startRenderFrame' in this case.
callbackCallback<void>YesCallback invoked when the event is triggered.

Example

videoPlayer.on('startRenderFrame', () => {
  console.info('startRenderFrame success!');
});

on('videoSizeChanged')8+

on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void

Subscribes to the video width and height change event.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'videoSizeChanged' in this case.
callbackfunctionYesCallback invoked when the event is triggered. width indicates the video width, and height indicates the video height.

Example

videoPlayer.on('videoSizeChanged', (width: number, height: number) => {
  console.log('video width is: ' + width);
  console.log('video height is: ' + height);
});

on('error')8+

on(type: 'error', callback: ErrorCallback): void

Subscribes to video playback error events. After an error event is reported, you must handle the event and exit the playback.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during video playback.
callbackErrorCallbackYesCallback invoked when the event is triggered.

Example

videoPlayer.on('error', (error: BusinessError) => {      // Set the 'error' event callback.
  console.error(`video error called, error: ${error}`);
});
videoPlayer.url = 'fd://error';  // Set an incorrect URL to trigger the 'error' event.

VideoPlayState(deprecated)

Enumerates the video playback states. You can obtain the state through the state attribute.

NOTE

This API is supported since API version 8 and deprecated since API version 9. You are advised to use AVPlayerState instead.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

NameTypeDescription
idlestringThe video player is idle.
preparedstringVideo playback is being prepared.
playingstringVideo playback is in progress.
pausedstringVideo playback is paused.
stoppedstringVideo playback is stopped.
errorstringVideo playback is in the error state.

AudioRecorder(deprecated)

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use AVRecorder instead.

Implements audio recording. Before calling any API of AudioRecorder, you must use createAudioRecorder() to create an AudioRecorder instance.

prepare

prepare(config: AudioRecorderConfig): void

Prepares for recording.

Required permissions: ohos.permission.MICROPHONE

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Parameters

NameTypeMandatoryDescription
configAudioRecorderConfigYesAudio recording parameters, including the audio output URI, encoding format, sampling rate, number of audio channels, and output format.

Example

let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://1',       // The file must be created by the caller and granted with proper permissions.
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('prepare', () => {    // Set the 'prepare' event callback.
  console.log('prepare success');
});
audioRecorder.prepare(audioRecorderConfig);

start

start(): void

Starts audio recording. This API can be called only after the 'prepare' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('start', () => {    // Set the 'start' event callback.
  console.log('audio recorder start success');
});
audioRecorder.start();

pause

pause():void

Pauses audio recording. This API can be called only after the 'start' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('pause', () => {    // Set the 'pause' event callback.
  console.log('audio recorder pause success');
});
audioRecorder.pause();

resume

resume():void

Resumes audio recording. This API can be called only after the 'pause' event is triggered.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('resume', () => { // Set the 'resume' event callback.
  console.log('audio recorder resume success');
});
audioRecorder.resume();

stop

stop(): void

Stops audio recording.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('stop', () => {    // Set the 'stop' event callback.
  console.log('audio recorder stop success');
});
audioRecorder.stop();

release

release(): void

Releases the audio recording resources.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('release', () => {    // Set the 'release' event callback.
  console.log('audio recorder release success');
});
audioRecorder.release();
audioRecorder = undefined;

reset

reset(): void

Resets audio recording.

Before resetting audio recording, you must call stop() to stop recording. After audio recording is reset, you must call prepare() to set the recording configurations for another recording.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Example

audioRecorder.on('reset', () => {    // Set the 'reset' event callback.
  console.log('audio recorder reset success');
});
audioRecorder.reset();

on('prepare'|'start'|'pause'|'resume'|'stop'|'release'|'reset')

on(type: 'prepare'|'start'|'pause'|'resume'|'stop'|'release'|'reset', callback: () => void): void

Subscribes to the audio recording events.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type. The following events are supported:
- 'prepare': triggered when the prepare() API is called and the audio recording parameters are set.
- 'start': triggered when the start() API is called and audio recording starts.
- 'pause': triggered when the pause() API is called and audio recording is paused.
- 'resume': triggered when the resume() API is called and audio recording is resumed.
- 'stop': triggered when the stop() API is called and audio recording stops.
- 'release': triggered when the release() API is called and the recording resources are released.
- 'reset': triggered when the reset() API is called and audio recording is reset.
callback()=>voidYesCallback invoked when the event is triggered.

Example

let audioRecorder: media.AudioRecorder = media.createAudioRecorder();                                  // Create an AudioRecorder instance.
let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://xx',                                                            // The file must be created by the caller and granted with proper permissions.
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error: BusinessError) => {                                             // Set the 'error' event callback.
  console.info(`audio error called, error: ${error}`);
});
audioRecorder.on('prepare', () => {                                              // Set the 'prepare' event callback.
  console.log('prepare success');
  audioRecorder.start();                                                       // Start recording and trigger the 'start' event callback.
});
audioRecorder.on('start', () => {                                                 // Set the 'start' event callback.
  console.log('audio recorder start success');
});
audioRecorder.on('pause', () => {                                                 // Set the 'pause' event callback.
  console.log('audio recorder pause success');
});
audioRecorder.on('resume', () => {                                                 // Set the 'resume' event callback.
  console.log('audio recorder resume success');
});
audioRecorder.on('stop', () => {                                                 // Set the 'stop' event callback.
  console.log('audio recorder stop success');
});
audioRecorder.on('release', () => {                                                 // Set the 'release' event callback.
  console.log('audio recorder release success');
});
audioRecorder.on('reset', () => {                                                 // Set the 'reset' event callback.
  console.log('audio recorder reset success');
});
audioRecorder.prepare(audioRecorderConfig)                                       // Set recording parameters and trigger the 'prepare' event callback.     

on('error')

on(type: 'error', callback: ErrorCallback): void

Subscribes to audio recording error events. After an error event is reported, you must handle the event and exit the recording.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

Parameters

NameTypeMandatoryDescription
typestringYesEvent type, which is 'error' in this case.
This event is triggered when an error occurs during audio recording.
callbackErrorCallbackYesCallback invoked when the event is triggered.

Example

let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://xx',                                                     // The file must be created by the caller and granted with proper permissions.
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error: Error) => {                                  // Set the 'error' event callback.
  console.error(`audio error called, error: ${error}`);
});
audioRecorder.prepare(audioRecorderConfig);                            // Do no set any parameter in prepare and trigger the 'error' event callback.

AudioRecorderConfig(deprecated)

NOTE

This API is supported since API version 6 and deprecated since API version 9. You are advised to use AVRecorderConfig instead.

Describes audio recording configurations.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

NameTypeMandatoryDescription
audioEncoderAudioEncoderNoAudio encoding format. The default value is AAC_LC.
Note: This parameter is deprecated since API version 8. Use audioEncoderMime instead.
audioEncodeBitRatenumberNoAudio encoding bit rate. The default value is 48000.
audioSampleRatenumberNoAudio sampling rate. The default value is 48000.
numberOfChannelsnumberNoNumber of audio channels. The default value is 2.
formatAudioOutputFormatNoAudio output format. The default value is MPEG_4.
Note: This parameter is deprecated since API version 8. Use fileFormat instead.
locationLocationNoGeographical location of the recorded audio.
uristringYesAudio output URI. Supported: fd://xx (fd number)

The file must be created by the caller and granted with proper permissions.
audioEncoderMime8+CodecMimeTypeNoAudio encoding format.
fileFormat8+ContainerFormatTypeNoAudio encoding format.

AudioEncoder(deprecated)

NOTE

This API is supported since API version 6 and deprecated since API version 8. You are advised to use CodecMimeType instead.

Enumerates the audio encoding formats.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

NameValueDescription
DEFAULT0Default encoding format.
This API is defined but not implemented yet.
AMR_NB1AMR-NB.
This API is defined but not implemented yet.
AMR_WB2Adaptive Multi Rate-Wide Band Speech Codec (AMR-WB).
This API is defined but not implemented yet.
AAC_LC3Advanced Audio Coding Low Complexity (AAC-LC).
HE_AAC4High-Efficiency Advanced Audio Coding (HE_AAC).
This API is defined but not implemented yet.

AudioOutputFormat(deprecated)

NOTE

This API is supported since API version 6 and deprecated since API version 8. You are advised to use ContainerFormatType instead.

Enumerates the audio output formats.

System capability: SystemCapability.Multimedia.Media.AudioRecorder

NameValueDescription
DEFAULT0Default encapsulation format.
This API is defined but not implemented yet.
MPEG_42MPEG-4.
AMR_NB3AMR_NB.
This API is defined but not implemented yet.
AMR_WB4AMR_WB.
This API is defined but not implemented yet.
AAC_ADTS6Audio Data Transport Stream (ADTS), which is a transport stream format of AAC-based audio.

你可能感兴趣的鸿蒙文章

harmony 鸿蒙APIs

harmony 鸿蒙System Common Events (To Be Deprecated Soon)

harmony 鸿蒙System Common Events

harmony 鸿蒙API Reference Document Description

harmony 鸿蒙Enterprise Device Management Overview (for System Applications Only)

harmony 鸿蒙BundleStatusCallback

harmony 鸿蒙@ohos.bundle.innerBundleManager (innerBundleManager)

harmony 鸿蒙@ohos.distributedBundle (Distributed Bundle Management)

harmony 鸿蒙@ohos.bundle (Bundle)

harmony 鸿蒙@ohos.enterprise.EnterpriseAdminExtensionAbility (EnterpriseAdminExtensionAbility)

  • 所属分类: 后端技术
  • 本文标签: 鸿蒙 软件
  • 版权声明: 本文链接 https://seaxiang.com/blog/a78d8186844249b2bf6919e4e774a3f7