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

  • 2022-08-09
  • 浏览 (680)

@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

Name Type Mandatory Description
callback AsyncCallback<AVPlayer> Yes Callback 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.

ID Error Message
5400101 No 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

Type Description
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.

ID Error Message
5400101 No 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

Name Type Mandatory Description
callback AsyncCallback<AVRecorder> Yes Callback 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.

ID Error Message
5400101 No 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

Type Description
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.

ID Error Message
5400101 No 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

Name Type Mandatory Description
callback AsyncCallback<VideoRecorder> Yes Callback 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.

ID Error Message
5400101 No 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

Type Description
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.

ID Error Message
5400101 No 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

Name Type Mandatory Description
maxStreams number Yes Maximum number of streams that can be played by the SoundPool instance.
audioRenderInfo audio.AudioRendererInfo Yes Audio renderer parameters.
callback AsyncCallback<SoundPool> Yes Callback 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.

ID Error Message
5400101 No 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

Name Type Mandatory Description
maxStreams number Yes Maximum number of streams that can be played by the SoundPool instance.
audioRenderInfo audio.AudioRendererInfo Yes Audio renderer parameters.

Return value

Type Description
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.

ID Error Message
5400101 No 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

Name Value Description
AVERR_OK 0 The operation is successful.
AVERR_NO_PERMISSION 201 You do not have the permission to perform the operation.
AVERR_INVALID_PARAMETER 401 Invalid input parameter.
AVERR_UNSUPPORT_CAPABILITY 801 Unsupported API.
AVERR_NO_MEMORY 5400101 The system memory is insufficient or the number of services reaches the upper limit.
AVERR_OPERATE_NOT_PERMIT 5400102 The operation is not allowed in the current state or you do not have the permission to perform the operation.
AVERR_IO 5400103 The data stream is abnormal.
AVERR_TIMEOUT 5400104 The system or network response times out.
AVERR_SERVICE_DIED 5400105 The service process is dead.
AVERR_UNSUPPORT_FORMAT 5400106 The format of the media asset is not supported.

MediaType8+

Enumerates the media types.

System capability: SystemCapability.Multimedia.Media.Core

Name Value Description
MEDIA_TYPE_AUD 0 Media.
MEDIA_TYPE_VID 1 Video.

CodecMimeType8+

Enumerates the codec MIME types.

System capability: SystemCapability.Multimedia.Media.Core

Name Value Description
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

Name Value Description
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

Name Value Description
BUFFERING_START 1 Buffering starts.
BUFFERING_END 2 Buffering ends.
BUFFERING_PERCENT 3 Buffering progress, in percent.
CACHED_DURATION 4 Cache 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

Name Value Description
USER 1 State transition triggered by user behavior. It happens when a user or the client calls an API.
BACKGROUND 2 State 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

Name Type Readable Writable Description
url9+ string Yes Yes URL 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+ AVFileDescriptor Yes Yes FD 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+ AVDataSrcDescriptor Yes Yes Descriptor 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+ string Yes Yes Video 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+ boolean Yes Yes Whether 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+ VideoScaleType Yes Yes Video 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.InterruptMode Yes Yes Audio 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.AudioRendererInfo Yes Yes Audio 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.AudioEffectMode Yes Yes Audio 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+ AVPlayerState Yes No AVPlayer state. It can be used as a query parameter when the AVPlayer is in any state.
currentTime9+ number Yes No Current 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+ number Yes No Video 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+ number Yes No Video 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+ number Yes No Video 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

Name Type Mandatory Description
type string Yes Event type, which is ‘stateChange’ in this case. This event can be triggered by both user operations and the system.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case. This event can be triggered by both user operations and the system.
callback function Yes Callback used to return the error code ID and error message.

Error codes

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

ID Error Message
201 Permission denied
401 The parameter check failed.
801 Capability not supported.
5400101 No Memory.
5400102 Operation not allowed.
5400103 I/O error
5400104 Time out
5400105 Service Died.
5400106 Unsupport 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400106 Unsupport 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400106 Unsupport 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
callback function Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
callback AsyncCallback> Yes Callback 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.

ID Error Message
5400102 Operation 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

Type Description
Promise> 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.

ID Error Message
5400102 Operation 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

