HarmonyOS实战开发:@ohos.multimedia.media (媒体服务)

说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。

媒体子系统包含了音视频相关媒体业务,提供以下常用功能:

导入模块

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

media.createAVPlayer9+

createAVPlayer(callback: AsyncCallback<AVPlayer>): void

异步方式创建音视频播放实例,通过注册回调函数获取返回值。

说明:

  • 可创建的视频播放实例不能超过13个。
  • 可创建的音视频播放实例(即音频、视频、音视频三类相加)不能超过16个。
  • 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568仅支持创建6个以内的视频播放实例。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
回调AsyncCallback<AVPlayer>回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by callback.

示例:

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>

异步方式创建音视频播放实例,通过Promise获取返回值。

说明:

  • 可创建的视频播放实例不能超过13个。
  • 可创建的音视频播放实例(即音频、视频、音视频三类相加)不能超过16个。
  • 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568仅支持创建6个以内的视频播放实例。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<AVPlayer>Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by promise.

示例:

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

异步方式创建音视频录制实例。通过注册回调函数获取返回值。

说明:

  • 可创建的音视频录制实例不能超过2个。
  • 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
回调AsyncCallback<AVRecorder>回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by callback.

示例:

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}`);
  }
});Copy to clipboard错误复制

media.createAVRecorder9+

createAVRecorder(): Promise<AVRecorder>

异步方式创建音视频录制实例。通过Promise获取返回值。

说明:

  • 可创建的音视频录制实例不能超过2个。
  • 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<AVRecorder>Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by promise.

示例:

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

异步方式创建视频录制实例。通过注册回调函数获取返回值。 一台设备只允许创建一个录制实例。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
回调AsyncCallback<VideoRecorder>回调函数。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by callback.

示例:

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>

异步方式创建视频录制实例。通过Promise获取返回值。 一台设备只允许创建一个录制实例。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<VideoRecorder>Promise对象。异步返回VideoRecorder实例,失败时返回null。可用于录制视频媒体。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by promise.

示例:

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}`);
});Copy to clipboardErrorCopied

media.createSoundPool10+

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

创建音频池实例,使用callback方式异步获取返回值。

系统能力: SystemCapability.Multimedia.Media.SoundPool

参数:

参数名类型必填说明
maxStreamsnumbersoundPool实例的最大播放的流数
audioRenderInfoaudio.AudioRendererInfo音频播放参数信息
callbackAsyncCallback<SoundPool>回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by callback.

示例:

import audio from '@ohos.multimedia.audio'

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

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

media.createSoundPool10+

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

创建音频池实例,使用Promise方式异步获取返回值。

系统能力: SystemCapability.Multimedia.Media.SoundPool

参数:

参数名类型必填说明
maxStreamsnumbersoundPool实例的最大播放的流数
audioRenderInfoaudio.AudioRendererInfo音频播放参数信息

返回值:

类型说明
Promise<SoundPool>Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by promise.

示例:

import audio from '@ohos.multimedia.audio'

let soundPool: media.SoundPool;
let audioRendererInfo: audio.AudioRendererInfo = {
  usage : audio.StreamUsage.STREAM_USAGE_MEDIA,
  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');
  }
}, (error: BusinessError) => {
  console.error(`soundpool catchCallback, error message:${error.message}`);
});Copy to clipboardErrorCopied

AVErrorCode9+

媒体错误码类型枚举

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
AVERR_OK0表示操作成功。
AVERR_NO_PERMISSION201表示无权限执行此操作。
AVERR_INVALID_PARAMETER401表示传入入参无效。
AVERR_UNSUPPORT_CAPABILITY801表示当前版本不支持该API能力。
AVERR_NO_MEMORY5400101表示系统内存不足或服务数量达到上限。
AVERR_OPERATE_NOT_PERMIT5400102表示当前状态不允许或无权执行此操作。
AVERR_IO5400103表示数据流异常信息。
AVERR_TIMEOUT5400104表示系统或网络响应超时。
AVERR_SERVICE_DIED5400105表示服务进程死亡。
AVERR_UNSUPPORT_FORMAT5400106表示不支持当前媒体资源的格式。

MediaType8+

媒体类型枚举。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
MEDIA_TYPE_AUD0表示音频。
MEDIA_TYPE_VID1表示视频。

CodecMimeType8+

Codec MIME类型枚举。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
VIDEO_H263'video/h263'表示视频/h263类型。
VIDEO_AVC'video/avc'表示视频/avc类型。
VIDEO_MPEG2'video/mpeg2'表示视频/mpeg2类型。
VIDEO_MPEG4'video/mp4v-es'表示视频/mpeg4类型。
VIDEO_VP8'video/x-vnd.on2.vp8'表示视频/vp8类型。
AUDIO_AAC'audio/mp4a-latm'表示音频/mp4a-latm类型。
AUDIO_VORBIS'audio/vorbis'表示音频/vorbis类型。
AUDIO_FLAC'audio/flac'表示音频/flac类型。

MediaDescriptionKey8+

媒体信息描述枚举。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
MD_KEY_TRACK_INDEX'track_index'表示轨道序号,其对应键值类型为number。
MD_KEY_TRACK_TYPE'track_type'表示轨道类型,其对应键值类型为number,参考MediaType
MD_KEY_CODEC_MIME'codec_mime'表示codec_mime类型,其对应键值类型为string。
MD_KEY_DURATION'duration'表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。
MD_KEY_BITRATE'bitrate'表示比特率,其对应键值类型为number,单位为比特率(bps)。
MD_KEY_WIDTH'width'表示视频宽度,其对应键值类型为number,单位为像素(px)。
MD_KEY_HEIGHT'height'表示视频高度,其对应键值类型为number,单位为像素(px)。
MD_KEY_FRAME_RATE'frame_rate'表示视频帧率,其对应键值类型为number,单位为100帧每秒(100fps)。
MD_KEY_AUD_CHANNEL_COUNT'channel_count'表示声道数,其对应键值类型为number。
MD_KEY_AUD_SAMPLE_RATE'sample_rate'表示采样率,其对应键值类型为number,单位为赫兹(Hz)。

BufferingInfoType8+

缓存事件类型枚举。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
BUFFERING_START1表示开始缓存。
BUFFERING_END2表示结束缓存。
BUFFERING_PERCENT3表示缓存百分比。
CACHED_DURATION4表示缓存时长,单位为毫秒(ms)。

StateChangeReason9+

表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
USER1表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。
BACKGROUND2表示系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。

AVPlayer9+

播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过createAVPlayer()构建一个AVPlayer实例。

Audio/Video播放demo可参考:音频播放开发指导视频播放开发指导

属性

系统能力: SystemCapability.Multimedia.Media.AVPlayer

名称类型可读可写说明
url9+字符串媒体URL,只允许在idle状态下设置,静态属性。
支持的视频格式(mp4、mpeg-ts、webm、mkv)。
支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。
支持路径示例
1. fd类型播放:fd://xx。


