harmony 鸿蒙Interface (AVTranscoder)

  • 2025-06-16
  • 浏览 (2)

Interface (AVTranscoder)

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

视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。

视频转码demo可参考:视频转码开发指导

属性

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

名称 类型 只读 可选 说明
fdSrc12+ AVFileDescriptor 源媒体文件描述,通过该属性设置数据源。
使用示例
假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。
说明:
- 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。
fdDst12+ number 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。
说明:
- 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。

prepare12+

prepare(config: AVTranscoderConfig): Promise<void>

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

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

参数:

参数名 类型 必填 说明
config AVTranscoderConfig 配置视频转码的相关参数。

返回值:

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

错误码:

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

错误码ID 错误信息
401 The parameter check failed. Return by promise.
5400102 Operation not allowed. Return by promise.
5400103 IO error. Return by promise.
5400105 Service died. Return by promise.
5400106 Unsupported format. Returned by promise.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

// 配置参数以实际硬件设备支持的范围为准。
let avTranscoderConfig: media.AVTranscoderConfig = {
  audioBitrate : 200000,
  audioCodec : media.CodecMimeType.AUDIO_AAC,
  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
  videoBitrate : 3000000,
  videoCodec : media.CodecMimeType.VIDEO_AVC,
};

avTranscoder.prepare(avTranscoderConfig).then(() => {
  console.info('prepare success');
}).catch((err: BusinessError) => {
  console.error('prepare failed and catch error is ' + err.message);
});

start12+

start(): Promise<void>

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

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

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

返回值:

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

错误码:

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

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

示例:

import { BusinessError } from '@kit.BasicServicesKit';

avTranscoder.start().then(() => {
  console.info('start AVTranscoder success');
}).catch((err: BusinessError) => {
  console.error('start AVTranscoder failed and catch error is ' + err.message);
});

pause12+

pause(): Promise<void>

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

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

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

返回值:

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

错误码:

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

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

示例:

import { BusinessError } from '@kit.BasicServicesKit';

avTranscoder.pause().then(() => {
  console.info('pause AVTranscoder success');
}).catch((err: BusinessError) => {
  console.error('pause AVTranscoder failed and catch error is ' + err.message);
});

resume12+

resume(): Promise<void>

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

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

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

返回值:

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

错误码:

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

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

示例:

import { BusinessError } from '@kit.BasicServicesKit';

avTranscoder.resume().then(() => {
  console.info('resume AVTranscoder success');
}).catch((err: BusinessError) => {
  console.error('resume AVTranscoder failed and catch error is ' + err.message);
});

cancel12+

cancel(): Promise<void>

异步方式取消视频转码。通过Promise获取返回值。

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

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

返回值:

类型 说明
Promise<void> 异步取消视频转码方法的Promise返回值。

错误码:

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

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

示例:

import { BusinessError } from '@kit.BasicServicesKit';

avTranscoder.cancel().then(() => {
  console.info('cancel AVTranscoder success');
}).catch((err: BusinessError) => {
  console.error('cancel AVTranscoder failed and catch error is ' + err.message);
});

release12+

release(): Promise<void>

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

释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。

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

返回值:

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

错误码:

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

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

示例:

import { BusinessError } from '@kit.BasicServicesKit';

avTranscoder.release().then(() => {
  console.info('release AVTranscoder success');
}).catch((err: BusinessError) => {
  console.error('release AVTranscoder failed and catch error is ' + err.message);
});

on(‘progressUpdate’)12+

on(type: ‘progressUpdate’, callback: Callback<number>): void

注册转码进度更新事件,并通过注册的回调方法通知开发者。开发者只能注册一个进度更新事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。

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

参数:

参数名 类型 必填 说明
type string 进度更新事件回调类型,支持的事件:’progressUpdate’,在转码过程中系统会自动触发此事件。
callback Callback<number> 进度更新事件回调方法,progress: number,表示当前转码进度。

示例:

avTranscoder.on('progressUpdate', (progress: number) => {
  console.info('avTranscoder progressUpdate = ' + progress);
});

off(‘progressUpdate’)12+

off(type:‘progressUpdate’, callback?: Callback<number>): void

取消注册转码进度更新事件。

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

参数:

参数名 类型 必填 说明
type string 进度更新事件回调类型,支持的事件:’progressUpdate’。
callback Callback<number> 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。

示例:

avTranscoder.off('progressUpdate');

on(‘error’)12+

on(type: ‘error’, callback: ErrorCallback): void

注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,开发者需要通过release()退出转码操作。

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

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

参数:

参数名 类型 必填 说明
type string 转码错误事件回调类型’error’。
- ‘error’:录制过程中发生错误,触发该事件。
callback ErrorCallback 转码错误事件回调方法。

错误码:

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

错误码ID 错误信息
401 The parameter check failed.
801 Capability not supported.
5400101 No memory.
5400102 Operation not allowed.
5400103 I/O error.
5400104 Time out.
5400105 Service died.
5400106 Unsupported format.

示例:

import { BusinessError } from '@kit.BasicServicesKit';

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

off(‘error’)12+

off(type:‘error’, callback?: ErrorCallback): void

取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。

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

参数:

参数名 类型 必填 说明
type string 转码错误事件回调类型’error’。
- ‘error’:转码过程中发生错误,触发该事件。
callback ErrorCallback 错误事件回调方法。

示例:

avTranscoder.off('error');

on(‘complete’)12+

on(type: ‘complete’, callback: Callback<void>): void

注册转码完成事件,并通过注册的回调方法通知开发者。开发者只能注册一个进度更新事件的回调方法,当开发者重复注册时,以最后一次注册的回调接口为准。

当AVTranscoder上报complete事件时,当前转码操作已完成,开发者需要通过release()退出转码操作。

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

参数:

参数名 类型 必填 说明
type string 完成事件回调类型,支持的事件:’complete’,在转码过程中系统会自动触发此事件。
callback Callback<void> 完成事件回调方法。

示例:

avTranscoder.on('complete', async () => {
  console.info('avTranscoder complete');
  // 开发者须在此监听转码完成事件
  // 须等待avTranscoder.release()之后,再对转码后的文件进行转发、上传、转存等处理
  await avTranscoder.release();
  avTranscoder = undefined;
});

off(‘complete’)12+

off(type:‘complete’, callback?: Callback<void>): void

取消注册转码完成事件。

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

参数:

参数名 类型 必填 说明
type string 转码完成事件回调类型,支持的事件:’complete’。
callback Callback<void> 完成事件回调方法。

示例:

avTranscoder.off('complete');

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Media Kit(媒体服务)

harmony 鸿蒙Interface (AVImageGenerator)

harmony 鸿蒙Interface (AVMetadataExtractor)

harmony 鸿蒙Interface (AVPlayer)

harmony 鸿蒙Interface (AVRecorder)

harmony 鸿蒙Interface (AVScreenCaptureRecorder)

harmony 鸿蒙废弃的Interface (AudioPlayer, deprecated)

harmony 鸿蒙废弃的Interface (AudioRecorder, deprecated)

harmony 鸿蒙Interface (MediaSource)

harmony 鸿蒙Interface (MediaSourceLoadingRequest)

0  赞