Name Type Mandatory Description
timeMs number Yes Position to seek to, in ms. The value range is [0, duration].
mode SeekMode No Seek 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

Name Type Mandatory Description
type string Yes Event type, which is ‘seekDone’ in this case. This event is triggered each time seek() is called.
callback Callback<number> Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
speed PlaybackSpeed Yes Playback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘speedDone’ in this case. This event is triggered each time setSpeed() is called.
callback Callback<number> Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
bitrate number Yes Bit 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

Name Type Mandatory Description
type string Yes Event type, which is ‘bitrateDone’ in this case. This event is triggered each time setBitrate() is called.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘availableBitrates’ in this case. This event is triggered once after the AVPlayer switches to the prepared state.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
volume number Yes Relative 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

Name Type Mandatory Description
type string Yes Event type, which is ‘volumeChange’ in this case. This event is triggered each time setVolume() is called.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘endOfStream’ in this case. This event is triggered when the AVPlayer finishes playing the media asset.
callback Callback<void> Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘timeUpdate’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘durationUpdate’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘bufferingUpdate’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘startRenderFrame’ in this case.
callback Callback<void> Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘videoSizeChange’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘audioInterrupt’ in this case.
callback audio.InterruptEvent9+ Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Description
idle string The 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.
initialized string The 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.
prepared string The AVPlayer enters this state when prepare() is called in the initialized state. In this case, the playback engine has prepared the resources.
playing string The AVPlayer enters this state when play() is called in the prepared, paused, or completed state.
paused string The AVPlayer enters this state when pause() is called in the playing state.
completed string The 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.
stopped string The 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.
released string The 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.
error string The 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

Name Type Mandatory Description
fd number Yes Resource handle, which is obtained by calling resourceManager.getRawFileDescriptor.
offset number Yes Resource offset, which needs to be entered based on the preset asset information. An invalid value causes a failure to parse audio and video assets.
length number Yes Resource 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

Name Type Mandatory Description
fileSize number Yes Size 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.
callback function Yes Callback 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

Name Value Description
SEEK_NEXT_SYNC 0 Seeks to the next key frame at the specified position. You are advised to use this value for the rewind operation.
SEEK_PREV_SYNC 1 Seeks 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

Name Value Description
SPEED_FORWARD_0_75_X 0 Plays the video at 0.75 times the normal speed.
SPEED_FORWARD_1_00_X 1 Plays the video at the normal speed.
SPEED_FORWARD_1_25_X 2 Plays the video at 1.25 times the normal speed.
SPEED_FORWARD_1_75_X 3 Plays the video at 1.75 times the normal speed.
SPEED_FORWARD_2_00_X 4 Plays the video at 2.00 times the normal speed.

VideoScaleType9+

Enumerates the video scale modes.

System capability: SystemCapability.Multimedia.Media.VideoPlayer

Name Value Description
VIDEO_SCALE_TYPE_FIT 0 The video will be stretched to fit the window.
VIDEO_SCALE_TYPE_FIT_CROP 1 The 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

Name Type Mandatory Description
[key: string] Object Yes For 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

Name Type Readable Writable Description
state9+ AVRecorderState Yes No AVRecorder 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

Name Type Mandatory Description
config AVRecorderConfig Yes Audio and video recording parameters to set.
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
201 Permission denied. Return by callback.
401 Parameter error. Return by callback.
5400102 Operate not permit. Return by callback.
5400105 Service 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

Name Type Mandatory Description
config AVRecorderConfig Yes Audio and video recording parameters to set.

Return value

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
201 Permission denied. Return by promise.
401 Parameter error. Return by promise.
5400102 Operate not permit. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<string> Yes Callback used to obtain the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by callback.
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<string> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by promise.
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by callback.
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by promise.
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to obtain the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by callback.
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by promise.
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by callback.
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by promise.
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by callback.
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operate not permit. Return by promise.
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400103 IO error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400103 IO error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400105 Service 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

Name Type Mandatory Description
type string Yes Event type, which is ‘stateChange’ in this case. This event can be triggered by both user operations and the system.
callback function Yes Callback 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.

ID Error Message
5400103 IO error. Return by callback.
5400105 Service 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case.
This event is triggered when an error occurs during recording.
callback ErrorCallback Yes Callback invoked when the event is triggered.