2. http网络播放: http://xx。
3. https网络播放: https://xx。
4. hls网络播放路径:http://xx或者https://xx。
fdSrc9+AVFileDescriptor媒体文件描述,只允许在idle状态下设置,静态属性。
使用场景:应用中的媒体资源被连续存储在同一个文件中。
支持的视频格式(mp4、mpeg-ts、webm、mkv)。
支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。
使用示例
假设一个连续存储的媒体文件:
视频1(地址偏移:0,字节长度:100);
视频2(地址偏移:101,字节长度:50);
视频3(地址偏移:151,字节长度:150);
1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。
2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }。
3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }。
假设是一个独立的媒体文件: 请使用src=fd://xx。
dataSrc10+AVDataSrcDescriptor流式媒体资源描述,只允许在idle状态下设置,静态属性。
使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。
支持的视频格式(mp4、mpeg-ts、webm、mkv)。
支持的音频格式(m4a、aac、mp3、ogg、wav、flac)。
使用示例
假设用户正在从远端服务器获取音视频媒体文件,希望下载到本地的同时播放已经下载好的部分:
1.用户需要获取媒体文件的总大小size(单位为字节),获取不到时设置为-1。
2.用户需要实现回调函数func用于填写数据,如果size = -1,则func形式为:func(buffer: ArrayBuffer, length: number),此时播放器只会按照顺序获取数据;否则func形式为:func(buffer: ArrayBuffer, length: number, pos: number),播放器会按需跳转并获取数据。
3.用户设置AVDataSrcDescriptor {fileSize = size, callback = func}。
注意事项
如果播放的是mp4/m4a格式用户需要保证moov字段(媒体信息字段)在mdat字段(媒体数据字段)之前,或者moov之前的字段小于10M,否则会导致解析失败无法播放。
surfaceId9+字符串视频窗口ID,默认无窗口,只允许在initialized状态下设置,静态属性。
使用场景:视频播放的窗口渲染,纯音频播放不用设置。
使用示例
通过Xcomponent创建surfaceId
loop9+布尔视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。
只允许在prepared/playing/paused/completed状态下设置。
直播场景不支持loop设置。
videoScaleType9+VideoScaleType视频缩放模式,默认VIDEO_SCALE_TYPE_FIT_CROP,动态属性。
只允许在prepared/playing/paused/completed状态下设置。
audioInterruptMode9+audio.InterruptMode音频焦点模型,默认SHARE_MODE,动态属性。
只允许在prepared/playing/paused/completed状态下设置。
audioRendererInfo10+audio.AudioRendererInfo设置音频渲染信息,默认值content为CONTENT_TYPE_MUSIC,usage为STREAM_USAGE_MEDIA,rendererFlags为0。
只允许在initialized状态下设置
audioEffectMode10+audio.AudioEffectMode设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的content和usage变动时会恢复为默认值,只允许在prepared/playing/paused/completed状态下设置。
state9+AVPlayerState音视频播放的状态,全状态有效,可查询参数。
currentTime9+视频的当前播放位置,单位为毫秒(ms),可查询参数。
返回为(-1)表示无效值,prepared/playing/paused/completed状态下有效。
直播场景默认返回(-1)。
duration9+视频时长,单位为毫秒(ms),可查询参数。
返回为(-1)表示无效值,prepared/playing/paused/completed状态下有效。
直播场景默认返回(-1)。
width9+视频宽,单位为像素(px),可查询参数。
返回为(0)表示无效值,prepared/playing/paused/completed状态下有效。
height9+视频高,单位为像素(px),可查询参数。
返回为(0)表示无效值,prepared/playing/paused/completed状态下有效。

说明:

将资源句柄(fd)传递给媒体播放器之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个媒体播放器。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致播放异常。

on('stateChange')9+

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

监听播放状态机AVPlayerState切换的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。
callbackfunction状态机切换事件回调方法:
state: AVPlayerState,表示当前播放状态;
reason: StateChangeReason,表示当前播放状态的切换原因。

示例:

// 创建avPlayer实例对象
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('unknown state :' + state);
      break;
  }
})Copy to clipboardErrorCopied

off('stateChange')9+

off(type: 'stateChange'): void

取消监听播放状态机AVPlayerState切换的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring状态机切换事件回调类型,取消注册的事件:'stateChange'

示例:

avPlayer.off('stateChange')Copy to clipboardErrorCopied

on('error')9+

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

监听AVPlayer的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时AVPlayerState也切至error状态,用户需要通过reset()或者release()退出播放操作。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。
callbackfunction错误事件回调方法:使用播放器的过程中发生错误,会提供错误码ID和错误信息。

错误码:

以下错误码的详细介绍请参见媒体错误码

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

示例:

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)
})Copy to clipboardErrorCopied

off('error')9+

off(type: 'error'): void

取消监听播放的错误事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring错误事件回调类型,取消注册的事件:'error'

示例:

avPlayer.off('error')Copy to clipboardErrorCopied

prepare9+

prepare(callback: AsyncCallback<void>): void

通过回调方式准备播放音频/视频,需在stateChange事件成功触发至initialized状态后,才能调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction准备播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400106Unsupport format. Return by callback.

示例:

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

prepare9+

prepare(): Promise<void>

通过Promise方式准备播放音频/视频,需在stateChange事件成功触发至initialized状态后,才能调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>准备播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400106Unsupport format. Return by promise.

示例:

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

play9+

play(callback: AsyncCallback<void>): void

通过回调方式开始播放音视频资源,只能在prepared/paused/completed状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction开始播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

play9+

play(): Promise<void>

通过Promise方式开始播放音视频资源,只能在prepared/paused/completed状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>开始播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

pause9+

pause(callback: AsyncCallback<void>): void

通过回调方式暂停播放音视频资源,只能在playing状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction暂停播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

pause9+

pause(): Promise<void>

通过Promise方式暂停播放音视频资源,只能在playing状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>暂停播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

stop9+

stop(callback: AsyncCallback<void>): void

通过回调方式停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction停止播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

stop9+

stop(): Promise<void>

通过Promise方式停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>停止播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

reset9+

reset(callback: AsyncCallback<void>): void

通过回调方式重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction重置播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

reset9+

reset(): Promise<void>

通过Promise方式重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>重置播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

release9+

release(callback: AsyncCallback<void>): void

通过回调方式销毁播放资源,除released状态,都可以调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackfunction销毁播放的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

release9+

release(): Promise<void>

通过Promise方式销毁播放,除released状态,都可以调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<void>销毁播放的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

getTrackDescription9+

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

通过回调方式获取音视频轨道信息,可以在prepared/playing/paused状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<Array<MediaDescription>>音视频轨道信息MediaDescription数组回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.

示例:

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

getTrackDescription9+

getTrackDescription(): Promise<Array<MediaDescription>>

通过Promise方式获取音视频轨道信息,可以在prepared/playing/paused状态调用。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

类型说明
Promise<Array<MediaDescription>>音视频轨道信息MediaDescription数组Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.

示例:

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

seek9+

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

跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过seekDone事件确认是否生效。 注:直播场景不支持seek。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
timeMsnumber指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。
modeSeekMode基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,仅在视频资源播放时设置

示例:

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

on('seekDone')9+

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

监听seek生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringseek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。
callbackCallback<number>seek生效的事件回调方法,只会上报用户请求的time位置。
视频播放:SeekMode会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。

示例:

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

off('seekDone')9+

off(type: 'seekDone'): void

取消监听seek生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringseek生效的事件回调类型,取消注册的事件:'seekDone'。

示例:

avPlayer.off('seekDone')Copy to clipboardErrorCopied

setSpeed9+

setSpeed(speed: PlaybackSpeed): void

设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过speedDone事件确认是否生效。 注:直播场景不支持setSpeed。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
speedPlaybackSpeed指定播放倍速模式。

示例:

avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)Copy to clipboardErrorCopied

on('speedDone')9+

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

监听setSpeed生效的事件

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。
callbackCallback<number>setSpeed生效的事件回调方法,上报生效的倍速模式,具体见PlaybackSpeed

示例:

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

off('speedDone')9+

off(type: 'speedDone'): void

取消监听setSpeed生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetSpeed生效的事件回调类型,取消注册的事件:'speedDone'。

示例:

avPlayer.off('speedDone')Copy to clipboardErrorCopied

setBitrate9+

setBitrate(bitrate: number): void

选择要播放的指定比特率,仅对HLS协议网络流有效,只能在prepared/playing/paused/completed状态调用,可以通过bitrateDone事件确认是否生效。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
bitratenumber指定比特率,可以通过availableBitrates事件获得当前HLS协议流可用的比特率,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最小和最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。

示例:

let bitrate: number = 96000
avPlayer.setBitrate(bitrate)Copy to clipboardErrorCopied

on('bitrateDone')9+

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

监听setBitrate生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。
callbackfunctionsetBitrate生效的事件回调方法,上报生效的比特率。

示例:

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

off('bitrateDone')9+

off(type: 'bitrateDone'): void

取消监听setBitrate生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。

示例:

avPlayer.off('bitrateDone')Copy to clipboardErrorCopied

on('availableBitrates')9+

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

监听HLS协议流可用的比特率列表,只会在切换prepared状态后上报。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringHLS协议可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。
callbackfunctionHLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。

示例:

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

off('availableBitrates')9+

off(type: 'availableBitrates'): void

取消监听HLS协议流可用的比特率列表。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringHLS协议可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。

示例:

avPlayer.off('availableBitrates')Copy to clipboardErrorCopied

setVolume9+

setVolume(volume: number): void

设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过volumeChange事件确认是否生效。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
volumenumber指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。

示例:

let volume: number = 1.0
avPlayer.setVolume(volume)Copy to clipboardErrorCopied

on('volumeChange')9+

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

监听setVolume生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。
callbackfunctionsetVolume生效的事件回调方法,上报生效的媒体音量。

示例:

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

off('volumeChange')9+

off(type: 'volumeChange'): void

取消监听setVolume生效的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestringsetVolume生效的事件回调类型,取消注册的事件:'volumeChange'。

示例:

avPlayer.off('volumeChange')Copy to clipboardErrorCopied

on('endOfStream')9+

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

监听资源播放至结尾的事件;如果用户设置loop=1,播放会跳转至开头重播;如果用户没有设置loop,会通过stateChange上报completed状态。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。
callbackCallback<void>资源播放至结尾的事件回调方法。

示例:

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

off('endOfStream')9+

off(type: 'endOfStream'): void

取消监听资源播放至结尾的事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。

示例:

avPlayer.off('endOfStream')Copy to clipboardErrorCopied

on('timeUpdate')9+

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

监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔1s时间上报,因用户操作(seek)产生的时间变化会立刻上报。 注:直播场景不支持timeUpdate上报。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring时间更新的回调类型,支持的事件:'timeUpdate'。
callbackfunction当前时间。

示例:

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

off('timeUpdate')9+

off(type: 'timeUpdate'): void

取消监听资源播放当前时间。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring时间更新的回调类型,取消注册的事件:'timeUpdate'。

示例:

avPlayer.off('timeUpdate')Copy to clipboardErrorCopied

on('durationUpdate')9+

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

监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。 注:直播场景不支持durationUpdate上报。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring时长更新的回调类型,支持的事件:'durationUpdate'。
callbackfunction资源时长。

示例:

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

off('durationUpdate')9+

off(type: 'durationUpdate'): void

取消监听资源播放资源的时长。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring时长更新的回调类型,取消注册的事件:'durationUpdate'。

示例:

avPlayer.off('durationUpdate')Copy to clipboardErrorCopied

on('bufferingUpdate')9+

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

订阅音视频缓存更新事件,仅网络播放支持该订阅事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring播放缓存事件回调类型,支持的事件:'bufferingUpdate'。
callbackfunction播放缓存事件回调方法。
BufferingInfoType为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。

示例:

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

off('bufferingUpdate')9+

off(type: 'bufferingUpdate'): void

取消监听音视频缓存更新事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。

示例:

avPlayer.off('bufferingUpdate')Copy to clipboardErrorCopied

on('startRenderFrame')9+

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

订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。
callbackCallback<void>视频播放开始首帧渲染事件回调方法。

示例:

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

off('startRenderFrame')9+

off(type: 'startRenderFrame'): void

取消监听视频播放开始首帧渲染的更新事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。

示例:

avPlayer.off('startRenderFrame')Copy to clipboardErrorCopied

on('videoSizeChange')9+

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

监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报;

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。
callbackfunction视频播放宽高变化事件回调方法,width表示宽,height表示高。

示例:

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

off('videoSizeChange')9+

off(type: 'videoSizeChange'): void

取消监听视频播放宽高变化事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。

示例:

avPlayer.off('videoSizeChange')Copy to clipboardErrorCopied

on('audioInterrupt')9+

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

监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型audio.InterruptMode触发此事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。
callbackaudio.InterruptEvent9+音频焦点变化事件回调方法。

示例:

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

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

off('audioInterrupt')9+

off(type: 'audioInterrupt'): void

取消监听音频焦点变化事件。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

参数:

参数名类型必填说明
typestring音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。

示例:

avPlayer.off('audioInterrupt')Copy to clipboardErrorCopied

AVPlayerState9+

AVPlayer的状态机,可通过state属性主动获取当前状态,也可通过监听stateChange事件上报当前状态,状态机之间的切换规则,可参考音频播放开发指导

系统能力: SystemCapability.Multimedia.Media.AVPlayer

名称类型说明
idlestring闲置状态,AVPlayer刚被创建createAVPlayer()或者调用了reset()方法之后,进入Idle状态。
首次创建createAVPlayer(),所有属性都为默认值。
调用reset()方法,url9+ 或 fdSrc9+或dataSrc10+属性及loop属性会被重置,其他用户设置的属性将被保留。
initializedstring资源初始化,在Idle 状态设置 url9+ 或 fdSrc9+属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。
preparedstring已准备状态,在initialized状态调用prepare()方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。
playingstring正在播放状态,在prepared/paused/completed状态调用play()方法,AVPlayer会进入playing状态。
pausedstring暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。
completedstring播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = 1),AVPlayer会进入completed状态,此时调用play()会进入playing状态和重播,调用stop()会进入stopped状态。
stoppedstring停止状态,在prepared/playing/paused/completed状态调用stop()方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用prepare()重新准备,也可以调用reset()重置,或者调用release()彻底销毁。
releasedstring销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用release()方法后,会进入released状态,结束流程。
errorstring错误状态,当播放引擎发生不可逆的错误(详见媒体错误码),则会转换至当前状态,可以调用reset()重置,也可以调用release()销毁重建。
注意: 区分error状态和 on('error') :
1、进入error状态时,会触发on('error')监听事件,可以通过on('error')事件获取详细错误信息;
2、处于error状态时,播放服务进入不可播控的状态,要求客户端设计容错机制,使用reset()重置或者release()销毁重建;
3、如果客户端收到on('error'),但未进入error状态:
原因1:客户端未按状态机调用API或传入参数错误,被AVPlayer拦截提醒,需要客户端调整代码逻辑;
原因2:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。

AVFileDescriptor9+

音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。

系统能力: SystemCapability.Multimedia.Media.Core

名称类型必填说明
fdnumber资源句柄,通过resourceManager.getRawFd获取。
offsetnumber资源偏移量,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。
lengthnumber资源长度,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。

AVDataSrcDescriptor10+

音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。

系统能力: SystemCapability.Multimedia.Media.AVPlayer

名称类型必填说明
fileSizenumber待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。
callbackfunction用户设置的回调函数,用于填写数据。
- buffer,ArrayBuffer类型,表示被填写的内存,必选。
- length,number类型,表示被填写内存的最大长度,必选。
- pos,number类型,表示填写的数据在资源文件中的位置,可选,当fileSize设置为-1时,该参数禁止被使用。

SeekMode8+

视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
SEEK_NEXT_SYNC0表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。
SEEK_PREV_SYNC1表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。

PlaybackSpeed8+

视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称说明
SPEED_FORWARD_0_75_X0表示视频播放正常播速的0.75倍。
SPEED_FORWARD_1_00_X1表示视频播放正常播速。
SPEED_FORWARD_1_25_X2表示视频播放正常播速的1.25倍。
SPEED_FORWARD_1_75_X3表示视频播放正常播速的1.75倍。
SPEED_FORWARD_2_00_X4表示视频播放正常播速的2.00倍。

VideoScaleType9+

枚举,视频缩放模式。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称说明
VIDEO_SCALE_TYPE_FIT0视频拉伸至与窗口等大。
VIDEO_SCALE_TYPE_FIT_CROP1保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。

MediaDescription8+

通过key-value方式获取媒体信息。

系统能力: SystemCapability.Multimedia.Media.Core

名称类型必填说明
[key: string]Object该键值对支持的key取值范围,请参考MediaDescriptionKey;每个key值的Object类型和范围,请参考MediaDescriptionKey对应Key值的说明

示例:

import media from '@ohos.multimedia.media'

// 创建avPlayer实例对象
let avPlayer = await media.createAVPlayer();

function printfItemDescription(obj: media.MediaDescription, key: string) {
  let property: Object = obj[key];
  console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey]
  console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[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);  //打印出每条轨道MD_KEY_TRACK_TYPE的值
    }
  } else {
    console.error(`audio getTrackDescription fail, error:${error}`);
  }
});Copy to clipboardErrorCopied

AVRecorder9+

音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过createAVRecorder()构建一个AVRecorder实例。

音视频录制demo可参考:音频录制开发指导视频录制开发指导

说明:

使用相机进行视频录制时,需要与相机模块配合,相机模块接口开放状态以及使用详情见相机管理

属性

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称类型可读可写说明
state9+AVRecorderState音视频录制的状态。

prepare9+

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

异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。

需要权限: ohos.permission.MICROPHONE

不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。

使用相机视频录制还需要与相机模块配合,权限获取以及接口使用详见相机管理

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
configAVRecorderConfig配置音视频录制的相关参数。
callbackAsyncCallback<void>异步音视频录制prepare方法的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
201Permission denied. Return by callback.
401Parameter error. Return by callback.
5400102Operate not permit. Return by callback.
5400105Service died. Return by callback.

示例:

// 配置参数以实际硬件设备支持的范围为准
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_MPEG4,
  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://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错
  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);
  }
})Copy to clipboardErrorCopied

prepare9+

prepare(config: AVRecorderConfig): Promise<void>