Error codes

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

ID Error Message
5400101 No memory. Return by callback.
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400104 Time out. Return by callback.
5400105 Service died. Return by callback.
5400106 Unsupport 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

Name Type Mandatory Description
type string Yes Event 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

Name Type Description
idle string The 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.
prepared string The AVRecorder enters this state when the parameters are set. In this state, you can call AVRecorder.start() to start recording.
started string The 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.
paused string The 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.
stopped string The 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.
released string The 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.
error string The 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

Name Type Mandatory Description
audioSourceType AudioSourceType No Type of the audio source to record. This parameter is mandatory for audio recording.
videoSourceType VideoSourceType No Type of the video source to record. This parameter is mandatory for video recording.
profile AVRecorderProfile Yes Recording profile. This parameter is mandatory.
url string Yes Recording output URL: fd://xx (fd number).
img
This parameter is mandatory.
rotation number No Rotation angle of the recorded video. The value can only be 0 (default), 90, 180, or 270.
location Location No Geographical 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

Name Type Mandatory Description
audioBitrate number No Audio encoding bit rate. This parameter is mandatory for audio recording. The value range is [8000 - 384000].
audioChannels number No Number of audio channels. This parameter is mandatory for audio recording. The value range is [1 - 2].
audioCodec CodecMimeType No Audio encoding format. This parameter is mandatory for audio recording. Only AUDIO_AAC is supported.
audioSampleRate number No Audio sampling rate. This parameter is mandatory for audio recording. The value range is [8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 96000].
fileFormat ContainerFormatType Yes Container format of a file. This parameter is mandatory.
videoBitrate number No Video encoding bit rate. This parameter is mandatory for video recording. The value range is [1 - 3000000].
videoCodec CodecMimeType No Video encoding format. This parameter is mandatory for video recording. Only VIDEO_MPEG4 is supported.
videoFrameWidth number No Width of a video frame. This parameter is mandatory for video recording. The value range is [2 - 1920].
videoFrameHeight number No Height of a video frame. This parameter is mandatory for video recording. The value range is [2 - 1080].
videoFrameRate number No Video 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

Name Value Description
AUDIO_SOURCE_TYPE_DEFAULT 0 Default audio input source.
AUDIO_SOURCE_TYPE_MIC 1 Mic audio input source.

VideoSourceType9+

Enumerates the video source types for video recording.

System capability: SystemCapability.Multimedia.Media.AVRecorder

Name Value Description
VIDEO_SOURCE_TYPE_SURFACE_YUV 0 The input surface carries raw data.
VIDEO_SOURCE_TYPE_SURFACE_ES 1 The input surface carries ES data.

ContainerFormatType8+

Enumerates the container format types (CFTs).

System capability: SystemCapability.Multimedia.Media.Core

Name Value Description
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

Name Type Mandatory Description
latitude number Yes Latitude of the geographical location.
longitude number Yes Longitude 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.

Name Type Readable Writable Description
state9+ VideoRecordState Yes No Video 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

Name Type Mandatory Description
config VideoRecorderConfig Yes Video recording parameters to set.
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
201 Permission denied. Return by callback.
401 Parameter error. Return by callback.
5400102 Operation not allowed. Return by callback.
5400105 Service 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

Name Type Mandatory Description
config VideoRecorderConfig Yes Video recording parameters to set.

Return value

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
201 Permission denied. Return by promise.
401 Parameter error. Return by promise.
5400102 Operation not allowed. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<string> Yes Callback used to obtain the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<string> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by callback.
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400102 Operation not allowed. Return by promise.
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400105 Service 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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback used to return the result.

Error codes

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

ID Error Message
5400103 I/O error. Return by callback.
5400105 Service 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

Type Description
Promise<void> Promise used to return the result.

Error codes

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

ID Error Message
5400103 I/O error. Return by promise.
5400105 Service 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case.
This event is triggered when an error occurs during video recording.
callback ErrorCallback Yes Callback invoked when the event is triggered.

Error codes

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

ID Error Message
5400103 I/O error. Return by callback.
5400105 Service 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.