异步方式进行音视频录制的参数设置。通过Promise获取返回值。

需要权限: ohos.permission.MICROPHONE

不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。

使用相机视频录制还需要与相机模块配合,权限获取以及接口使用详见相机管理

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
configAVRecorderConfig配置音视频录制的相关参数。

返回值:

类型说明
Promise<void>异步音视频录制prepare方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
201Permission denied. Return by promise.
401Parameter error. Return by promise.
5400102Operate not permit. Return by promise.
5400105Service died. Return by promise.

示例:

// 配置参数以实际硬件设备支持的范围为准
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_MPEG4,
  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://',  // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错
  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);
});Copy to clipboardErrorCopied

getInputSurface9+

getInputSurface(callback: AsyncCallback<string>): void

异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。

应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。

需在prepare()事件成功触发后,才能调用getInputSurface()方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<string>异步获得surface的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput

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);
  }
});
Copy to clipboardErrorCopied

getInputSurface9+

getInputSurface(): Promise<string>

异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。

应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。

需在prepare()事件成功触发后,才能调用getInputSurface方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<string>异步获得surface的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

let surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput

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

start9+

start(callback: AsyncCallback<void>): void

异步方式开始视频录制。通过注册回调函数获取返回值。

纯音频录制需在prepare()事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在getInputSurface()事件成功触发后,才能调用start方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步开始视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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

start9+

start(): Promise<void>

异步方式开始视频录制。通过Promise获取返回值。

纯音频录制需在prepare()事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在getInputSurface()事件成功触发后,才能调用start方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步开始视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

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

pause9+

pause(callback: AsyncCallback<void>): void

异步方式暂停视频录制。通过注册回调函数获取返回值。

需要start()事件成功触发后,才能调用pause方法,可以通过调用resume()接口来恢复录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步获得surface的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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

pause9+

pause(): Promise<void>

异步方式暂停视频录制。通过Promise获取返回值。

需要start()事件成功触发后,才能调用pause方法,可以通过调用resume()接口来恢复录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步暂停视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

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

resume9+

resume(callback: AsyncCallback<void>): void

异步方式恢复视频录制。通过注册回调函数获取返回值。

需要在pause()事件成功触发后,才能调用resume方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步恢复视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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

resume9+

resume(): Promise<void>

异步方式恢复视频录制。通过Promise获取返回值。

需要在pause()事件成功触发后,才能调用resume方法。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步恢复视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

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

stop9+

stop(callback: AsyncCallback<void>): void

异步方式停止视频录制。通过注册回调函数获取返回值。

需要在start()或pause()事件成功触发后,才能调用stop方法。

纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步停止视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by callback.
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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

stop9+

stop(): Promise<void>

异步方式停止视频录制。通过Promise获取返回值。

需要在start()或pause()事件成功触发后,才能调用stop方法。

纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步停止视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operate not permit. Return by promise.
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

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

reset9+

reset(callback: AsyncCallback<void>): void

异步方式重置音视频录制。通过注册回调函数获取返回值。

纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步重置音视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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

reset9+

reset(): Promise<void>

异步方式重置音视频录制。通过Promise获取返回值。

纯音频录制时,需要重新调用prepare()接口才能重新录制。纯视频录制,音视频录制时,需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步重置音视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103IO error. Return by promise.
5400105Service died. Return by promise.

示例:

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

release9+

release(callback: AsyncCallback<void>): void

异步方式释放音视频录制资源。通过注册回调函数获取返回值。

释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步释放音视频录制资源的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400105Service died. Return by callback.

示例:

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

release9+

release(): Promise<void>

异步方式释放音视频录制资源。通过Promise获取返回值。

释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

类型说明
Promise<void>异步释放音视频录制资源方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400105Service died. Return by callback.

示例:

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

on('stateChange')9+

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

订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
typestring状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。
callbackfunction状态机切换事件回调方法:
state: AVRecorderState,表示当前播放状态 ;
reason: StateChangeReason,表示当前播放状态的切换原因。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103IO error. Return by callback.
5400105Service died. Return by callback.

示例:

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);
});Copy to clipboardErrorCopied

off('stateChange')9+

off(type: 'stateChange'): void

取消订阅播放状态机AVRecorderState切换的事件。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
typestring状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。

示例:

avRecorder.off('stateChange');Copy to clipboardErrorCopied

on('error')9+

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

订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时AVRecorderState也切至error状态,用户需要通过reset()或者release()退出录制操作。

用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
typestring录制错误事件回调类型'error'。
- 'error':录制过程中发生错误,触发该事件。
callbackErrorCallback录制错误事件回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400101No memory. Return by callback.
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400104Time out. Return by callback.
5400105Service died. Return by callback.
5400106Unsupport format. Return by callback.

示例:

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

off('error')9+

off(type: 'error'): void

取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

参数:

参数名类型必填说明
typestring录制错误事件回调类型'error'。
- 'error':录制过程中发生错误,触发该事件。

示例:

avRecorder.off('error');Copy to clipboardErrorCopied

AVRecorderState9+

音视频录制的状态机。可通过state属性获取当前状态。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称类型说明
idlestring闲置状态。此时可以调用AVRecorder.prepare()方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用AVRecorder.reset()方法,均进入idle状态。
preparedstring参数设置完成。此时可以调用AVRecorder.start()方法开始录制,进入started状态。
startedstring正在录制。此时可以调用AVRecorder.pause()方法暂停录制,进入paused状态。也可以调用AVRecorder.stop()方法结束录制,进入stopped状态。
pausedstring录制暂停。此时可以调用AVRecorder.resume()方法继续录制,进入started状态。也可以调用AVRecorder.stop()方法结束录制,进入stopped状态。
stoppedstring录制停止。此时可以调用AVRecorder.prepare()方法设置录制参数,重新进入prepared状态。
releasedstring录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用AVRecorder.release()方法进入released状态。
errorstring错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随AVRecorder.on('error')事件,该事件会上报详细错误原因。在error状态时,用户需要调用AVRecorder.reset()方法重置AVRecorder实例,或者调用AVRecorder.release()方法释放资源。

AVRecorderConfig9+

表示音视频录制的参数设置。

通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称类型必填说明
audioSourceTypeAudioSourceType选择录制的音频源类型。选择音频录制时必填。
videoSourceTypeVideoSourceType选择录制的视频源类型。选择视频录制时必填。
profileAVRecorderProfile录制的profile,必要参数。
urlstring录制输出URL:fd://xx (fd number) 

img

,必要参数。
rotationnumber录制的视频旋转角度,仅支持0,90,180,270,默认值为0。
locationLocation录制的地理位置,默认不记录地理位置信息。

AVRecorderProfile9+

音视频录制的配置文件。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称类型必填说明
audioBitratenumber音频编码比特率,选择音频录制时必填,支持范围[8000 - 384000]。
audioChannelsnumber音频采集声道数,选择音频录制时必填,支持范围[1 - 2]。
audioCodecCodecMimeType音频编码格式,选择音频录制时必填。当前仅支持AUDIO_AAC。
audioSampleRatenumber音频采样率,选择音频录制时必填,支持范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 96000]。
fileFormatContainerFormatType文件的容器格式,必要参数。
videoBitratenumber视频编码比特率,选择视频录制时必填,支持范围[1 - 3000000]。
videoCodecCodecMimeType视频编码格式,选择视频录制时必填。当前仅支持VIDEO_MPEG4。
videoFrameWidthnumber视频帧的宽,选择视频录制时必填,支持范围[2 - 1920]。
videoFrameHeightnumber视频帧的高,选择视频录制时必填,支持范围[2 - 1080]。
videoFrameRatenumber视频帧率,选择视频录制时必填,支持范围[1 - 30]。

AudioSourceType9+

表示视频录制中音频源类型的枚举。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称说明
AUDIO_SOURCE_TYPE_DEFAULT0默认的音频输入源类型。
AUDIO_SOURCE_TYPE_MIC1表示MIC的音频输入源。

VideoSourceType9+

表示视频录制中视频源类型的枚举。

系统能力: SystemCapability.Multimedia.Media.AVRecorder

名称说明
VIDEO_SOURCE_TYPE_SURFACE_YUV0输入surface中携带的是raw data。
VIDEO_SOURCE_TYPE_SURFACE_ES1输入surface中携带的是ES data。

ContainerFormatType8+

表示容器格式类型的枚举,缩写为CFT。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
CFT_MPEG_4'mp4'视频的容器格式,MP4。
CFT_MPEG_4A'm4a'音频的容器格式,M4A。

Location