Name Type Description
idle string The video recorder is idle.
prepared string The video recording parameters are set.
playing string Video recording is in progress.
paused string Video recording is paused.
stopped string Video recording is stopped.
error string Video 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.

Name Type Mandatory Description
audioSourceType AudioSourceType No Type of the audio source for video recording. This parameter is mandatory for audio recording.
videoSourceType VideoSourceType Yes Type of the video source for video recording.
profile VideoRecorderProfile Yes Video recording profile.
rotation number No Rotation angle of the recorded video. The value can only be 0 (default), 90, 180, or 270.
location Location No Geographical location of the recorded video. By default, the geographical location information is not recorded.
url string Yes Video 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.

Name Type Mandatory Description
audioBitrate number No Audio encoding bit rate. This parameter is mandatory for audio recording.
audioChannels number No Number of audio channels. This parameter is mandatory for audio recording.
audioCodec CodecMimeType No Audio encoding format. This parameter is mandatory for audio recording.
audioSampleRate number No Audio sampling rate. This parameter is mandatory for audio recording.
fileFormat ContainerFormatType Yes Container format of a file.
videoBitrate number Yes Video encoding bit rate.
videoCodec CodecMimeType Yes Video encoding format.
videoFrameWidth number Yes Width of the recorded video frame.
videoFrameHeight number Yes Height of the recorded video frame.
videoFrameRate number Yes Video 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

Type Description
AudioPlayer If 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

Name Type Mandatory Description
callback AsyncCallback<VideoPlayer> Yes Callback 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

Type Description
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

Type Description
AudioRecorder If 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

Name Value Description
MSERR_OK 0 The operation is successful.
MSERR_NO_MEMORY 1 Failed to allocate memory. The system may have no available memory.
MSERR_OPERATION_NOT_PERMIT 2 No permission to perform the operation.
MSERR_INVALID_VAL 3 Invalid input parameter.
MSERR_IO 4 An I/O error occurs.
MSERR_TIMEOUT 5 The operation times out.
MSERR_UNKNOWN 6 An unknown error occurs.
MSERR_SERVICE_DIED 7 Invalid server.
MSERR_INVALID_STATE 8 The operation is not allowed in the current state.
MSERR_UNSUPPORTED 9 The 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

Name Type Readable Writable Description
src string Yes Yes Audio 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+ AVFileDescriptor Yes Yes Description 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.
loop boolean Yes Yes Whether to loop audio playback. The value true means to loop audio playback, and false means the opposite.
audioInterruptMode9+ audio.InterruptMode Yes Yes Audio interruption mode.
currentTime number Yes No Current audio playback position, in ms.
duration number Yes No Audio duration, in ms.
state AudioState Yes No Audio 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

Name Type Mandatory Description
timeMs number Yes Position 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

Name Type Mandatory Description
vol number Yes Relative 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

Name Type Mandatory Description
callback AsyncCallback<Array<MediaDescription>> Yes Callback 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

Type Description
Promise> 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

Name Type Mandatory Description
type string Yes Event type, which is ‘bufferingUpdate’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event 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 () => void Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘timeUpdate’ in this case.
The ‘timeUpdate’ event is triggered when the audio playback starts after an audio playback timestamp update.
callback Callback<number> Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case.
This event is triggered when an error occurs during audio playback.
callback ErrorCallback Yes Callback 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

Name Type Description
idle string No audio playback is in progress. The audio player is in this state after the ‘dataload’ or ‘reset’ event is triggered.
playing string Audio playback is in progress. The audio player is in this state after the ‘play’ event is triggered.
paused string Audio playback is paused. The audio player is in this state after the ‘pause’ event is triggered.
stopped string Audio playback is stopped. The audio player is in this state after the ‘stop’ event is triggered.
error string Audio 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

Name Type Readable Writable Description
url8+ string Yes Yes Video 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+ AVFileDescriptor Yes Yes Description 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+ boolean Yes Yes Whether to loop video playback. The value true means to loop video playback, and false means the opposite.
videoScaleType9+ VideoScaleType Yes Yes Video scale type.
audioInterruptMode9+ audio.InterruptMode Yes Yes Audio interruption mode.
currentTime8+ number Yes No Current video playback position, in ms.
duration8+ number Yes No Video duration, in ms. The value -1 indicates the live mode.
state8+ VideoPlayState Yes No Video playback state.
width8+ number Yes No Video width, in pixels.
height8+ number Yes No Video 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

Name Type Mandatory Description
surfaceId string Yes Surface ID to set.
callback AsyncCallback<void> Yes Callback 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

Name Type Mandatory Description
surfaceId string Yes Surface ID to set.

Return value

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
timeMs number Yes Position to seek to, in ms. The value range is [0, duration].
callback AsyncCallback<number> Yes Callback 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

Name Type Mandatory Description
timeMs number Yes Position to seek to, in ms. The value range is [0, duration].
mode SeekMode Yes Seek mode.
callback AsyncCallback<number> Yes Callback 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

Name Type Mandatory Description
timeMs number Yes Position to seek to, in ms. The value range is [0, duration].
mode SeekMode No Seek mode based on the video I frame. The default value is SEEK_PREV_SYNC.

Return value

Type Description
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

Name Type Mandatory Description
vol number Yes Relative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).
callback AsyncCallback<void> Yes Callback 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

Name Type Mandatory Description
vol number Yes Relative volume. The value ranges from 0.00 to 1.00. The value 1.00 indicates the maximum volume (100%).

Return value

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<void> Yes Callback 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

Type Description
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

Name Type Mandatory Description
callback AsyncCallback<Array<MediaDescription>> Yes Callback 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

Type Description
Promise> 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

Name Type Mandatory Description
speed number Yes Video playback speed. For details, see PlaybackSpeed.
callback AsyncCallback<number> Yes Callback 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

Name Type Mandatory Description
speed number Yes Video playback speed. For details, see PlaybackSpeed.

Return value

Type Description
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

Name Type Mandatory Description
type string Yes Event type, which is ‘playbackCompleted’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘bufferingUpdate’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘startRenderFrame’ in this case.
callback Callback<void> Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘videoSizeChanged’ in this case.
callback function Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case.
This event is triggered when an error occurs during video playback.
callback ErrorCallback Yes Callback 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

Name Type Description
idle string The video player is idle.
prepared string Video playback is being prepared.
playing string Video playback is in progress.
paused string Video playback is paused.
stopped string Video playback is stopped.
error string Video 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

Name Type Mandatory Description
config AudioRecorderConfig Yes Audio 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

Name Type Mandatory Description
type string Yes Event 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 ()=>void Yes Callback 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

Name Type Mandatory Description
type string Yes Event type, which is ‘error’ in this case.
This event is triggered when an error occurs during audio recording.
callback ErrorCallback Yes Callback 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

Name Type Mandatory Description
audioEncoder AudioEncoder No Audio encoding format. The default value is AAC_LC.
Note: This parameter is deprecated since API version 8. Use audioEncoderMime instead.
audioEncodeBitRate number No Audio encoding bit rate. The default value is 48000.
audioSampleRate number No Audio sampling rate. The default value is 48000.
numberOfChannels number No Number of audio channels. The default value is 2.
format AudioOutputFormat No Audio output format. The default value is MPEG_4.
Note: This parameter is deprecated since API version 8. Use fileFormat instead.
location Location No Geographical location of the recorded audio.
uri string Yes Audio output URI. Supported: fd://xx (fd number)

The file must be created by the caller and granted with proper permissions.
audioEncoderMime8+ CodecMimeType No Audio encoding format.
fileFormat8+ ContainerFormatType No Audio 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

Name Value Description
DEFAULT 0 Default encoding format.
This API is defined but not implemented yet.
AMR_NB 1 AMR-NB.
This API is defined but not implemented yet.
AMR_WB 2 Adaptive Multi Rate-Wide Band Speech Codec (AMR-WB).
This API is defined but not implemented yet.
AAC_LC 3 Advanced Audio Coding Low Complexity (AAC-LC).
HE_AAC 4 High-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

Name Value Description
DEFAULT 0 Default encapsulation format.
This API is defined but not implemented yet.
MPEG_4 2 MPEG-4.
AMR_NB 3 AMR_NB.
This API is defined but not implemented yet.
AMR_WB 4 AMR_WB.
This API is defined but not implemented yet.
AAC_ADTS 6 Audio 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)

0  赞