视频录制的地理位置。

系统能力: SystemCapability.Multimedia.Media.Core

名称类型必填说明
latitudenumber地理位置的纬度。
longitudenumber地理位置的经度。

VideoRecorder9+

说明: AVRecorder9+发布后,VideoRecorder停止维护,建议使用AVRecorder替代。

视频录制管理类,用于录制视频媒体。在调用VideoRecorder的方法前,需要先通过createVideoRecorder()构建一个VideoRecorder实例。

属性

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

名称类型可读可写说明
state9+VideoRecordState视频录制的状态。

prepare9+

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

异步方式进行视频录制的参数设置。通过注册回调函数获取返回值。

需要权限: ohos.permission.MICROPHONE

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
configVideoRecorderConfig配置视频录制的相关参数。
callbackAsyncCallback<void>异步视频录制prepare方法的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
201Permission denied. Return by callback.
401Parameter error. Return by callback.
5400102Operation not allowed. Return by callback.
5400105Service died. Return by callback.

示例:

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

// 配置参数以实际硬件设备支持的范围为准
let videoProfile: media.VideoRecorderProfile = {
  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 videoConfig: media.VideoRecorderConfig = {
  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  profile : videoProfile,
  url : 'fd://xx',   // 文件需先由调用者创建,并给予适当的权限
  rotation : 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);
  }
})Copy to clipboardErrorCopied

prepare9+

prepare(config: VideoRecorderConfig): Promise<void>

异步方式进行视频录制的参数设置。通过Promise获取返回值。

需要权限: ohos.permission.MICROPHONE

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
configVideoRecorderConfig配置视频录制的相关参数。

返回值:

类型说明
Promise<void>异步视频录制prepare方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
201Permission denied. Return by promise.
401Parameter error. Return by promise.
5400102Operation not allowed. Return by promise.
5400105Service died. Return by promise.

示例:

// 配置参数以实际硬件设备支持的范围为准
let videoProfile: media.VideoRecorderProfile = {
  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 videoConfig: media.VideoRecorderConfig = {
  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  profile : videoProfile,
  url : 'fd://xx',   // 文件需先由调用者创建,并给予适当的权限
  rotation : 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);
});Copy to clipboardErrorCopied

getInputSurface9+

getInputSurface(callback: AsyncCallback<string>): void

异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。

应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。

只能在prepare()接口调用后调用。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<string>异步获得surface的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

// asyncallback
let surfaceID: string;   // 传递给外界的surfaceID
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);
  }
});Copy to clipboardErrorCopied

getInputSurface9+

getInputSurface(): Promise<string>;

异步方式获得录制需要的surface。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的数据。

应当注意,填入的视频数据需要携带时间戳(单位ns),buffersize。时间戳的起始时间请以系统启动时间为基准。

只能在prepare()接口调用后调用。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<string>异步获得surface的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

// promise
let surfaceID: string;                                               // 传递给外界的surfaceID
videoRecorder.getInputSurface().then((surfaceId: string) => {
  console.info('getInputSurface success');
  surfaceID = surfaceId;
}).catch((err: Error) => {
  console.error('getInputSurface failed and catch error is ' + err.message);
});Copy to clipboardErrorCopied

start9+

start(callback: AsyncCallback<void>): void

异步方式开始视频录制。通过注册回调函数获取返回值。

在prepare()和getInputSurface()后调用,需要依赖数据源先给surface传递数据。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步开始视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

start9+

start(): Promise<void>

异步方式开始视频录制。通过Promise获取返回值。

在prepare()和getInputSurface()后调用,需要依赖数据源先给surface传递数据。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<void>异步开始视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

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

pause9+

pause(callback: AsyncCallback<void>): void

异步方式暂停视频录制。通过注册回调函数获取返回值。

在start()后调用。可以通过调用resume()接口来恢复录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步暂停视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

pause9+

pause(): Promise<void>

异步方式暂停视频录制。通过Promise获取返回值。

在start()后调用。可以通过调用resume()接口来恢复录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<void>异步暂停视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

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

resume9+

resume(callback: AsyncCallback<void>): void

异步方式恢复视频录制。通过注册回调函数获取返回值。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步恢复视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

resume9+

resume(): Promise<void>

异步方式恢复视频录制。通过Promise获取返回值。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
承诺<无效>异步恢复视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

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

stop9+

stop(callback: AsyncCallback<void>): void

异步方式停止视频录制。通过注册回调函数获取返回值。

需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
回调AsyncCallback<void>异步停止视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by callback.
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

stop9+

stop(): Promise<void>

异步方式停止视频录制。通过Promise获取返回值。

需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<void>异步停止视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400102Operation not allowed. Return by promise.
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

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

release9+

release(callback: AsyncCallback<void>): void

异步方式释放视频录制资源。通过注册回调函数获取返回值。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步释放视频录制资源的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400105Service died. Return by callback.

示例:

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

release9+

release(): Promise<void>

异步方式释放视频录制资源。通过Promise获取返回值。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<void>异步释放视频录制资源方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400105Service died. Return by callback.

示例:

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

reset9+

reset(callback: AsyncCallback<void>): void

异步方式重置视频录制。通过注册回调函数获取返回值。

需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
callbackAsyncCallback<void>异步重置视频录制的回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

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

reset9+

reset(): Promise<void>

异步方式重置视频录制。通过Promise获取返回值。

需要重新调用prepare()和getInputSurface()接口才能重新录制。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

返回值:

类型说明
Promise<void>异步重置视频录制方法的Promise返回值。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103I/O error. Return by promise.
5400105Service died. Return by promise.

示例:

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

on('error')9+

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

开始订阅视频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

参数:

参数名类型必填说明
typestring录制错误事件回调类型'error'。
- 'error':视频录制过程中发生错误,触发该事件。
callbackErrorCallback录制错误事件回调方法。

错误码:

以下错误码的详细介绍请参见媒体错误码

错误码ID错误信息
5400103I/O error. Return by callback.
5400105Service died. Return by callback.

示例:

// 当获取videoRecordState接口出错时通过此订阅事件上报
videoRecorder.on('error', (error: Error) => {   // 设置'error'事件回调
  console.error(`audio error called, error: ${error}`);
})Copy to clipboardErrorCopied

VideoRecordState9+

视频录制的状态机。可通过state属性获取当前状态。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

名称类型说明
idlestring视频录制空闲。
preparedstring视频录制参数设置完成。
playingstring视频正在录制。
pausedstring视频暂停录制。
stoppedstring视频录制停止。
errorstring错误状态。

VideoRecorderConfig9+

表示视频录制的参数设置。

通过audioSourceType和videoSourceType区分纯视频录制和音视频录制(纯音频录制请使用AVRecorderAudioRecorder)。纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

名称类型必填说明
audioSourceTypeAudioSourceType视频录制的音频源类型,选择音频录制时必填。
videoSourceTypeVideoSourceType视频录制的视频源类型。
profileVideoRecorderProfile视频录制的profile。
rotationnumber录制的视频旋转角度,仅支持0,90,180,270,默认值为0。
locationLocation录制视频的地理位置,默认不记录地理位置信息。
urlstring视频输出URL:fd://xx (fd number)

VideoRecorderProfile9+

视频录制的配置文件。

系统能力: SystemCapability.Multimedia.Media.VideoRecorder

系统接口: 该接口为系统接口

名称类型必填说明
audioBitratenumber音频编码比特率,选择音频录制时必填。
audioChannelsnumber音频采集声道数,选择音频录制时必填。
audioCodecCodecMimeType音频编码格式,选择音频录制时必填。
audioSampleRatenumber音频采样率,选择音频录制时必填。
fileFormatContainerFormatType文件的容器格式。
videoBitratenumber视频编码比特率。
videoCodecCodecMimeType视频编码格式。
videoFrameWidthnumber录制视频帧的宽。
videoFrameHeightnumber录制视频帧的高。
videoFrameRatenumber录制视频帧率。

media.createAudioPlayer(deprecated)

createAudioPlayer(): AudioPlayer

同步方式创建音频播放实例。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用createAVPlayer替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

返回值:

类型说明
AudioPlayer返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。

示例:

let audioPlayer: media.AudioPlayer = media.createAudioPlayer();Copy to clipboardErrorCopied

media.createVideoPlayer(deprecated)

createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void

异步方式创建视频播放实例,通过注册回调函数获取返回值。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用createAVPlayer替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<VideoPlayer>回调函数。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。

示例:

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}`);
  }
});Copy to clipboardErrorCopied

media.createVideoPlayer(deprecated)

createVideoPlayer(): Promise<VideoPlayer>

异步方式创建视频播放实例,通过Promise获取返回值。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用createAVPlayer替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<VideoPlayer>Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。

示例:

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}`);
});Copy to clipboardErrorCopied

media.createAudioRecorder(deprecated)

createAudioRecorder(): AudioRecorder

创建音频录制的实例来控制音频的录制。 一台设备只允许创建一个录制实例。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用createAVRecorder替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

返回值:

类型说明
AudioRecorder返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。

示例:

let audioRecorder: media.AudioRecorder = media.createAudioRecorder();Copy to clipboardErrorCopied

MediaErrorCode(deprecated)

媒体服务错误类型枚举。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用媒体错误码替代。

系统能力: SystemCapability.Multimedia.Media.Core

名称说明
MSERR_OK0表示操作成功。
MSERR_NO_MEMORY1表示申请内存失败,系统可能无可用内存。
MSERR_OPERATION_NOT_PERMIT2表示无权限执行此操作。
MSERR_INVALID_VAL3表示传入入参无效。
MSERR_IO4表示发生IO错误。
MSERR_TIMEOUT5表示操作超时。
MSERR_UNKNOWN6表示未知错误。
MSERR_SERVICE_DIED7表示服务端失效。
MSERR_INVALID_STATE8表示在当前状态下,不允许执行此操作。
MSERR_UNSUPPORTED9表示在当前版本下,不支持此操作。

AudioPlayer(deprecated)

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer替代。

音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过createAudioPlayer()构建一个AudioPlayer实例。

属性(deprecated)

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

名称类型可读可写说明
srcstring音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav)。
支持路径示例
1. fd类型播放:fd://xx


2. http网络播放: http://xx
3. https网络播放: https://xx
4. hls网络播放路径:http://xx或者https://xx
需要权限: ohos.permission.READ_MEDIA 或 ohos.permission.INTERNET。
fdSrc9+AVFileDescriptor音频媒体文件描述,使用场景:应用中的音频资源被连续存储在同一个文件中。
使用示例
假设一个连续存储的音乐文件:
音乐1(地址偏移:0,字节长度:100)
音乐2(地址偏移:101,字节长度:50)
音乐3(地址偏移:151,字节长度:150)
1. 播放音乐1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
2. 播放音乐2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
3. 播放音乐3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
假设是一个独立的音乐文件: 请使用src=fd://xx
loopboolean音频循环播放属性,设置为'true'表示循环播放。
audioInterruptMode9+audio.InterruptMode音频焦点模型。
currentTimenumber音频的当前播放位置,单位为毫秒(ms)。
durationnumber音频时长,单位为毫秒(ms)。
stateAudioState可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。

play(deprecated)

play(): void

开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.play替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

audioPlayer.on('play', () => {    //设置'play'事件回调
  console.log('audio play success');
});
audioPlayer.play();Copy to clipboardErrorCopied

pause(deprecated)

pause(): void

暂停播放音频资源。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.pause替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

audioPlayer.on('pause', () => {    //设置'pause'事件回调
  console.log('audio pause success');
});
audioPlayer.pause();Copy to clipboardErrorCopied

stop(deprecated)

stop(): void

停止播放音频资源。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.stop替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

audioPlayer.on('stop', () => {    //设置'stop'事件回调
  console.log('audio stop success');
});
audioPlayer.stop();Copy to clipboardErrorCopied

reset(deprecated)

reset(): void

重置播放音频资源。

说明: 从API version 7开始支持,从API version 9开始废弃,建议使用AVPlayer.reset替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

audioPlayer.on('reset', () => {    //设置'reset'事件回调
  console.log('audio reset success');
});
audioPlayer.reset();Copy to clipboardErrorCopied

seek(deprecated)

seek(timeMs: number): void

跳转到指定播放位置。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.seek替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
timeMsnumber指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。

示例:

audioPlayer.on('timeUpdate', (seekDoneTime: number) => {    //设置'timeUpdate'事件回调
  if (seekDoneTime == null) {
    console.info('audio seek fail');
    return;
  }
  console.log('audio seek success. seekDoneTime: ' + seekDoneTime);
});
audioPlayer.seek(30000);    //seek到30000ms的位置Copy to clipboardErrorCopied

setVolume(deprecated)

setVolume(vol: number): void

设置音量。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.setVolume替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
volnumber指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。

示例:

audioPlayer.on('volumeChange', () => {    //设置'volumeChange'事件回调
  console.log('audio volumeChange success');
});
audioPlayer.setVolume(1);    //设置音量到100%Copy to clipboardErrorCopied

release(deprecated)

release(): void

释放音频资源。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.release替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

audioPlayer.release();
audioPlayer = undefined;Copy to clipboardErrorCopied

getTrackDescription(deprecated)

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

通过回调方式获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.getTrackDescription替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<Array<MediaDescription>>音频轨道信息MediaDescription数组回调方法。

示例:

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

getTrackDescription(deprecated)

getTrackDescription(): Promise<Array<MediaDescription>>

通过Promise方式获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.getTrackDescription替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

返回值:

类型说明
Promise<Array<MediaDescription>>音频轨道信息MediaDescription数组Promise返回值。

示例:

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

on('bufferingUpdate')(deprecated)

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

开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('bufferingUpdate')替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
typestring音频缓存事件回调类型,支持的事件:'bufferingUpdate'。
callbackfunction音频缓存事件回调方法。
BufferingInfoType为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。

示例:

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

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

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

开始订阅音频播放事件。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.on('stateChange')替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
typestring播放事件回调类型,支持的事件包括:'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange'。
- 'play':完成play()调用,音频开始播放,触发该事件。
- 'pause':完成pause()调用,音频暂停播放,触发该事件。
- 'stop':完成stop()调用,音频停止播放,触发该事件。
- 'reset':完成reset()调用,播放器重置,触发该事件。
- 'dataLoad':完成音频数据加载后触发该事件,即src属性设置完成后触发该事件。
- 'finish':完成音频播放后触发该事件。
- 'volumeChange':完成setVolume()调用,播放音量改变后触发该事件。
callback() => void播放事件回调方法。

示例:

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

let audioPlayer: media.AudioPlayer = media.createAudioPlayer();  //创建一个音频播放实例
audioPlayer.on('dataLoad', () => {            //设置'dataLoad'事件回调,src属性设置成功后,触发此回调
  console.info('audio set source success');
  audioPlayer.play();                       //开始播放,并触发'play'事件回调
});
audioPlayer.on('play', () => {                //设置'play'事件回调
  console.info('audio play success');
  audioPlayer.seek(30000);                  //调用seek方法,并触发'timeUpdate'事件回调
});
audioPlayer.on('pause', () => {               //设置'pause'事件回调
  console.info('audio pause success');
  audioPlayer.stop();                       //停止播放,并触发'stop'事件回调
});
audioPlayer.on('reset', () => {               //设置'reset'事件回调
  console.info('audio reset success');
  audioPlayer.release();                    //释放播放实例资源
  audioPlayer = undefined;
});
audioPlayer.on('timeUpdate', (seekDoneTime: number) => {  //设置'timeUpdate'事件回调
  if (seekDoneTime == null) {
    console.info('audio seek fail');
    return;
  }
  console.info('audio seek success, and seek time is ' + seekDoneTime);
  audioPlayer.setVolume(0.5);                //设置音量为50%,并触发'volumeChange'事件回调
});
audioPlayer.on('volumeChange', () => {         //设置'volumeChange'事件回调
  console.info('audio volumeChange success');
  audioPlayer.pause();                       //暂停播放,并触发'pause'事件回调
});
audioPlayer.on('finish', () => {               //设置'finish'事件回调
  console.info('audio play finish');
  audioPlayer.stop();                        //停止播放,并触发'stop'事件回调
});
audioPlayer.on('error', (error: BusinessError) => {           //设置'error'事件回调
  console.error(`audio error called, error: ${error}`);
});

// 用户选择音频设置fd(本地播放)
let fdPath = 'fd://';
// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上
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;  //设置src属性,并触发'dataLoad'事件回调
}, (err: BusinessError) => {
  console.info('open fd failed err is' + err);
}).catch((err: BusinessError) => {
  console.info('open fd failed err is' + err);
});Copy to clipboardErrorCopied

on('timeUpdate')(deprecated)

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

开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.on('timeUpdate')替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
typestring播放事件回调类型,支持的事件包括:'timeUpdate'。
- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。
callbackCallback<number>播放事件回调方法。回调方法入参为更新后的时间戳。

示例:

audioPlayer.on('timeUpdate', (newTime: number) => {    //设置'timeUpdate'事件回调
  if (newTime == null) {
    console.info('audio timeUpadate fail');
    return;
  }
  console.log('audio timeUpadate success. seekDoneTime: ' + newTime);
});
audioPlayer.play();    //开始播放后,自动触发时间戳更新事件Copy to clipboardErrorCopied

on('error')(deprecated)

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

开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayer.on('error')替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

参数:

参数名类型必填说明
typestring播放错误事件回调类型,支持的事件包括:'error'。
- 'error':音频播放中发生错误,触发该事件。
callbackErrorCallback播放错误事件回调方法。

示例:

audioPlayer.on('error', (error: BusinessError) => {      //设置'error'事件回调
  console.error(`audio error called, error: ${error}`); 
});
audioPlayer.setVolume(3);  //设置volume为无效值,触发'error'事件Copy to clipboardErrorCopied

AudioState(deprecated)

音频播放的状态机。可通过state属性获取当前状态。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVPlayerState替代。

系统能力: SystemCapability.Multimedia.Media.AudioPlayer

名称类型说明
idlestring音频播放空闲,dataload/reset成功后处于此状态。
playingstring音频正在播放,play成功后处于此状态。
pausedstring音频暂停播放,pause成功后处于此状态。
stoppedstring音频播放停止,stop/播放结束后处于此状态。
errorstring错误状态。

VideoPlayer(deprecated)

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer替代。

视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过createVideoPlayer()构建一个VideoPlayer实例。

属性

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称类型可读可写说明
url8+string视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、webm、mkv)。
支持路径示例
1. fd类型播放:fd://xx


2. http网络播放: http://xx
3. https网络播放: https://xx
4. hls网络播放路径:http://xx或者https://xx
fdSrc9+AVFileDescriptor视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。
使用示例
假设一个连续存储的音乐文件:
视频1(地址偏移:0,字节长度:100)
视频2(地址偏移:101,字节长度:50)
视频3(地址偏移:151,字节长度:150)
1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }
2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }
3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }
假设是一个独立的视频文件: 请使用src=fd://xx
loop8+boolean视频循环播放属性,设置为'true'表示循环播放。
videoScaleType9+VideoScaleType视频缩放模式。
audioInterruptMode9+audio.InterruptMode音频焦点模型。
currentTime8+number视频的当前播放位置,单位为毫秒(ms)。
duration8+number视频时长,单位为毫秒(ms),返回-1表示直播模式。
state8+VideoPlayState视频播放的状态。
width8+number视频宽,单位为像素(px)。
height8+number视频高,单位为像素(px)。

setDisplaySurface(deprecated)

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

通过回调方式设置SurfaceId。

*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.surfaceId替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
surfaceIdstringSurfaceId
callbackAsyncCallback<void>设置SurfaceId的回调方法。

示例:

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

setDisplaySurface(deprecated)

setDisplaySurface(surfaceId: string): Promise<void>

通过Promise方式设置SurfaceId。

*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.surfaceId替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
surfaceIdstringSurfaceId

返回值:

类型说明
Promise<void>设置SurfaceId的Promise返回值。

示例:

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

prepare(deprecated)

prepare(callback: AsyncCallback<void>): void

通过回调方式准备播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.prepare替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>准备播放视频的回调方法。

示例:

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

prepare(deprecated)

prepare(): Promise<void>

通过Promise方式准备播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.prepare替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>准备播放视频的Promise返回值。

示例:

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

play(deprecated)

play(callback: AsyncCallback<void>): void

通过回调方式开始播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.play替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>开始播放视频的回调方法。

示例:

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

play(deprecated)

play(): Promise<void>

通过Promise方式开始播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.play替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>开始播放视频的Promise返回值。

示例:

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

pause(deprecated)

pause(callback: AsyncCallback<void>): void

通过回调方式暂停播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.pause替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>暂停播放视频的回调方法。

示例:

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

pause(deprecated)

pause(): Promise<void>

通过Promise方式暂停播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.pause替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>暂停播放视频的Promise返回值。

示例:

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

stop(deprecated)

stop(callback: AsyncCallback<void>): void

通过回调方式停止播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.stop替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>停止播放视频的回调方法。

示例:

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

stop(deprecated)

stop(): Promise<void>

通过Promise方式停止播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.stop替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>停止播放视频的Promise返回值。

示例:

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

reset(deprecated)

reset(callback: AsyncCallback<void>): void

通过回调方式重置播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.reset替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>切换播放视频的回调方法。

示例:

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

reset(deprecated)

reset(): Promise<void>

通过Promise方式重置播放视频。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.reset替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>切换播放视频的Promise返回值。

示例:

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

seek(deprecated)

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

通过回调方式跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.seek替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
timeMsnumber指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。
callbackAsyncCallback<number>跳转到指定播放位置的回调方法。

示例:

import media from '@ohos.multimedia.media'

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}`);
  }
});

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

seek(deprecated)

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

通过回调方式跳转到指定播放位置。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.seek替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
timeMsnumber指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。
modeSeekMode跳转模式。
callbackAsyncCallback<number>跳转到指定播放位置的回调方法。

示例:

import media from '@ohos.multimedia.media'

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}`);
  }
});
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!');
  }
});Copy to clipboardErrorCopied

seek(deprecated)

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

通过Promise方式跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.seek替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
timeMsnumber指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。
modeSeekMode基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。

返回值:

类型说明
Promise<number>跳转到指定播放位置的Promise返回值,单位ms。

示例:

import media from '@ohos.multimedia.media'

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}`);
  }
});
let seekTime: number = 5000;
videoPlayer.seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点
  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}`);
});Copy to clipboardErrorCopied

setVolume(deprecated)

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

通过回调方式设置音量。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.setVolume替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
volnumber指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。
callbackAsyncCallback<void>设置音量的回调方法。

示例:

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

setVolume(deprecated)

setVolume(vol: number): Promise<void>

通过Promise方式设置音量。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.setVolume替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
volnumber指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。

返回值:

类型说明
Promise<void>设置音量的Promise返回值。

示例:

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

release(deprecated)

release(callback: AsyncCallback<void>): void

通过回调方式释放视频资源。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.release替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<void>释放视频资源的回调方法。

示例:

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

release(deprecated)

release(): Promise<void>

通过Promise方式释放视频资源。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.release替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<void>释放视频资源的Promise返回值。

示例:

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

getTrackDescription(deprecated)

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

通过回调方式获取视频轨道信息。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.getTrackDescription替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
callbackAsyncCallback<Array<MediaDescription>>视频轨道信息MediaDescription数组回调方法。

示例:

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

getTrackDescription(deprecated)

getTrackDescription(): Promise<Array<MediaDescription>>

通过Promise方式获取视频轨道信息。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.getTrackDescription替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型说明
Promise<Array<MediaDescription>>视频轨道信息MediaDescription数组Promise返回值。

示例:

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}`);
});Copy to clipboardErrorCopied

setSpeed(deprecated)

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

通过回调方式设置播放速度。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.setSpeed替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
speednumber指定播放视频速度,具体见PlaybackSpeed
callbackAsyncCallback<number>设置播放速度的回调方法。

示例:

import media from '@ohos.multimedia.media'

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}`);
  }
});
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!');
  }
});Copy to clipboardErrorCopied

setSpeed(deprecated)

setSpeed(speed:number): Promise<number>

通过Promise方式设置播放速度。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.setSpeed替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
speednumber指定播放视频速度,具体见PlaybackSpeed

返回值:

类型说明
Promise<number>播放速度Promise返回值,具体见PlaybackSpeed

示例:

import media from '@ohos.multimedia.media'

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}`);
  }
});
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}`);
});Copy to clipboardErrorCopied

on('playbackCompleted')(deprecated)

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

开始监听视频播放完成事件。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('stateChange')替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
typestring视频播放完成事件回调类型,支持的事件:'playbackCompleted'。
callbackfunction视频播放完成事件回调方法。

示例:

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

on('bufferingUpdate')(deprecated)

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

开始监听视频缓存更新事件。仅网络播放支持该订阅事件。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('bufferingUpdate')替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
typestring视频缓存事件回调类型,支持的事件:'bufferingUpdate'。
callbackfunction视频缓存事件回调方法。
BufferingInfoType为BUFFERING_PERCENT或CACHED_DURATION时,value值有效,否则固定为0。

示例:

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

on('startRenderFrame')(deprecated)

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

开始监听视频播放首帧送显上报事件。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('startRenderFrame')替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
typestring视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。
callbackCallback<void>视频播放首帧送显上报事件回调方法。

示例:

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

on('videoSizeChanged')(deprecated)

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

开始监听视频播放宽高变化事件。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('videoSizeChange')替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
typestring视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。
callbackfunction视频播放宽高变化事件回调方法,width表示宽,height表示高。

示例:

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

on('error')(deprecated)

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

开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayer.on('error')替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名类型必填说明
typestring播放错误事件回调类型,支持的事件包括:'error'。
- 'error':视频播放中发生错误,触发该事件。
callbackErrorCallback播放错误事件回调方法。

示例:

videoPlayer.on('error', (error: BusinessError) => {      // 设置'error'事件回调
  console.error(`video error called, error: ${error}`);
});
videoPlayer.url = 'fd://error';  //设置错误的播放地址,触发'error'事件Copy to clipboardErrorCopied

VideoPlayState(deprecated)

视频播放的状态机,可通过state属性获取当前状态。

说明: 从API version 8开始支持,从API version 9开始废弃,建议使用AVPlayerState替代。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称类型说明
idlestring视频播放空闲。
preparedstring视频播放准备。
playingstring视频正在播放。
pausedstring视频暂停播放。
stoppedstring视频播放停止。
errorstring错误状态。

AudioRecorder(deprecated)

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder替代。

音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过createAudioRecorder() 构建一个AudioRecorder实例。

prepare(deprecated)

prepare(config: AudioRecorderConfig): void

录音准备。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.prepare替代。

需要权限: ohos.permission.MICROPHONE

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名类型必填说明
configAudioRecorderConfig配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。

示例:

let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://1',       // 文件需先由调用者创建,并给予适当的权限
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('prepare', () => {    //设置'prepare'事件回调
  console.log('prepare success');
});
audioRecorder.prepare(audioRecorderConfig);Copy to clipboardErrorCopied

start(deprecated)

start(): void

开始录制,需在'prepare'事件成功触发后,才能调用start方法。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.start替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('start', () => {    //设置'start'事件回调
  console.log('audio recorder start success');
});
audioRecorder.start();Copy to clipboardErrorCopied

pause(deprecated)

pause():void

暂停录制,需要在'start'事件成功触发后,才能调用pause方法。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.pause替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('pause', () => {    //设置'pause'事件回调
  console.log('audio recorder pause success');
});
audioRecorder.pause();Copy to clipboardErrorCopied

resume(deprecated)

resume():void

恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.resume替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('resume', () => {    //设置'resume'事件回调
  console.log('audio recorder resume success');
});
audioRecorder.resume();Copy to clipboardErrorCopied

stop(deprecated)

stop(): void

停止录音。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.stop替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('stop', () => {    //设置'stop'事件回调
  console.log('audio recorder stop success');
});
audioRecorder.stop();Copy to clipboardErrorCopied

release(deprecated)

release(): void

释放录音资源。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.release替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('release', () => {    //设置'release'事件回调
  console.log('audio recorder release success');
});
audioRecorder.release();
audioRecorder = undefined;Copy to clipboardErrorCopied

reset(deprecated)

reset(): void

重置录音。

进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.reset替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('reset', () => {    //设置'reset'事件回调
  console.log('audio recorder reset success');
});
audioRecorder.reset();Copy to clipboardErrorCopied

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

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

开始订阅音频录制事件。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.on('stateChange')替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名类型必填说明
typestring录制事件回调类型,支持的事件包括:'prepare' | 'start' | 'pause' | ’resume‘ | 'stop' | 'release' | 'reset'。
- 'prepare' :完成prepare调用,音频录制参数设置完成,触发该事件。
- 'start' :完成start调用,音频录制开始,触发该事件。
- 'pause': 完成pause调用,音频暂停录制,触发该事件。
- 'resume': 完成resume调用,音频恢复录制,触发该事件。
- 'stop' :完成stop调用,音频停止录制,触发该事件。
- 'release' :完成release调用,音频释放录制资源,触发该事件。
- 'reset':完成reset调用,音频重置为初始状态,触发该事件。
callback()=>void录制事件回调方法。

示例:

let audioRecorder: media.AudioRecorder = media.createAudioRecorder();                                  // 创建一个音频录制实例
let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://xx',                                                            // 文件需先由调用者创建,并给予适当的权限
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error: BusinessError) => {                                             // 设置'error'事件回调
  console.info(`audio error called, error: ${error}`);
});
audioRecorder.on('prepare', () => {                                              // 设置'prepare'事件回调
  console.log('prepare success');
  audioRecorder.start();                                                       // 开始录制,并触发'start'事件回调
});
audioRecorder.on('start', () => {                                                 // 设置'start'事件回调
  console.log('audio recorder start success');
});
audioRecorder.on('pause', () => {                                                 // 设置'pause'事件回调
  console.log('audio recorder pause success');
});
audioRecorder.on('resume', () => {                                                 // 设置'resume'事件回调
  console.log('audio recorder resume success');
});
audioRecorder.on('stop', () => {                                                 // 设置'stop'事件回调
  console.log('audio recorder stop success');
});
audioRecorder.on('release', () => {                                                 // 设置'release'事件回调
  console.log('audio recorder release success');
});
audioRecorder.on('reset', () => {                                                 // 设置'reset'事件回调
  console.log('audio recorder reset success');
});
audioRecorder.prepare(audioRecorderConfig)                                        // 设置录制参数 ,并触发'prepare'事件回调      Copy to clipboardErrorCopied

on('error')(deprecated)

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

开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorder.on('error')替代。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名类型必填说明
typestring录制错误事件回调类型'error'。
- 'error':音频录制过程中发生错误,触发该事件。
callbackErrorCallback录制错误事件回调方法。

示例:

let audioRecorderConfig: media.AudioRecorderConfig = {
  audioEncoder : media.AudioEncoder.AAC_LC,
  audioEncodeBitRate : 22050,
  audioSampleRate : 22050,
  numberOfChannels : 2,
  format : media.AudioOutputFormat.AAC_ADTS,
  uri : 'fd://xx',                                                     // 文件需先由调用者创建,并给予适当的权限
  location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error: Error) => {                                  // 设置'error'事件回调
  console.error(`audio error called, error: ${error}`);
});
audioRecorder.prepare(audioRecorderConfig);                            // prepare不设置参数,触发'error'事件Copy to clipboardErrorCopied

AudioRecorderConfig(deprecated)

说明: 从API version 6开始支持,从API version 9开始废弃,建议使用AVRecorderConfig替代。

表示音频的录音配置。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

名称类型必填说明
audioEncoderAudioEncoder音频编码格式,默认设置为AAC_LC。
说明: 从API version 8开始废弃,建议使用audioEncoderMime替代。
audioEncodeBitRatenumber音频编码比特率,默认值为48000。
audioSampleRatenumber音频采集采样率,默认值为48000。
numberOfChannelsnumber音频采集声道数,默认值为2。
formatAudioOutputFormat音频输出封装格式,默认设置为MPEG_4。
说明: 从API version 8开始废弃,建议使用fileFormat替代。
locationLocation音频采集的地理位置。
uristring音频输出URI:fd://xx (fd number)


文件需要由调用者创建,并赋予适当的权限。
audioEncoderMime8+CodecMimeType音频编码格式。
fileFormat8+ContainerFormatType音频编码格式。

AudioEncoder(deprecated)

说明: 从API version 6开始支持,从API version 8开始废弃,建议使用CodecMimeType替代。

表示音频编码格式的枚举。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

名称说明
DEFAULT0默认编码格式。
仅做接口定义,暂不支持使用。
AMR_NB1AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。
仅做接口定义,暂不支持使用。
AMR_WB2AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。
仅做接口定义,暂不支持使用。
AAC_LC3AAC-LC(Advanced Audio Coding Low Complexity)编码格式。
HE_AAC4HE_AAC(High-Efficiency Advanced Audio Coding)编码格式。
仅做接口定义,暂不支持使用。

AudioOutputFormat(deprecated)

说明: 从API version 6开始支持,从API version 8 开始废弃,建议使用ContainerFormatType替代。

表示音频封装格式的枚举。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

名称说明
DEFAULT0默认封装格式。
仅做接口定义,暂不支持使用。
MPEG_42封装为MPEG-4格式。
AMR_NB3封装为AMR_NB格式。
仅做接口定义,暂不支持使用。
AMR_WB4封装为AMR_WB格式。
仅做接口定义,暂不支持使用。
AAC_ADTS6封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值