1e41f4b71Sopenharmony_ci# @ohos.multimedia.media (媒体服务)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci> **说明:**
4e41f4b71Sopenharmony_ci> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci媒体子系统为开发者提供一套简单且易于理解的接口,使得开发者能够方便接入系统并使用系统的媒体资源。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci媒体子系统包含了音视频相关媒体业务,提供以下常用功能:
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci- 音视频播放([AVPlayer](#avplayer9)<sup>9+</sup>)
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci- 音视频录制([AVRecorder](#avrecorder9)<sup>9+</sup>)
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci- 视频转码([AVTranscoder](#avtranscoder12)<sup>12+</sup>)
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci- 获取音视频元数据([AVMetadataExtractor](#avmetadataextractor11)<sup>11+</sup>)
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci- 获取视频缩略图([AVImageGenerator](#avimagegenerator12)<sup>12+</sup>)
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci## 导入模块
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci```ts
23e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
24e41f4b71Sopenharmony_ci```
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci## media.createAVPlayer<sup>9+</sup>
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_cicreateAVPlayer(callback: AsyncCallback\<AVPlayer>): void
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci异步方式创建音视频播放实例,通过注册回调函数获取返回值。
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci> **说明:**
33e41f4b71Sopenharmony_ci>
34e41f4b71Sopenharmony_ci> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del-->
35e41f4b71Sopenharmony_ci> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd-->
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci**参数:**
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci| 参数名   | 类型                                  | 必填 | 说明                                                         |
44e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
45e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVPlayer](#avplayer9)> | 是   | 回调函数。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci**错误码:**
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
52e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
53e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by callback. |
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci**示例:**
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci```ts
58e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer;
61e41f4b71Sopenharmony_cimedia.createAVPlayer((error: BusinessError, video: media.AVPlayer) => {
62e41f4b71Sopenharmony_ci  if (video != null) {
63e41f4b71Sopenharmony_ci    avPlayer = video;
64e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVPlayer');
65e41f4b71Sopenharmony_ci  } else {
66e41f4b71Sopenharmony_ci    console.error(`Failed to create AVPlayer, error message:${error.message}`);
67e41f4b71Sopenharmony_ci  }
68e41f4b71Sopenharmony_ci});
69e41f4b71Sopenharmony_ci```
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci## media.createAVPlayer<sup>9+</sup>
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_cicreateAVPlayer(): Promise\<AVPlayer>
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci异步方式创建音视频播放实例,通过Promise获取返回值。
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci> **说明:**
78e41f4b71Sopenharmony_ci>
79e41f4b71Sopenharmony_ci> - 推荐单个应用创建的音视频播放实例(即音频、视频、音视频三类相加)不超过16个。<!--Del-->
80e41f4b71Sopenharmony_ci> - 可创建的音视频播放实例数量依赖于设备芯片的支持情况,如芯片支持创建的数量少于上述情况,请以芯片规格为准。如RK3568推荐单个应用创建6个以内的音视频播放实例。<!--DelEnd-->
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci**返回值:**
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci| 类型                            | 说明                                                         |
89e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ |
90e41f4b71Sopenharmony_ci| Promise\<[AVPlayer](#avplayer9)> | Promise对象。异步返回AVPlayer实例,失败时返回null。可用于音视频播放。 |
91e41f4b71Sopenharmony_ci
92e41f4b71Sopenharmony_ci**错误码:**
93e41f4b71Sopenharmony_ci
94e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
95e41f4b71Sopenharmony_ci
96e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                      |
97e41f4b71Sopenharmony_ci| -------- | ----------------------------- |
98e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by promise. |
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci**示例:**
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci```ts
103e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer;
106e41f4b71Sopenharmony_cimedia.createAVPlayer().then((video: media.AVPlayer) => {
107e41f4b71Sopenharmony_ci  if (video != null) {
108e41f4b71Sopenharmony_ci    avPlayer = video;
109e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVPlayer');
110e41f4b71Sopenharmony_ci  } else {
111e41f4b71Sopenharmony_ci    console.error('Failed to create AVPlayer');
112e41f4b71Sopenharmony_ci  }
113e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
114e41f4b71Sopenharmony_ci  console.error(`Failed to create AVPlayer, error message:${error.message}`);
115e41f4b71Sopenharmony_ci});
116e41f4b71Sopenharmony_ci```
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci## media.createAVRecorder<sup>9+</sup>
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_cicreateAVRecorder(callback: AsyncCallback\<AVRecorder>): void
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci异步方式创建音视频录制实例。通过注册回调函数获取返回值。
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci> **说明:**
125e41f4b71Sopenharmony_ci>
126e41f4b71Sopenharmony_ci> - 可创建的音视频录制实例不能超过2个。
127e41f4b71Sopenharmony_ci> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci**参数:**
132e41f4b71Sopenharmony_ci
133e41f4b71Sopenharmony_ci| 参数名   | 类型                                       | 必填 | 说明                                                         |
134e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
135e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVRecorder](#avrecorder9)> | 是   | 回调函数。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci**错误码:**
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
142e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
143e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by callback. |
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci**示例:**
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci```ts
148e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
149e41f4b71Sopenharmony_cilet avRecorder: media.AVRecorder;
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_cimedia.createAVRecorder((error: BusinessError, recorder: media.AVRecorder) => {
152e41f4b71Sopenharmony_ci  if (recorder != null) {
153e41f4b71Sopenharmony_ci    avRecorder = recorder;
154e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVRecorder');
155e41f4b71Sopenharmony_ci  } else {
156e41f4b71Sopenharmony_ci    console.error(`Failed to create AVRecorder, error message:${error.message}`);
157e41f4b71Sopenharmony_ci  }
158e41f4b71Sopenharmony_ci});
159e41f4b71Sopenharmony_ci```
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci## media.createAVRecorder<sup>9+</sup>
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_cicreateAVRecorder(): Promise\<AVRecorder>
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci异步方式创建音视频录制实例。通过Promise获取返回值。
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci> **说明:**
168e41f4b71Sopenharmony_ci>
169e41f4b71Sopenharmony_ci> - 可创建的音视频录制实例不能超过2个。
170e41f4b71Sopenharmony_ci> - 由于设备共用音频通路,一个设备仅能有一个实例进行音频录制。创建第二个实例录制音频时,将会因为音频通路冲突导致创建失败。
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci**返回值:**
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci| 类型                                 | 说明                                                         |
179e41f4b71Sopenharmony_ci| ------------------------------------ | ------------------------------------------------------------ |
180e41f4b71Sopenharmony_ci| Promise\<[AVRecorder](#avrecorder9)> | Promise对象。异步返回AVRecorder实例,失败时返回null。可用于录制音视频媒体。 |
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci**错误码:**
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                      |
187e41f4b71Sopenharmony_ci| -------- | ----------------------------- |
188e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by promise. |
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**示例:**
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci```ts
193e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_cilet avRecorder: media.AVRecorder;
196e41f4b71Sopenharmony_cimedia.createAVRecorder().then((recorder: media.AVRecorder) => {
197e41f4b71Sopenharmony_ci  if (recorder != null) {
198e41f4b71Sopenharmony_ci    avRecorder = recorder;
199e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVRecorder');
200e41f4b71Sopenharmony_ci  } else {
201e41f4b71Sopenharmony_ci    console.error('Failed to create AVRecorder');
202e41f4b71Sopenharmony_ci  }
203e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
204e41f4b71Sopenharmony_ci  console.error(`Failed to create AVRecorder, error message:${error.message}`);
205e41f4b71Sopenharmony_ci});
206e41f4b71Sopenharmony_ci```
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci## media.createAVTranscoder<sup>12+</sup>
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_cicreateAVTranscoder(): Promise\<AVTranscoder>
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci异步方式创建视频转码实例,通过Promise获取返回值。
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci> **说明:**
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci> 可创建的视频转码实例不能超过2个。
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci**返回值:**
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci| 类型                            | 说明                                                         |
223e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ |
224e41f4b71Sopenharmony_ci| Promise\<[AVTranscoder](#avtranscoder12)> | Promise对象。异步返回AVTranscoder实例,失败时返回null。可用于视频转码。 |
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci**错误码:**
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                      |
231e41f4b71Sopenharmony_ci| -------- | ----------------------------- |
232e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by promise. |
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ci**示例:**
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci```ts
237e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_cilet avTranscoder: media.AVTranscoder;
240e41f4b71Sopenharmony_cimedia.createAVTranscoder().then((transcoder: media.AVTranscoder) => {
241e41f4b71Sopenharmony_ci  if (transcoder != null) {
242e41f4b71Sopenharmony_ci    avTranscoder = transcoder;
243e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVTranscoder');
244e41f4b71Sopenharmony_ci  } else {
245e41f4b71Sopenharmony_ci    console.error('Failed to create AVTranscoder');
246e41f4b71Sopenharmony_ci  }
247e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
248e41f4b71Sopenharmony_ci  console.error(`Failed to create AVTranscoder, error message:${error.message}`);
249e41f4b71Sopenharmony_ci});
250e41f4b71Sopenharmony_ci```
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci## media.createAVMetadataExtractor<sup>11+</sup>
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_cicreateAVMetadataExtractor(callback: AsyncCallback\<AVMetadataExtractor>): void
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ci异步方式创建AVMetadataExtractor实例,通过注册回调函数获取返回值。
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci**参数:**
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci| 参数名   | 类型                                  | 必填 | 说明                                                         |
263e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
264e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVMetadataExtractor](#avmetadataextractor11)> | 是   | 回调函数。当创建AVMetadataExtractor实例成功,err为undefined,data为获取到的AVMetadataExtractor实例,否则为错误对象。 |
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci**错误码:**
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
271e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
272e41f4b71Sopenharmony_ci| 5400101  | No memory. Returned by callback. |
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**示例:**
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci```ts
277e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_cilet avMetadataExtractor: media.AVMetadataExtractor;
280e41f4b71Sopenharmony_cimedia.createAVMetadataExtractor((error: BusinessError, extractor: media.AVMetadataExtractor) => {
281e41f4b71Sopenharmony_ci  if (extractor != null) {
282e41f4b71Sopenharmony_ci    avMetadataExtractor = extractor;
283e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVMetadataExtractor');
284e41f4b71Sopenharmony_ci  } else {
285e41f4b71Sopenharmony_ci    console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`);
286e41f4b71Sopenharmony_ci  }
287e41f4b71Sopenharmony_ci});
288e41f4b71Sopenharmony_ci```
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci## media.createAVMetadataExtractor<sup>11+</sup>
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_cicreateAVMetadataExtractor(): Promise\<AVMetadataExtractor>
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci异步方式创建AVMetadataExtractor实例,通过Promise获取返回值。
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci**错误码:**
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
303e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
304e41f4b71Sopenharmony_ci| 5400101  | No memory. Returned by promise. |
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci**示例:**
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci```ts
309e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
310e41f4b71Sopenharmony_ci
311e41f4b71Sopenharmony_cilet avMetadataExtractor: media.AVMetadataExtractor;
312e41f4b71Sopenharmony_cimedia.createAVMetadataExtractor().then((extractor: media.AVMetadataExtractor) => {
313e41f4b71Sopenharmony_ci  if (extractor != null) {
314e41f4b71Sopenharmony_ci    avMetadataExtractor = extractor;
315e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVMetadataExtractor');
316e41f4b71Sopenharmony_ci  } else {
317e41f4b71Sopenharmony_ci    console.error(`Failed to create AVMetadataExtractor`);
318e41f4b71Sopenharmony_ci  }
319e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
320e41f4b71Sopenharmony_ci  console.error(`Failed to create AVMetadataExtractor, error message:${error.message}`);
321e41f4b71Sopenharmony_ci});
322e41f4b71Sopenharmony_ci```
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_ci## media.createSoundPool<sup>10+</sup>
325e41f4b71Sopenharmony_ci
326e41f4b71Sopenharmony_cicreateSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo, callback: AsyncCallback\<SoundPool>): void
327e41f4b71Sopenharmony_ci
328e41f4b71Sopenharmony_ci创建音频池实例,使用callback方式异步获取返回值。
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.SoundPool
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci**参数:**
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci| 参数名   | 类型                                            | 必填 | 说明                                                         |
335e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
336e41f4b71Sopenharmony_ci| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
337e41f4b71Sopenharmony_ci| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息。其中audioRenderInfo中的参数usage取值为STREAM_USAGE_UNKNOWN,STREAM_USAGE_MUSIC,STREAM_USAGE_MOVIE,STREAM_USAGE_AUDIOBOOK时,SoundPool播放短音时为混音模式,不会打断其他音频播放。 |
338e41f4b71Sopenharmony_ci| callback | AsyncCallback<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | 是   | 回调函数。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**错误码:**
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
343e41f4b71Sopenharmony_ci
344e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
345e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
346e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by callback. |
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ci**示例:**
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci```js
351e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_cilet soundPool: media.SoundPool;
354e41f4b71Sopenharmony_cilet audioRendererInfo: audio.AudioRendererInfo = {
355e41f4b71Sopenharmony_ci  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
356e41f4b71Sopenharmony_ci  rendererFlags : 0
357e41f4b71Sopenharmony_ci}
358e41f4b71Sopenharmony_ci
359e41f4b71Sopenharmony_cimedia.createSoundPool(5, audioRendererInfo, (error, soundPool_: media.SoundPool) => {
360e41f4b71Sopenharmony_ci  if (error) {
361e41f4b71Sopenharmony_ci    console.error(`Failed to createSoundPool`)
362e41f4b71Sopenharmony_ci    return;
363e41f4b71Sopenharmony_ci  } else {
364e41f4b71Sopenharmony_ci    soundPool = soundPool_;
365e41f4b71Sopenharmony_ci    console.info(`Succeeded in createSoundPool`)
366e41f4b71Sopenharmony_ci  }
367e41f4b71Sopenharmony_ci});
368e41f4b71Sopenharmony_ci```
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci## media.createSoundPool<sup>10+</sup>
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_cicreateSoundPool(maxStreams: number, audioRenderInfo: audio.AudioRendererInfo): Promise\<SoundPool>
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci创建音频池实例,通过Promise获取返回值。
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.SoundPool
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci**参数:**
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci| 参数名   | 类型                                            | 必填 | 说明                                                         |
381e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------- | ---- | ------------------------------------------------------------ |
382e41f4b71Sopenharmony_ci| maxStreams | number | 是   | soundPool实例的最大播放的流数 |
383e41f4b71Sopenharmony_ci| audioRenderInfo | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)  | 是   | 音频播放参数信息 |
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ci**返回值:**
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci| 类型                                      | 说明                                                         |
388e41f4b71Sopenharmony_ci| ----------------------------------------- | ------------------------------------------------------------ |
389e41f4b71Sopenharmony_ci| Promise<[SoundPool](js-apis-inner-multimedia-soundPool.md)> | Promise对象。异步返回SoundPool实例,失败时返回null。用于音频池实例的加载播放功能。 |
390e41f4b71Sopenharmony_ci
391e41f4b71Sopenharmony_ci**错误码:**
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                      |
396e41f4b71Sopenharmony_ci| -------- | ----------------------------- |
397e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by promise. |
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci**示例:**
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci```js
402e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
403e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
404e41f4b71Sopenharmony_ci
405e41f4b71Sopenharmony_cilet soundPool: media.SoundPool;
406e41f4b71Sopenharmony_cilet audioRendererInfo: audio.AudioRendererInfo = {
407e41f4b71Sopenharmony_ci  usage : audio.StreamUsage.STREAM_USAGE_MUSIC,
408e41f4b71Sopenharmony_ci  rendererFlags : 0
409e41f4b71Sopenharmony_ci}
410e41f4b71Sopenharmony_ci
411e41f4b71Sopenharmony_cimedia.createSoundPool(5, audioRendererInfo).then((soundpool_: media.SoundPool) => {
412e41f4b71Sopenharmony_ci  if (soundpool_ != null) {
413e41f4b71Sopenharmony_ci    soundPool = soundpool_;
414e41f4b71Sopenharmony_ci    console.info('Succceeded in creating SoundPool');
415e41f4b71Sopenharmony_ci  } else {
416e41f4b71Sopenharmony_ci    console.error('Failed to create SoundPool');
417e41f4b71Sopenharmony_ci  }
418e41f4b71Sopenharmony_ci}, (error: BusinessError) => {
419e41f4b71Sopenharmony_ci  console.error(`soundpool catchCallback, error message:${error.message}`);
420e41f4b71Sopenharmony_ci});
421e41f4b71Sopenharmony_ci```
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ci## media.createAVScreenCaptureRecorder<sup>12+</sup>
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_cicreateAVScreenCaptureRecorder(): Promise\<AVScreenCaptureRecorder>
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci创建屏幕录制实例,通过Promise获取返回值。
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci**返回值:**
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci| 类型                                                         | 说明                                                         |
434e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------------------ |
435e41f4b71Sopenharmony_ci| Promise\<[AVScreenCaptureRecorder](#avscreencapturerecorder12)> | Promise对象。异步返回AVScreenCaptureRecorder实例,失败时返回null。可用于进行屏幕录制。 |
436e41f4b71Sopenharmony_ci
437e41f4b71Sopenharmony_ci**错误码:**
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
440e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
441e41f4b71Sopenharmony_ci| 5400101  | No memory. Return by promise. |
442e41f4b71Sopenharmony_ci
443e41f4b71Sopenharmony_ci**示例:**
444e41f4b71Sopenharmony_ci
445e41f4b71Sopenharmony_ci```ts
446e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
447e41f4b71Sopenharmony_ci
448e41f4b71Sopenharmony_cilet avScreenCaptureRecorder: media.AVScreenCaptureRecorder;
449e41f4b71Sopenharmony_cimedia.createAVScreenCaptureRecorder().then((captureRecorder: media.AVScreenCaptureRecorder) => {
450e41f4b71Sopenharmony_ci  if (captureRecorder != null) {
451e41f4b71Sopenharmony_ci    avScreenCaptureRecorder = captureRecorder;
452e41f4b71Sopenharmony_ci    console.info('Succeeded in createAVScreenCaptureRecorder');
453e41f4b71Sopenharmony_ci  } else {
454e41f4b71Sopenharmony_ci    console.error('Failed to createAVScreenCaptureRecorder');
455e41f4b71Sopenharmony_ci  }
456e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
457e41f4b71Sopenharmony_ci  console.error(`createAVScreenCaptureRecorder catchCallback, error message:${error.message}`);
458e41f4b71Sopenharmony_ci});
459e41f4b71Sopenharmony_ci```
460e41f4b71Sopenharmony_ci
461e41f4b71Sopenharmony_ci## AVErrorCode<sup>9+</sup>
462e41f4b71Sopenharmony_ci
463e41f4b71Sopenharmony_ci[媒体错误码](errorcode-media.md)类型枚举
464e41f4b71Sopenharmony_ci
465e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
466e41f4b71Sopenharmony_ci
467e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
468e41f4b71Sopenharmony_ci
469e41f4b71Sopenharmony_ci| 名称                                  | 值      | 说明                                 |
470e41f4b71Sopenharmony_ci| :------------------------------------ | ------- | ------------------------------------ |
471e41f4b71Sopenharmony_ci| AVERR_OK                              | 0       | 表示操作成功。                       |
472e41f4b71Sopenharmony_ci| AVERR_NO_PERMISSION                   | 201     | 表示无权限执行此操作。               |
473e41f4b71Sopenharmony_ci| AVERR_INVALID_PARAMETER               | 401     | 表示传入入参无效。                   |
474e41f4b71Sopenharmony_ci| AVERR_UNSUPPORT_CAPABILITY            | 801     | 表示当前版本不支持该API能力。        |
475e41f4b71Sopenharmony_ci| AVERR_NO_MEMORY                       | 5400101 | 表示系统内存不足或服务数量达到上限。 |
476e41f4b71Sopenharmony_ci| AVERR_OPERATE_NOT_PERMIT              | 5400102 | 表示当前状态不允许或无权执行此操作。 |
477e41f4b71Sopenharmony_ci| AVERR_IO                              | 5400103 | 表示数据流异常信息。                 |
478e41f4b71Sopenharmony_ci| AVERR_TIMEOUT                         | 5400104 | 表示系统或网络响应超时。             |
479e41f4b71Sopenharmony_ci| AVERR_SERVICE_DIED                    | 5400105 | 表示服务进程死亡。                   |
480e41f4b71Sopenharmony_ci| AVERR_UNSUPPORT_FORMAT                | 5400106 | 表示不支持当前媒体资源的格式。       |
481e41f4b71Sopenharmony_ci| AVERR_AUDIO_INTERRUPTED<sup>11+</sup> | 5400107 | 表示音频焦点被抢占                   |
482e41f4b71Sopenharmony_ci
483e41f4b71Sopenharmony_ci## MediaType<sup>8+</sup>
484e41f4b71Sopenharmony_ci
485e41f4b71Sopenharmony_ci媒体类型枚举。
486e41f4b71Sopenharmony_ci
487e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
488e41f4b71Sopenharmony_ci
489e41f4b71Sopenharmony_ci| 名称           | 值                    | 说明                 |
490e41f4b71Sopenharmony_ci| -------------- | --------------------- | ------------------- |
491e41f4b71Sopenharmony_ci| MEDIA_TYPE_AUD | 0                     | 表示音频。 <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。           |
492e41f4b71Sopenharmony_ci| MEDIA_TYPE_VID | 1                     | 表示视频。  <br> **原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。          |
493e41f4b71Sopenharmony_ci| MEDIA_TYPE_SUBTITLE<sup>12+</sup> | 2    | 表示字幕。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
494e41f4b71Sopenharmony_ci
495e41f4b71Sopenharmony_ci## CodecMimeType<sup>8+</sup>
496e41f4b71Sopenharmony_ci
497e41f4b71Sopenharmony_ciCodec MIME类型枚举。
498e41f4b71Sopenharmony_ci
499e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
500e41f4b71Sopenharmony_ci
501e41f4b71Sopenharmony_ci| 名称         | 值                    | 说明                     |
502e41f4b71Sopenharmony_ci| ------------ | --------------------- | ------------------------ |
503e41f4b71Sopenharmony_ci| VIDEO_H263   | 'video/h263'          | 表示视频/h263类型。      |
504e41f4b71Sopenharmony_ci| VIDEO_AVC    | 'video/avc'           | 表示视频/avc类型。       |
505e41f4b71Sopenharmony_ci| VIDEO_MPEG2  | 'video/mpeg2'         | 表示视频/mpeg2类型。     |
506e41f4b71Sopenharmony_ci| VIDEO_MPEG4  | 'video/mp4v-es'         | 表示视频/mpeg4类型。     |
507e41f4b71Sopenharmony_ci| VIDEO_VP8    | 'video/x-vnd.on2.vp8' | 表示视频/vp8类型。       |
508e41f4b71Sopenharmony_ci| VIDEO_HEVC<sup>11+</sup>   | 'video/hevc'          | 表示视频/H265类型。|
509e41f4b71Sopenharmony_ci| AUDIO_AAC    | 'audio/mp4a-latm'     | 表示音频/mp4a-latm类型。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
510e41f4b71Sopenharmony_ci| AUDIO_VORBIS | 'audio/vorbis'        | 表示音频/vorbis类型。    |
511e41f4b71Sopenharmony_ci| AUDIO_FLAC   | 'audio/flac'          | 表示音频/flac类型。      |
512e41f4b71Sopenharmony_ci| AUDIO_MP3<sup>12+</sup>   | 'audio/mpeg'          | 表示音频/mpeg类型。      |
513e41f4b71Sopenharmony_ci| AUDIO_G711MU<sup>12+</sup>   | 'audio/g711mu'     | 表示音频/G711-mulaw类型。 |
514e41f4b71Sopenharmony_ci
515e41f4b71Sopenharmony_ci## MediaDescriptionKey<sup>8+</sup>
516e41f4b71Sopenharmony_ci
517e41f4b71Sopenharmony_ci媒体信息描述枚举。
518e41f4b71Sopenharmony_ci
519e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
520e41f4b71Sopenharmony_ci
521e41f4b71Sopenharmony_ci| 名称                     | 值              | 说明                                                         |
522e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ |
523e41f4b71Sopenharmony_ci| MD_KEY_TRACK_INDEX       | 'track_index'   | 表示轨道序号,其对应键值类型为number。 <br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
524e41f4b71Sopenharmony_ci| MD_KEY_TRACK_TYPE        | 'track_type'    | 表示轨道类型,其对应键值类型为number,参考[MediaType](#mediatype8)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
525e41f4b71Sopenharmony_ci| MD_KEY_CODEC_MIME        | 'codec_mime'    | 表示codec_mime类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
526e41f4b71Sopenharmony_ci| MD_KEY_DURATION          | 'duration'      | 表示媒体时长,其对应键值类型为number,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
527e41f4b71Sopenharmony_ci| MD_KEY_BITRATE           | 'bitrate'       | 表示比特率,其对应键值类型为number,单位为比特率(bps)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
528e41f4b71Sopenharmony_ci| MD_KEY_WIDTH             | 'width'         | 表示视频宽度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
529e41f4b71Sopenharmony_ci| MD_KEY_HEIGHT            | 'height'        | 表示视频高度,其对应键值类型为number,单位为像素(px)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
530e41f4b71Sopenharmony_ci| MD_KEY_FRAME_RATE        | 'frame_rate'    | 表示视频帧率,其对应键值类型为number,单位为每100秒的帧数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
531e41f4b71Sopenharmony_ci| MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
532e41f4b71Sopenharmony_ci| MD_KEY_AUD_SAMPLE_RATE   | 'sample_rate'   | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
533e41f4b71Sopenharmony_ci| MD_KEY_AUD_SAMPLE_DEPTH<sup>12+</sup>  | 'sample_depth'  | 表示位深,其对应键值类型为number,单位为位(bit)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
534e41f4b71Sopenharmony_ci| MD_KEY_TRACK_NAME<sup>12+</sup>  | 'track_name'  | 表示track名称,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
535e41f4b71Sopenharmony_ci| MD_KEY_HDR_TYPE<sup>12+</sup>  | 'hdr_type'  | 表示视频轨类型,其对应键值类型为string。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
536e41f4b71Sopenharmony_ci
537e41f4b71Sopenharmony_ci## PlaybackInfoKey<sup>12+</sup>
538e41f4b71Sopenharmony_ci
539e41f4b71Sopenharmony_ci播放信息描述枚举。
540e41f4b71Sopenharmony_ci
541e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
542e41f4b71Sopenharmony_ci
543e41f4b71Sopenharmony_ci| 名称                     | 值              | 说明                                                         |
544e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ |
545e41f4b71Sopenharmony_ci| SERVER_IP_ADDRESS        | 'server_ip_address'    | 表示服务器IP地址,其对应键值类型为string。  |
546e41f4b71Sopenharmony_ci| AVG_DOWNLOAD_RATE        | 'average_download_rate'| 表示平均下载速率,其对应键值类型为number,单位为比特率(bps)。 |
547e41f4b71Sopenharmony_ci| DOWNLOAD_RATE            | 'download_rate'        | 表示1s的下载速率,其对应键值类型为number,单位为比特率(bps)。|
548e41f4b71Sopenharmony_ci| IS_DOWNLOADING           | 'is_downloading'       | 表示下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number。|
549e41f4b71Sopenharmony_ci| BUFFER_DURATION          | 'buffer_duration'      | 表示缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)。|
550e41f4b71Sopenharmony_ci
551e41f4b71Sopenharmony_ci## BufferingInfoType<sup>8+</sup>
552e41f4b71Sopenharmony_ci
553e41f4b71Sopenharmony_ci缓存事件类型枚举。
554e41f4b71Sopenharmony_ci
555e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
556e41f4b71Sopenharmony_ci
557e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci| 名称              | 值   | 说明                             |
560e41f4b71Sopenharmony_ci| ----------------- | ---- | -------------------------------- |
561e41f4b71Sopenharmony_ci| BUFFERING_START   | 1    | 表示开始缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                   |
562e41f4b71Sopenharmony_ci| BUFFERING_END     | 2    | 表示结束缓存。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                   |
563e41f4b71Sopenharmony_ci| BUFFERING_PERCENT | 3    | 表示缓存百分比。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                 |
564e41f4b71Sopenharmony_ci| CACHED_DURATION   | 4    | 表示缓存时长,单位为毫秒(ms)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
565e41f4b71Sopenharmony_ci
566e41f4b71Sopenharmony_ci## StateChangeReason<sup>9+</sup>
567e41f4b71Sopenharmony_ci
568e41f4b71Sopenharmony_ci表示播放或录制实例状态机切换原因的枚举,伴随state一起上报。
569e41f4b71Sopenharmony_ci
570e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
571e41f4b71Sopenharmony_ci
572e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
573e41f4b71Sopenharmony_ci
574e41f4b71Sopenharmony_ci| 名称       | 值   | 说明                                                         |
575e41f4b71Sopenharmony_ci| ---------- | ---- | ------------------------------------------------------------ |
576e41f4b71Sopenharmony_ci| USER       | 1    | 表示用户行为造成的状态切换,由用户或客户端主动调用接口产生。 |
577e41f4b71Sopenharmony_ci| BACKGROUND | 2    | 表示后台系统行为造成的状态切换,比如应用未注册播控中心权限,退到后台时被系统强制暂停或停止。 |
578e41f4b71Sopenharmony_ci
579e41f4b71Sopenharmony_ci## AVPlayer<sup>9+</sup>
580e41f4b71Sopenharmony_ci
581e41f4b71Sopenharmony_ci播放管理类,用于管理和播放媒体资源。在调用AVPlayer的方法前,需要先通过[createAVPlayer()](#mediacreateavplayer9)构建一个AVPlayer实例。
582e41f4b71Sopenharmony_ci
583e41f4b71Sopenharmony_ciAudio/Video播放demo可参考:[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)、[视频播放开发指导](../../media/media/video-playback.md)。
584e41f4b71Sopenharmony_ci
585e41f4b71Sopenharmony_ci> **说明:**
586e41f4b71Sopenharmony_ci>
587e41f4b71Sopenharmony_ci> 在使用AVPlayer实例的方法时,建议开发者注册相关回调,主动获取当前状态变化。
588e41f4b71Sopenharmony_ci> - [on('stateChange')](#onstatechange9):监听播放状态机AVPlayerState切换。
589e41f4b71Sopenharmony_ci> - [on('error')](#onerror9):监听错误事件。
590e41f4b71Sopenharmony_ci
591e41f4b71Sopenharmony_ci### 属性
592e41f4b71Sopenharmony_ci
593e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
594e41f4b71Sopenharmony_ci
595e41f4b71Sopenharmony_ci| 名称                                                | 类型                                                         | 只读 | 可选 | 说明                                                         |
596e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
597e41f4b71Sopenharmony_ci| url<sup>9+</sup>                                    | string                                                       | 否   | 是   | 媒体URL,只允许在**idle**状态下设置。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<br/>**支持路径示例**:<br>1. fd类型播放:fd://xx。<br>![](figures/zh-cn_image_url.png)<br>2. http网络播放: http\://xx。<br/>3. https网络播放: https\://xx。<br/>4. hls网络播放路径:http\://xx或者https\://xx。<br>**说明:**<br>- 设置网络播放路径,需[声明权限](../../security/AccessToken/declare-permissions.md):[ohos.permission.INTERNET](../../security/AccessToken/permissions-for-all.md#ohospermissioninternet),相关错误码: [201](../errorcode-universal.md)。<br>- 从API version 11开始不支持webm。<br> - 将资源句柄(fd)传递给 AVPlayer 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致媒体播放器数据获取异常。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
598e41f4b71Sopenharmony_ci| fdSrc<sup>9+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 否   | 是   | 媒体文件描述,只允许在**idle**状态下设置。<br/>使用场景:应用中的媒体资源被连续存储在同一个文件中。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<br/>**使用示例**:<br/>假设一个连续存储的媒体文件: <br/>视频1(地址偏移:0,字节长度:100);<br/>视频2(地址偏移:101,字节长度:50);<br/>视频3(地址偏移:151,字节长度:150);<br/>1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br/>2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }。<br/>3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }。<br/>假设是一个独立的媒体文件: 请使用src=fd://xx。<br>**说明:**<br>从API version 11开始不支持webm。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
599e41f4b71Sopenharmony_ci| dataSrc<sup>10+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 否   | 是   | 流式媒体资源描述,只允许在**idle**状态下设置。<br/>使用场景:应用播放从远端下载到本地的文件,在应用未下载完整音视频资源时,提前播放已获取的资源文件。<br/>支持的视频格式(mp4、mpeg-ts、mkv)。<br>支持的音频格式(m4a、aac、mp3、ogg、wav、flac、amr)。<br/>**使用示例**:<br/>假设用户正在从远端服务器获取音视频媒体文件,希望下载到本地的同时播放已经下载好的部分: <br/>1.用户需要获取媒体文件的总大小size(单位为字节),获取不到时设置为-1。<br/>2.用户需要实现回调函数func用于填写数据,如果size = -1,则func形式为:func(buffer: ArrayBuffer, length: number),此时播放器只会按照顺序获取数据;否则func形式为:func(buffer: ArrayBuffer, length: number, pos: number),播放器会按需跳转并获取数据。<br/>3.用户设置AVDataSrcDescriptor {fileSize = size, callback = func}。<br/>**注意事项**:<br/>如果播放的是mp4/m4a格式用户需要保证moov字段(媒体信息字段)在mdat字段(媒体数据字段)之前,或者moov之前的字段小于10M,否则会导致解析失败无法播放。<br>**说明:**<br>从API version 11开始不支持webm。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
600e41f4b71Sopenharmony_ci| surfaceId<sup>9+</sup>                              | string                                                       | 否   | 是   | 视频窗口ID,默认无窗口。<br/>支持在**initialized**状态下设置。<br/>支持在**prepared**/**playing**/**paused**/**completed**/**stopped**状态下重新设置,重新设置时确保已经在**initialized**状态下进行设置,否则重新设置失败,重新设置后视频播放在新的窗口渲染。<br/>使用场景:视频播放的窗口渲染,纯音频播放不用设置。<br/>**使用示例**:<br/>[通过XComponent创建surfaceId](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md#getxcomponentsurfaceid)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
601e41f4b71Sopenharmony_ci| loop<sup>9+</sup>                                   | boolean                                                      | 否   | 否   | 视频循环播放属性,默认'false',设置为'true'表示循环播放,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>直播场景不支持loop设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
602e41f4b71Sopenharmony_ci| videoScaleType<sup>9+</sup>                         | [VideoScaleType](#videoscaletype9)                           | 否   | 是   | 视频缩放模式,默认VIDEO_SCALE_TYPE_FIT,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
603e41f4b71Sopenharmony_ci| audioInterruptMode<sup>9+</sup>                     | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)       | 否   | 是   | 音频焦点模型,默认SHARE_MODE,动态属性。<br/>只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。<br/>在第一次调用[play()](#play9)之前设置, 以便此后中断模式生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
604e41f4b71Sopenharmony_ci| audioRendererInfo<sup>10+</sup>                     | [audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8) | 否   | 是   | 设置音频渲染信息。若媒体源包含视频,则usage默认值为STREAM_USAGE_MOVIE,否则usage默认值为STREAM_USAGE_MUSIC。rendererFlags默认值为0。若默认usage不满足需求,则须主动配置[audio.AudioRendererInfo](../apis-audio-kit/js-apis-audio.md#audiorendererinfo8)。<br/>只允许在**initialized**状态下设置。<br/>在第一次调用[prepare()](#prepare9)之前设置,以便音频渲染器信息在之后生效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
605e41f4b71Sopenharmony_ci| audioEffectMode<sup>10+</sup>                       | [audio.AudioEffectMode](../apis-audio-kit/js-apis-audio.md#audioeffectmode10)  | 否   | 是   | 设置音频音效模式,默认值为EFFECT_DEFAULT,动态属性。audioRendererInfo的usage变动时会恢复为默认值,只允许在**prepared**/**playing**/**paused**/**completed**状态下设置。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
606e41f4b71Sopenharmony_ci| state<sup>9+</sup>                                  | [AVPlayerState](#avplayerstate9)                             | 是   | 否   | 音视频播放的状态,全状态有效,可查询参数。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。                  |
607e41f4b71Sopenharmony_ci| currentTime<sup>9+</sup>                            | number                                                       | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
608e41f4b71Sopenharmony_ci| duration<sup>9+</sup> | number                                                       | 是   | 否   | 视频时长,单位为毫秒(ms),可查询参数。<br/>返回为(-1)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。<br/>直播场景默认返回(-1)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
609e41f4b71Sopenharmony_ci| width<sup>9+</sup>                                  | number                                                       | 是   | 否   | 视频宽,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
610e41f4b71Sopenharmony_ci| height<sup>9+</sup>                                 | number                                                       | 是   | 否   | 视频高,单位为像素(px),可查询参数。<br/>返回为(0)表示无效值,**prepared**/**playing**/**paused**/**completed**状态下有效。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
611e41f4b71Sopenharmony_ci
612e41f4b71Sopenharmony_ci### on('stateChange')<sup>9+</sup>
613e41f4b71Sopenharmony_ci
614e41f4b71Sopenharmony_cion(type: 'stateChange', callback: OnAVPlayerStateChangeHandle): void
615e41f4b71Sopenharmony_ci
616e41f4b71Sopenharmony_ci监听播放状态机AVPlayerState切换的事件。
617e41f4b71Sopenharmony_ci
618e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
619e41f4b71Sopenharmony_ci
620e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
621e41f4b71Sopenharmony_ci
622e41f4b71Sopenharmony_ci**参数:**
623e41f4b71Sopenharmony_ci
624e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
625e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
626e41f4b71Sopenharmony_ci| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
627e41f4b71Sopenharmony_ci| callback | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 是   | 状态机切换事件回调方法。 |
628e41f4b71Sopenharmony_ci
629e41f4b71Sopenharmony_ci**示例:**
630e41f4b71Sopenharmony_ci
631e41f4b71Sopenharmony_ci```ts
632e41f4b71Sopenharmony_ciavPlayer.on('stateChange', async (state: string, reason: media.StateChangeReason) => {
633e41f4b71Sopenharmony_ci  switch (state) {
634e41f4b71Sopenharmony_ci    case 'idle':
635e41f4b71Sopenharmony_ci      console.info('state idle called');
636e41f4b71Sopenharmony_ci      break;
637e41f4b71Sopenharmony_ci    case 'initialized':
638e41f4b71Sopenharmony_ci      console.info('initialized prepared called');
639e41f4b71Sopenharmony_ci      break;
640e41f4b71Sopenharmony_ci    case 'prepared':
641e41f4b71Sopenharmony_ci      console.info('state prepared called');
642e41f4b71Sopenharmony_ci      break;
643e41f4b71Sopenharmony_ci    case 'playing':
644e41f4b71Sopenharmony_ci      console.info('state playing called');
645e41f4b71Sopenharmony_ci      break;
646e41f4b71Sopenharmony_ci    case 'paused':
647e41f4b71Sopenharmony_ci      console.info('state paused called');
648e41f4b71Sopenharmony_ci      break;
649e41f4b71Sopenharmony_ci    case 'completed':
650e41f4b71Sopenharmony_ci      console.info('state completed called');
651e41f4b71Sopenharmony_ci      break;
652e41f4b71Sopenharmony_ci    case 'stopped':
653e41f4b71Sopenharmony_ci      console.info('state stopped called');
654e41f4b71Sopenharmony_ci      break;
655e41f4b71Sopenharmony_ci    case 'released':
656e41f4b71Sopenharmony_ci      console.info('state released called');
657e41f4b71Sopenharmony_ci      break;
658e41f4b71Sopenharmony_ci    case 'error':
659e41f4b71Sopenharmony_ci      console.info('state error called');
660e41f4b71Sopenharmony_ci      break;
661e41f4b71Sopenharmony_ci    default:
662e41f4b71Sopenharmony_ci      console.info('unknown state :' + state);
663e41f4b71Sopenharmony_ci      break;
664e41f4b71Sopenharmony_ci  }
665e41f4b71Sopenharmony_ci})
666e41f4b71Sopenharmony_ci```
667e41f4b71Sopenharmony_ci
668e41f4b71Sopenharmony_ci### off('stateChange')<sup>9+</sup>
669e41f4b71Sopenharmony_ci
670e41f4b71Sopenharmony_cioff(type: 'stateChange', callback?: OnAVPlayerStateChangeHandle): void
671e41f4b71Sopenharmony_ci
672e41f4b71Sopenharmony_ci取消监听播放状态机[AVPlayerState](#avplayerstate9)切换的事件。
673e41f4b71Sopenharmony_ci
674e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
675e41f4b71Sopenharmony_ci
676e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
677e41f4b71Sopenharmony_ci
678e41f4b71Sopenharmony_ci**参数:**
679e41f4b71Sopenharmony_ci
680e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                  |
681e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------------------- |
682e41f4b71Sopenharmony_ci| type   | string | 是   | 状态机切换事件回调类型,取消注册的事件:'stateChange' |
683e41f4b71Sopenharmony_ci| callback   | [OnAVPlayerStateChangeHandle](#onavplayerstatechangehandle12) | 否   | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 |
684e41f4b71Sopenharmony_ci
685e41f4b71Sopenharmony_ci**示例:**
686e41f4b71Sopenharmony_ci
687e41f4b71Sopenharmony_ci```ts
688e41f4b71Sopenharmony_ciavPlayer.off('stateChange')
689e41f4b71Sopenharmony_ci```
690e41f4b71Sopenharmony_ci
691e41f4b71Sopenharmony_ci### on('error')<sup>9+</sup>
692e41f4b71Sopenharmony_ci
693e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
694e41f4b71Sopenharmony_ci
695e41f4b71Sopenharmony_ci监听[AVPlayer](#avplayer9)的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVPlayerState](#avplayerstate9)也切至error状态,用户需要通过[reset()](#reset9)或者[release()](#release9)退出播放操作。
696e41f4b71Sopenharmony_ci
697e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11 开始,该接口支持在原子化服务中使用。
698e41f4b71Sopenharmony_ci
699e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
700e41f4b71Sopenharmony_ci
701e41f4b71Sopenharmony_ci**参数:**
702e41f4b71Sopenharmony_ci
703e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
704e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
705e41f4b71Sopenharmony_ci| type     | string   | 是   | 错误事件回调类型,支持的事件:'error',用户操作和系统都会触发此事件。 |
706e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。 |
707e41f4b71Sopenharmony_ci
708e41f4b71Sopenharmony_ci**错误码:**
709e41f4b71Sopenharmony_ci
710e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
711e41f4b71Sopenharmony_ci
712e41f4b71Sopenharmony_ci| 错误码ID | 错误信息              |
713e41f4b71Sopenharmony_ci| -------- | --------------------- |
714e41f4b71Sopenharmony_ci| 201      | Permission denied     |
715e41f4b71Sopenharmony_ci| 401      | The parameter check failed. |
716e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
717e41f4b71Sopenharmony_ci| 5400101  | No memory. |
718e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed.|
719e41f4b71Sopenharmony_ci| 5400103  | I/O error             |
720e41f4b71Sopenharmony_ci| 5400104  | Time out              |
721e41f4b71Sopenharmony_ci| 5400105  | Service died.         |
722e41f4b71Sopenharmony_ci| 5400106  | Unsupport format.     |
723e41f4b71Sopenharmony_ci
724e41f4b71Sopenharmony_ci**示例:**
725e41f4b71Sopenharmony_ci
726e41f4b71Sopenharmony_ci```ts
727e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
728e41f4b71Sopenharmony_ci
729e41f4b71Sopenharmony_ciavPlayer.on('error', (error: BusinessError) => {
730e41f4b71Sopenharmony_ci  console.info('error happened,and error message is :' + error.message)
731e41f4b71Sopenharmony_ci  console.info('error happened,and error code is :' + error.code)
732e41f4b71Sopenharmony_ci})
733e41f4b71Sopenharmony_ci```
734e41f4b71Sopenharmony_ci
735e41f4b71Sopenharmony_ci### off('error')<sup>9+</sup>
736e41f4b71Sopenharmony_ci
737e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void
738e41f4b71Sopenharmony_ci
739e41f4b71Sopenharmony_ci取消监听播放的错误事件。
740e41f4b71Sopenharmony_ci
741e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
742e41f4b71Sopenharmony_ci
743e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
744e41f4b71Sopenharmony_ci
745e41f4b71Sopenharmony_ci**参数:**
746e41f4b71Sopenharmony_ci
747e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                      |
748e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------- |
749e41f4b71Sopenharmony_ci| type   | string | 是   | 错误事件回调类型,取消注册的事件:'error' |
750e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 错误事件回调方法,使用播放器的过程中发生错误,会提供错误码ID和错误信息。<br/>从API version 12开始支持此参数。 |
751e41f4b71Sopenharmony_ci
752e41f4b71Sopenharmony_ci**示例:**
753e41f4b71Sopenharmony_ci
754e41f4b71Sopenharmony_ci```ts
755e41f4b71Sopenharmony_ciavPlayer.off('error')
756e41f4b71Sopenharmony_ci```
757e41f4b71Sopenharmony_ci
758e41f4b71Sopenharmony_ci### setMediaSource<sup>12+</sup>
759e41f4b71Sopenharmony_ci
760e41f4b71Sopenharmony_cisetMediaSource(src:MediaSource, strategy?: PlaybackStrategy): Promise\<void>
761e41f4b71Sopenharmony_ci
762e41f4b71Sopenharmony_ci流媒体预下载资源设置,下载url对应的流媒体数据,并暂存在内存中。[视频播放开发指导](../../media/media/video-playback.md)。通过Promise获取返回值。
763e41f4b71Sopenharmony_ci
764e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
765e41f4b71Sopenharmony_ci
766e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
767e41f4b71Sopenharmony_ci
768e41f4b71Sopenharmony_ci**参数:**
769e41f4b71Sopenharmony_ci
770e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
771e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
772e41f4b71Sopenharmony_ci| src | [MediaSource](#mediasource12) | 是   | 流媒体预下载媒体来源。 |
773e41f4b71Sopenharmony_ci| strategy | [PlaybackStrategy](#playbackstrategy12) | 否   | 流媒体预下载播放策略。 |
774e41f4b71Sopenharmony_ci
775e41f4b71Sopenharmony_ci**返回值:**
776e41f4b71Sopenharmony_ci
777e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
778e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
779e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
780e41f4b71Sopenharmony_ci
781e41f4b71Sopenharmony_ci**错误码:**
782e41f4b71Sopenharmony_ci
783e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
784e41f4b71Sopenharmony_ci
785e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
786e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
787e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
788e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
789e41f4b71Sopenharmony_ci
790e41f4b71Sopenharmony_ci**示例:**
791e41f4b71Sopenharmony_ci
792e41f4b71Sopenharmony_ci```ts
793e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
794e41f4b71Sopenharmony_ci
795e41f4b71Sopenharmony_cilet player = await media.createAVPlayer();
796e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
797e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);
798e41f4b71Sopenharmony_cilet playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3, preferredHdr: false};
799e41f4b71Sopenharmony_ciplayer.setMediaSource(mediaSource, playStrategy);
800e41f4b71Sopenharmony_ci```
801e41f4b71Sopenharmony_ci
802e41f4b71Sopenharmony_ci### setPlaybackStrategy<sup>12+</sup>
803e41f4b71Sopenharmony_ci
804e41f4b71Sopenharmony_cisetPlaybackStrategy(strategy: PlaybackStrategy): Promise\<void>
805e41f4b71Sopenharmony_ci
806e41f4b71Sopenharmony_ci设置播放策略,只能在initialized状态下调用。
807e41f4b71Sopenharmony_ci
808e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
809e41f4b71Sopenharmony_ci
810e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
811e41f4b71Sopenharmony_ci
812e41f4b71Sopenharmony_ci**参数:**
813e41f4b71Sopenharmony_ci
814e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
815e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
816e41f4b71Sopenharmony_ci| strategy | [PlaybackStrategy](#playbackstrategy12) | 是   | 播放策略。 |
817e41f4b71Sopenharmony_ci
818e41f4b71Sopenharmony_ci**返回值:**
819e41f4b71Sopenharmony_ci
820e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
821e41f4b71Sopenharmony_ci| -------------- | ------------------------------------ |
822e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
823e41f4b71Sopenharmony_ci
824e41f4b71Sopenharmony_ci**错误码:**
825e41f4b71Sopenharmony_ci
826e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
827e41f4b71Sopenharmony_ci
828e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
829e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
830e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Incorrect parameter types. 2. Parameter verification failed. |
831e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
832e41f4b71Sopenharmony_ci
833e41f4b71Sopenharmony_ci**示例:**
834e41f4b71Sopenharmony_ci
835e41f4b71Sopenharmony_ci```ts
836e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
837e41f4b71Sopenharmony_ci
838e41f4b71Sopenharmony_cilet player = await media.createAVPlayer();
839e41f4b71Sopenharmony_cilet fileDescriptor = await context.resourceManager.getRawFd('xxx.mp4')
840e41f4b71Sopenharmony_ciplayer.fdSrc = fileDescriptor
841e41f4b71Sopenharmony_cilet playStrategy : media.PlaybackStrategy = {preferredWidth: 1, preferredHeight: 2, preferredBufferDuration: 3,
842e41f4b71Sopenharmony_ci  preferredHdr: false, mutedMediaType: media.MediaType.MEDIA_TYPE_AUD};
843e41f4b71Sopenharmony_ciplayer.setPlaybackStrategy(playStrategy);
844e41f4b71Sopenharmony_ci```
845e41f4b71Sopenharmony_ci
846e41f4b71Sopenharmony_ci### prepare<sup>9+</sup>
847e41f4b71Sopenharmony_ci
848e41f4b71Sopenharmony_ciprepare(callback: AsyncCallback\<void>): void
849e41f4b71Sopenharmony_ci
850e41f4b71Sopenharmony_ci准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。使用callback方式异步获取返回值。
851e41f4b71Sopenharmony_ci
852e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
853e41f4b71Sopenharmony_ci
854e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
855e41f4b71Sopenharmony_ci
856e41f4b71Sopenharmony_ci**参数:**
857e41f4b71Sopenharmony_ci
858e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
859e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
860e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 准备播放的回调方法。 |
861e41f4b71Sopenharmony_ci
862e41f4b71Sopenharmony_ci**错误码:**
863e41f4b71Sopenharmony_ci
864e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
865e41f4b71Sopenharmony_ci
866e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
867e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
868e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
869e41f4b71Sopenharmony_ci| 5400106  | Unsupport format. Return by callback.      |
870e41f4b71Sopenharmony_ci
871e41f4b71Sopenharmony_ci**示例:**
872e41f4b71Sopenharmony_ci
873e41f4b71Sopenharmony_ci```ts
874e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
875e41f4b71Sopenharmony_ci
876e41f4b71Sopenharmony_ciavPlayer.prepare((err: BusinessError) => {
877e41f4b71Sopenharmony_ci  if (err) {
878e41f4b71Sopenharmony_ci    console.error('Failed to prepare,error message is :' + err.message)
879e41f4b71Sopenharmony_ci  } else {
880e41f4b71Sopenharmony_ci    console.info('Succeeded in preparing');
881e41f4b71Sopenharmony_ci  }
882e41f4b71Sopenharmony_ci})
883e41f4b71Sopenharmony_ci```
884e41f4b71Sopenharmony_ci
885e41f4b71Sopenharmony_ci### prepare<sup>9+</sup>
886e41f4b71Sopenharmony_ci
887e41f4b71Sopenharmony_ciprepare(): Promise\<void>
888e41f4b71Sopenharmony_ci
889e41f4b71Sopenharmony_ci准备播放音频/视频,需在[stateChange](#onstatechange9)事件成功触发至initialized状态后,才能调用。通过Promise获取返回值。
890e41f4b71Sopenharmony_ci
891e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
892e41f4b71Sopenharmony_ci
893e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
894e41f4b71Sopenharmony_ci
895e41f4b71Sopenharmony_ci**返回值:**
896e41f4b71Sopenharmony_ci
897e41f4b71Sopenharmony_ci| 类型           | 说明                      |
898e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
899e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放的Promise返回值。 |
900e41f4b71Sopenharmony_ci
901e41f4b71Sopenharmony_ci**错误码:**
902e41f4b71Sopenharmony_ci
903e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
904e41f4b71Sopenharmony_ci
905e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
906e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
907e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
908e41f4b71Sopenharmony_ci| 5400106  | Unsupport format. Return by promise.      |
909e41f4b71Sopenharmony_ci
910e41f4b71Sopenharmony_ci**示例:**
911e41f4b71Sopenharmony_ci
912e41f4b71Sopenharmony_ci```ts
913e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
914e41f4b71Sopenharmony_ci
915e41f4b71Sopenharmony_ciavPlayer.prepare().then(() => {
916e41f4b71Sopenharmony_ci  console.info('Succeeded in preparing');
917e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
918e41f4b71Sopenharmony_ci  console.error('Failed to prepare,error message is :' + err.message)
919e41f4b71Sopenharmony_ci})
920e41f4b71Sopenharmony_ci```
921e41f4b71Sopenharmony_ci
922e41f4b71Sopenharmony_ci### setMediaMuted<sup>12+</sup>
923e41f4b71Sopenharmony_ci
924e41f4b71Sopenharmony_cisetMediaMuted(mediaType: MediaType,  muted: boolean ): Promise\<void>
925e41f4b71Sopenharmony_ci
926e41f4b71Sopenharmony_ci设置音频静音/取消音频静音。只能在prepared/playing/paused/completed状态下调用。仅支持设置mediaType为音频格式。
927e41f4b71Sopenharmony_ci
928e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
929e41f4b71Sopenharmony_ci
930e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
931e41f4b71Sopenharmony_ci
932e41f4b71Sopenharmony_ci**参数:**
933e41f4b71Sopenharmony_ci
934e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
935e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
936e41f4b71Sopenharmony_ci| mediaType | [MediaType](#mediatype8) | 是   | 播放策略。 |
937e41f4b71Sopenharmony_ci| muted | boolean | 是   | 是否静音播放。 |
938e41f4b71Sopenharmony_ci
939e41f4b71Sopenharmony_ci**返回值:**
940e41f4b71Sopenharmony_ci
941e41f4b71Sopenharmony_ci| 类型           | 说明                      |
942e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
943e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放的Promise返回值。 |
944e41f4b71Sopenharmony_ci
945e41f4b71Sopenharmony_ci**错误码:**
946e41f4b71Sopenharmony_ci
947e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
948e41f4b71Sopenharmony_ci
949e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
950e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
951e41f4b71Sopenharmony_ci| 401 | The parameter check failed. Return by promise. |
952e41f4b71Sopenharmony_ci| 5400102 | Operation not allowed. Return by promise. |
953e41f4b71Sopenharmony_ci
954e41f4b71Sopenharmony_ci**示例:**
955e41f4b71Sopenharmony_ci
956e41f4b71Sopenharmony_ci```ts
957e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
958e41f4b71Sopenharmony_ci
959e41f4b71Sopenharmony_ciavPlayer.prepare().then(() => {
960e41f4b71Sopenharmony_ci  console.info('Succeeded in preparing');
961e41f4b71Sopenharmony_ci  avPlayer.setMediaMuted(media.MediaType.MEDIA_TYPE_AUD, true)
962e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
963e41f4b71Sopenharmony_ci  console.error('Failed to prepare,error message is :' + err.message)
964e41f4b71Sopenharmony_ci})
965e41f4b71Sopenharmony_ci```
966e41f4b71Sopenharmony_ci
967e41f4b71Sopenharmony_ci### play<sup>9+</sup>
968e41f4b71Sopenharmony_ci
969e41f4b71Sopenharmony_ciplay(callback: AsyncCallback\<void>): void
970e41f4b71Sopenharmony_ci
971e41f4b71Sopenharmony_ci开始播放音视频资源,只能在prepared/paused/completed状态调用。使用callback方式异步获取返回值。
972e41f4b71Sopenharmony_ci
973e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
974e41f4b71Sopenharmony_ci
975e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
976e41f4b71Sopenharmony_ci
977e41f4b71Sopenharmony_ci**参数:**
978e41f4b71Sopenharmony_ci
979e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
980e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
981e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 开始播放的回调方法。 |
982e41f4b71Sopenharmony_ci
983e41f4b71Sopenharmony_ci**错误码:**
984e41f4b71Sopenharmony_ci
985e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
986e41f4b71Sopenharmony_ci
987e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
988e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
989e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
990e41f4b71Sopenharmony_ci
991e41f4b71Sopenharmony_ci**示例:**
992e41f4b71Sopenharmony_ci
993e41f4b71Sopenharmony_ci```ts
994e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
995e41f4b71Sopenharmony_ci
996e41f4b71Sopenharmony_ciavPlayer.play((err: BusinessError) => {
997e41f4b71Sopenharmony_ci  if (err) {
998e41f4b71Sopenharmony_ci    console.error('Failed to play,error message is :' + err.message)
999e41f4b71Sopenharmony_ci  } else {
1000e41f4b71Sopenharmony_ci    console.info('Succeeded in playing');
1001e41f4b71Sopenharmony_ci  }
1002e41f4b71Sopenharmony_ci})
1003e41f4b71Sopenharmony_ci```
1004e41f4b71Sopenharmony_ci
1005e41f4b71Sopenharmony_ci### play<sup>9+</sup>
1006e41f4b71Sopenharmony_ci
1007e41f4b71Sopenharmony_ciplay(): Promise\<void>
1008e41f4b71Sopenharmony_ci
1009e41f4b71Sopenharmony_ci开始播放音视频资源,只能在prepared/paused/completed状态调用。通过Promise获取返回值。
1010e41f4b71Sopenharmony_ci
1011e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1012e41f4b71Sopenharmony_ci
1013e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1014e41f4b71Sopenharmony_ci
1015e41f4b71Sopenharmony_ci**返回值:**
1016e41f4b71Sopenharmony_ci
1017e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1018e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1019e41f4b71Sopenharmony_ci| Promise\<void> | 开始播放的Promise返回值。 |
1020e41f4b71Sopenharmony_ci
1021e41f4b71Sopenharmony_ci**错误码:**
1022e41f4b71Sopenharmony_ci
1023e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1024e41f4b71Sopenharmony_ci
1025e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1026e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1027e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1028e41f4b71Sopenharmony_ci
1029e41f4b71Sopenharmony_ci**示例:**
1030e41f4b71Sopenharmony_ci
1031e41f4b71Sopenharmony_ci```ts
1032e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1033e41f4b71Sopenharmony_ci
1034e41f4b71Sopenharmony_ciavPlayer.play().then(() => {
1035e41f4b71Sopenharmony_ci  console.info('Succeeded in playing');
1036e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
1037e41f4b71Sopenharmony_ci  console.error('Failed to play,error message is :' + err.message)
1038e41f4b71Sopenharmony_ci})
1039e41f4b71Sopenharmony_ci```
1040e41f4b71Sopenharmony_ci
1041e41f4b71Sopenharmony_ci### pause<sup>9+</sup>
1042e41f4b71Sopenharmony_ci
1043e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void
1044e41f4b71Sopenharmony_ci
1045e41f4b71Sopenharmony_ci暂停播放音视频资源,只能在playing状态调用。使用callback方式异步获取返回值。
1046e41f4b71Sopenharmony_ci
1047e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1048e41f4b71Sopenharmony_ci
1049e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1050e41f4b71Sopenharmony_ci
1051e41f4b71Sopenharmony_ci**参数:**
1052e41f4b71Sopenharmony_ci
1053e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1054e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1055e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 暂停播放的回调方法。 |
1056e41f4b71Sopenharmony_ci
1057e41f4b71Sopenharmony_ci**错误码:**
1058e41f4b71Sopenharmony_ci
1059e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1060e41f4b71Sopenharmony_ci
1061e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
1062e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
1063e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
1064e41f4b71Sopenharmony_ci
1065e41f4b71Sopenharmony_ci**示例:**
1066e41f4b71Sopenharmony_ci
1067e41f4b71Sopenharmony_ci```ts
1068e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1069e41f4b71Sopenharmony_ci
1070e41f4b71Sopenharmony_ciavPlayer.pause((err: BusinessError) => {
1071e41f4b71Sopenharmony_ci  if (err) {
1072e41f4b71Sopenharmony_ci    console.error('Failed to pause,error message is :' + err.message)
1073e41f4b71Sopenharmony_ci  } else {
1074e41f4b71Sopenharmony_ci    console.info('Succeeded in pausing');
1075e41f4b71Sopenharmony_ci  }
1076e41f4b71Sopenharmony_ci})
1077e41f4b71Sopenharmony_ci```
1078e41f4b71Sopenharmony_ci
1079e41f4b71Sopenharmony_ci### pause<sup>9+</sup>
1080e41f4b71Sopenharmony_ci
1081e41f4b71Sopenharmony_cipause(): Promise\<void>
1082e41f4b71Sopenharmony_ci
1083e41f4b71Sopenharmony_ci暂停播放音视频资源,只能在playing状态调用。通过Promise获取返回值。
1084e41f4b71Sopenharmony_ci
1085e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1086e41f4b71Sopenharmony_ci
1087e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1088e41f4b71Sopenharmony_ci
1089e41f4b71Sopenharmony_ci**返回值:**
1090e41f4b71Sopenharmony_ci
1091e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1092e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1093e41f4b71Sopenharmony_ci| Promise\<void> | 暂停播放的Promise返回值。 |
1094e41f4b71Sopenharmony_ci
1095e41f4b71Sopenharmony_ci**错误码:**
1096e41f4b71Sopenharmony_ci
1097e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1098e41f4b71Sopenharmony_ci
1099e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1100e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1101e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1102e41f4b71Sopenharmony_ci
1103e41f4b71Sopenharmony_ci**示例:**
1104e41f4b71Sopenharmony_ci
1105e41f4b71Sopenharmony_ci```ts
1106e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1107e41f4b71Sopenharmony_ci
1108e41f4b71Sopenharmony_ciavPlayer.pause().then(() => {
1109e41f4b71Sopenharmony_ci  console.info('Succeeded in pausing');
1110e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
1111e41f4b71Sopenharmony_ci  console.error('Failed to pause,error message is :' + err.message)
1112e41f4b71Sopenharmony_ci})
1113e41f4b71Sopenharmony_ci```
1114e41f4b71Sopenharmony_ci
1115e41f4b71Sopenharmony_ci### stop<sup>9+</sup>
1116e41f4b71Sopenharmony_ci
1117e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void
1118e41f4b71Sopenharmony_ci
1119e41f4b71Sopenharmony_ci停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。使用callback方式异步获取返回值。
1120e41f4b71Sopenharmony_ci
1121e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1122e41f4b71Sopenharmony_ci
1123e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1124e41f4b71Sopenharmony_ci
1125e41f4b71Sopenharmony_ci**参数:**
1126e41f4b71Sopenharmony_ci
1127e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1128e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1129e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 停止播放的回调方法。 |
1130e41f4b71Sopenharmony_ci
1131e41f4b71Sopenharmony_ci**错误码:**
1132e41f4b71Sopenharmony_ci
1133e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1134e41f4b71Sopenharmony_ci
1135e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
1136e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
1137e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
1138e41f4b71Sopenharmony_ci
1139e41f4b71Sopenharmony_ci**示例:**
1140e41f4b71Sopenharmony_ci
1141e41f4b71Sopenharmony_ci```ts
1142e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1143e41f4b71Sopenharmony_ci
1144e41f4b71Sopenharmony_ciavPlayer.stop((err: BusinessError) => {
1145e41f4b71Sopenharmony_ci  if (err) {
1146e41f4b71Sopenharmony_ci    console.error('Failed to stop,error message is :' + err.message)
1147e41f4b71Sopenharmony_ci  } else {
1148e41f4b71Sopenharmony_ci    console.info('Succeeded in stopping');
1149e41f4b71Sopenharmony_ci  }
1150e41f4b71Sopenharmony_ci})
1151e41f4b71Sopenharmony_ci```
1152e41f4b71Sopenharmony_ci
1153e41f4b71Sopenharmony_ci### stop<sup>9+</sup>
1154e41f4b71Sopenharmony_ci
1155e41f4b71Sopenharmony_cistop(): Promise\<void>
1156e41f4b71Sopenharmony_ci
1157e41f4b71Sopenharmony_ci停止播放音视频资源,只能在prepared/playing/paused/completed状态调用。通过Promise获取返回值。
1158e41f4b71Sopenharmony_ci
1159e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1160e41f4b71Sopenharmony_ci
1161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1162e41f4b71Sopenharmony_ci
1163e41f4b71Sopenharmony_ci**返回值:**
1164e41f4b71Sopenharmony_ci
1165e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1166e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1167e41f4b71Sopenharmony_ci| Promise\<void> | 停止播放的Promise返回值。 |
1168e41f4b71Sopenharmony_ci
1169e41f4b71Sopenharmony_ci**错误码:**
1170e41f4b71Sopenharmony_ci
1171e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1172e41f4b71Sopenharmony_ci
1173e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1174e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1175e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1176e41f4b71Sopenharmony_ci
1177e41f4b71Sopenharmony_ci**示例:**
1178e41f4b71Sopenharmony_ci
1179e41f4b71Sopenharmony_ci```ts
1180e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1181e41f4b71Sopenharmony_ci
1182e41f4b71Sopenharmony_ciavPlayer.stop().then(() => {
1183e41f4b71Sopenharmony_ci  console.info('Succeeded in stopping');
1184e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
1185e41f4b71Sopenharmony_ci  console.error('Failed to stop,error message is :' + err.message)
1186e41f4b71Sopenharmony_ci})
1187e41f4b71Sopenharmony_ci```
1188e41f4b71Sopenharmony_ci
1189e41f4b71Sopenharmony_ci### reset<sup>9+</sup>
1190e41f4b71Sopenharmony_ci
1191e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void
1192e41f4b71Sopenharmony_ci
1193e41f4b71Sopenharmony_ci重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。使用callback方式异步获取返回值。
1194e41f4b71Sopenharmony_ci
1195e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1196e41f4b71Sopenharmony_ci
1197e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1198e41f4b71Sopenharmony_ci
1199e41f4b71Sopenharmony_ci**参数:**
1200e41f4b71Sopenharmony_ci
1201e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1202e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1203e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 重置播放的回调方法。 |
1204e41f4b71Sopenharmony_ci
1205e41f4b71Sopenharmony_ci**错误码:**
1206e41f4b71Sopenharmony_ci
1207e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1208e41f4b71Sopenharmony_ci
1209e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
1210e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
1211e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
1212e41f4b71Sopenharmony_ci
1213e41f4b71Sopenharmony_ci**示例:**
1214e41f4b71Sopenharmony_ci
1215e41f4b71Sopenharmony_ci```ts
1216e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1217e41f4b71Sopenharmony_ci
1218e41f4b71Sopenharmony_ciavPlayer.reset((err: BusinessError) => {
1219e41f4b71Sopenharmony_ci  if (err) {
1220e41f4b71Sopenharmony_ci    console.error('Failed to reset,error message is :' + err.message)
1221e41f4b71Sopenharmony_ci  } else {
1222e41f4b71Sopenharmony_ci    console.info('Succeeded in resetting');
1223e41f4b71Sopenharmony_ci  }
1224e41f4b71Sopenharmony_ci})
1225e41f4b71Sopenharmony_ci```
1226e41f4b71Sopenharmony_ci
1227e41f4b71Sopenharmony_ci### reset<sup>9+</sup>
1228e41f4b71Sopenharmony_ci
1229e41f4b71Sopenharmony_cireset(): Promise\<void>
1230e41f4b71Sopenharmony_ci
1231e41f4b71Sopenharmony_ci重置播放,只能在initialized/prepared/playing/paused/completed/stopped/error状态调用。通过Promise获取返回值。
1232e41f4b71Sopenharmony_ci
1233e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1234e41f4b71Sopenharmony_ci
1235e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1236e41f4b71Sopenharmony_ci
1237e41f4b71Sopenharmony_ci**返回值:**
1238e41f4b71Sopenharmony_ci
1239e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1240e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1241e41f4b71Sopenharmony_ci| Promise\<void> | 重置播放的Promise返回值。 |
1242e41f4b71Sopenharmony_ci
1243e41f4b71Sopenharmony_ci**错误码:**
1244e41f4b71Sopenharmony_ci
1245e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1246e41f4b71Sopenharmony_ci
1247e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1248e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1249e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1250e41f4b71Sopenharmony_ci
1251e41f4b71Sopenharmony_ci**示例:**
1252e41f4b71Sopenharmony_ci
1253e41f4b71Sopenharmony_ci```ts
1254e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1255e41f4b71Sopenharmony_ci
1256e41f4b71Sopenharmony_ciavPlayer.reset().then(() => {
1257e41f4b71Sopenharmony_ci  console.info('Succeeded in resetting');
1258e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
1259e41f4b71Sopenharmony_ci  console.error('Failed to reset,error message is :' + err.message)
1260e41f4b71Sopenharmony_ci})
1261e41f4b71Sopenharmony_ci```
1262e41f4b71Sopenharmony_ci
1263e41f4b71Sopenharmony_ci### release<sup>9+</sup>
1264e41f4b71Sopenharmony_ci
1265e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void
1266e41f4b71Sopenharmony_ci
1267e41f4b71Sopenharmony_ci销毁播放资源,除released状态外,均可以调用。使用callback方式异步获取返回值。
1268e41f4b71Sopenharmony_ci
1269e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1270e41f4b71Sopenharmony_ci
1271e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1272e41f4b71Sopenharmony_ci
1273e41f4b71Sopenharmony_ci**参数:**
1274e41f4b71Sopenharmony_ci
1275e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1276e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1277e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 销毁播放的回调方法。 |
1278e41f4b71Sopenharmony_ci
1279e41f4b71Sopenharmony_ci**错误码:**
1280e41f4b71Sopenharmony_ci
1281e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1282e41f4b71Sopenharmony_ci
1283e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
1284e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
1285e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
1286e41f4b71Sopenharmony_ci
1287e41f4b71Sopenharmony_ci**示例:**
1288e41f4b71Sopenharmony_ci
1289e41f4b71Sopenharmony_ci```ts
1290e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1291e41f4b71Sopenharmony_ci
1292e41f4b71Sopenharmony_ciavPlayer.release((err: BusinessError) => {
1293e41f4b71Sopenharmony_ci  if (err) {
1294e41f4b71Sopenharmony_ci    console.error('Failed to release,error message is :' + err.message)
1295e41f4b71Sopenharmony_ci  } else {
1296e41f4b71Sopenharmony_ci    console.info('Succeeded in releasing');
1297e41f4b71Sopenharmony_ci  }
1298e41f4b71Sopenharmony_ci})
1299e41f4b71Sopenharmony_ci```
1300e41f4b71Sopenharmony_ci
1301e41f4b71Sopenharmony_ci### release<sup>9+</sup>
1302e41f4b71Sopenharmony_ci
1303e41f4b71Sopenharmony_cirelease(): Promise\<void>
1304e41f4b71Sopenharmony_ci
1305e41f4b71Sopenharmony_ci销毁播放资源,除released状态,都可以调用。通过Promise获取返回值。
1306e41f4b71Sopenharmony_ci
1307e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1308e41f4b71Sopenharmony_ci
1309e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1310e41f4b71Sopenharmony_ci
1311e41f4b71Sopenharmony_ci**返回值:**
1312e41f4b71Sopenharmony_ci
1313e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1314e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1315e41f4b71Sopenharmony_ci| Promise\<void> | 销毁播放的Promise返回值。 |
1316e41f4b71Sopenharmony_ci
1317e41f4b71Sopenharmony_ci**错误码:**
1318e41f4b71Sopenharmony_ci
1319e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1320e41f4b71Sopenharmony_ci
1321e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1322e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1323e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1324e41f4b71Sopenharmony_ci
1325e41f4b71Sopenharmony_ci**示例:**
1326e41f4b71Sopenharmony_ci
1327e41f4b71Sopenharmony_ci```ts
1328e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1329e41f4b71Sopenharmony_ci
1330e41f4b71Sopenharmony_ciavPlayer.release().then(() => {
1331e41f4b71Sopenharmony_ci  console.info('Succeeded in releasing');
1332e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
1333e41f4b71Sopenharmony_ci  console.error('Failed to release,error message is :' + err.message)
1334e41f4b71Sopenharmony_ci})
1335e41f4b71Sopenharmony_ci```
1336e41f4b71Sopenharmony_ci
1337e41f4b71Sopenharmony_ci### getTrackDescription<sup>9+</sup>
1338e41f4b71Sopenharmony_ci
1339e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
1340e41f4b71Sopenharmony_ci
1341e41f4b71Sopenharmony_ci获取音视频轨道信息,可以在prepared/playing/paused状态调用。获取所有音视轨道信息,应在数据加载回调后调用。使用callback方式异步获取返回值。
1342e41f4b71Sopenharmony_ci
1343e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1344e41f4b71Sopenharmony_ci
1345e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1346e41f4b71Sopenharmony_ci
1347e41f4b71Sopenharmony_ci**参数:**
1348e41f4b71Sopenharmony_ci
1349e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                         |
1350e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1351e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<[MediaDescription](#mediadescription8)>> | 是   | 回调函数,当获取音频轨道信息成功,err为undefined,data为获取到的MediaDescription数组;否则为错误对象。|
1352e41f4b71Sopenharmony_ci
1353e41f4b71Sopenharmony_ci**错误码:**
1354e41f4b71Sopenharmony_ci
1355e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1356e41f4b71Sopenharmony_ci
1357e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
1358e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
1359e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
1360e41f4b71Sopenharmony_ci
1361e41f4b71Sopenharmony_ci**示例:**
1362e41f4b71Sopenharmony_ci
1363e41f4b71Sopenharmony_ci```ts
1364e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1365e41f4b71Sopenharmony_ci
1366e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1367e41f4b71Sopenharmony_ci  if ((arrList) != null) {
1368e41f4b71Sopenharmony_ci    console.info('Succeeded in doing getTrackDescription');
1369e41f4b71Sopenharmony_ci  } else {
1370e41f4b71Sopenharmony_ci    console.error(`Failed to do getTrackDescription, error:${error}`);
1371e41f4b71Sopenharmony_ci  }
1372e41f4b71Sopenharmony_ci});
1373e41f4b71Sopenharmony_ci```
1374e41f4b71Sopenharmony_ci
1375e41f4b71Sopenharmony_ci### getTrackDescription<sup>9+</sup>
1376e41f4b71Sopenharmony_ci
1377e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>>
1378e41f4b71Sopenharmony_ci
1379e41f4b71Sopenharmony_ci获取音视频轨道信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1380e41f4b71Sopenharmony_ci
1381e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1382e41f4b71Sopenharmony_ci
1383e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1384e41f4b71Sopenharmony_ci
1385e41f4b71Sopenharmony_ci**返回值:**
1386e41f4b71Sopenharmony_ci
1387e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                              |
1388e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- |
1389e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回音视频轨道信息MediaDescription数组。 |
1390e41f4b71Sopenharmony_ci
1391e41f4b71Sopenharmony_ci**错误码:**
1392e41f4b71Sopenharmony_ci
1393e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1394e41f4b71Sopenharmony_ci
1395e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1396e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1397e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1398e41f4b71Sopenharmony_ci
1399e41f4b71Sopenharmony_ci**示例:**
1400e41f4b71Sopenharmony_ci
1401e41f4b71Sopenharmony_ci```ts
1402e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1403e41f4b71Sopenharmony_ci
1404e41f4b71Sopenharmony_ciavPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
1405e41f4b71Sopenharmony_ci  console.info('Succeeded in getting TrackDescription');
1406e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
1407e41f4b71Sopenharmony_ci  console.error(`Failed to get TrackDescription, error:${error}`);
1408e41f4b71Sopenharmony_ci});
1409e41f4b71Sopenharmony_ci```
1410e41f4b71Sopenharmony_ci
1411e41f4b71Sopenharmony_ci### getSelectedTracks<sup>12+</sup>
1412e41f4b71Sopenharmony_ci
1413e41f4b71Sopenharmony_cigetSelectedTracks(): Promise\<Array\<number>>
1414e41f4b71Sopenharmony_ci
1415e41f4b71Sopenharmony_ci获取已选择的音视频轨道索引,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1416e41f4b71Sopenharmony_ci
1417e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1418e41f4b71Sopenharmony_ci
1419e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1420e41f4b71Sopenharmony_ci
1421e41f4b71Sopenharmony_ci**返回值:**
1422e41f4b71Sopenharmony_ci
1423e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                              |
1424e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- |
1425e41f4b71Sopenharmony_ci| Promise<Array<[number]>> | Promise对象,返回已选择音视频轨道索引数组。 |
1426e41f4b71Sopenharmony_ci
1427e41f4b71Sopenharmony_ci**错误码:**
1428e41f4b71Sopenharmony_ci
1429e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1430e41f4b71Sopenharmony_ci
1431e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1432e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1433e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
1434e41f4b71Sopenharmony_ci
1435e41f4b71Sopenharmony_ci**示例:**
1436e41f4b71Sopenharmony_ci
1437e41f4b71Sopenharmony_ci```ts
1438e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1439e41f4b71Sopenharmony_ci
1440e41f4b71Sopenharmony_ciavPlayer.getSelectedTracks().then((arrList: Array<number>) => {
1441e41f4b71Sopenharmony_ci  console.info('Succeeded in getting SelectedTracks');
1442e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
1443e41f4b71Sopenharmony_ci  console.error(`Failed to get SelectedTracks, error:${error}`);
1444e41f4b71Sopenharmony_ci});
1445e41f4b71Sopenharmony_ci```
1446e41f4b71Sopenharmony_ci
1447e41f4b71Sopenharmony_ci### getPlaybackInfo<sup>12+</sup>
1448e41f4b71Sopenharmony_ci
1449e41f4b71Sopenharmony_cigetPlaybackInfo(): Promise\<PlaybackInfo>
1450e41f4b71Sopenharmony_ci
1451e41f4b71Sopenharmony_ci获取播放过程信息,可以在prepared/playing/paused状态调用。通过Promise获取返回值。
1452e41f4b71Sopenharmony_ci
1453e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1454e41f4b71Sopenharmony_ci
1455e41f4b71Sopenharmony_ci**返回值:**
1456e41f4b71Sopenharmony_ci
1457e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                              |
1458e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- |
1459e41f4b71Sopenharmony_ci| Promise<[PlaybackInfo](#playbackinfo12)> | Promise对象,返回播放器信息PlaybackInfo。 |
1460e41f4b71Sopenharmony_ci
1461e41f4b71Sopenharmony_ci**示例:**
1462e41f4b71Sopenharmony_ci
1463e41f4b71Sopenharmony_ci```ts
1464e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1465e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
1466e41f4b71Sopenharmony_ci
1467e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined;
1468e41f4b71Sopenharmony_cilet playbackInfo: media.PlaybackInfo | undefined = undefined;
1469e41f4b71Sopenharmony_cimedia.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => {
1470e41f4b71Sopenharmony_ci  if (player != null) {
1471e41f4b71Sopenharmony_ci    avPlayer = player;
1472e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVPlayer`);
1473e41f4b71Sopenharmony_ci    if (avPlayer) {
1474e41f4b71Sopenharmony_ci      try {
1475e41f4b71Sopenharmony_ci        playbackInfo = await avPlayer.getPlaybackInfo();
1476e41f4b71Sopenharmony_ci        console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值
1477e41f4b71Sopenharmony_ci      } catch (error) {
1478e41f4b71Sopenharmony_ci        console.error(`error = ${error}`);
1479e41f4b71Sopenharmony_ci      }
1480e41f4b71Sopenharmony_ci    }
1481e41f4b71Sopenharmony_ci  } else {
1482e41f4b71Sopenharmony_ci    console.error(`Failed to create AVPlayer, error message:${err.message}`);
1483e41f4b71Sopenharmony_ci  }
1484e41f4b71Sopenharmony_ci});
1485e41f4b71Sopenharmony_ci```
1486e41f4b71Sopenharmony_ci
1487e41f4b71Sopenharmony_ci### selectTrack<sup>12+</sup>
1488e41f4b71Sopenharmony_ci
1489e41f4b71Sopenharmony_ciselectTrack(index: number, mode?: SwitchMode): Promise\<void>
1490e41f4b71Sopenharmony_ci
1491e41f4b71Sopenharmony_ci使用AVPlayer播放多音轨视频时选择指定音轨播放,通过Promise获取返回值。
1492e41f4b71Sopenharmony_ci
1493e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1494e41f4b71Sopenharmony_ci
1495e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1496e41f4b71Sopenharmony_ci
1497e41f4b71Sopenharmony_ci**参数:**
1498e41f4b71Sopenharmony_ci
1499e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1500e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1501e41f4b71Sopenharmony_ci| index | number | 是   | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 |
1502e41f4b71Sopenharmony_ci| mode   | [SwitchMode](#switchmode12) | 否   | 切换视频轨模式,默认为SMOOTH模式,仅支持DASH协议,**仅在视频资源播放时设置**。 |
1503e41f4b71Sopenharmony_ci
1504e41f4b71Sopenharmony_ci**返回值:**
1505e41f4b71Sopenharmony_ci
1506e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1507e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1508e41f4b71Sopenharmony_ci| Promise\<void> | 选择曲目完成的Promise返回值。 |
1509e41f4b71Sopenharmony_ci
1510e41f4b71Sopenharmony_ci**错误码:**
1511e41f4b71Sopenharmony_ci
1512e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1513e41f4b71Sopenharmony_ci
1514e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1515e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1516e41f4b71Sopenharmony_ci| 401      | The parameter check failed. Return by promise.       |
1517e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1518e41f4b71Sopenharmony_ci
1519e41f4b71Sopenharmony_ci**示例:**
1520e41f4b71Sopenharmony_ci
1521e41f4b71Sopenharmony_ci```ts
1522e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1523e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
1524e41f4b71Sopenharmony_ci
1525e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer();
1526e41f4b71Sopenharmony_cilet audioTrackIndex: Object = 0;
1527e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1528e41f4b71Sopenharmony_ci  if (arrList != null) {
1529e41f4b71Sopenharmony_ci    for (let i = 0; i < arrList.length; i++) {
1530e41f4b71Sopenharmony_ci      if (i != 0) {
1531e41f4b71Sopenharmony_ci        // 获取音频轨道列表
1532e41f4b71Sopenharmony_ci        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1533e41f4b71Sopenharmony_ci      }
1534e41f4b71Sopenharmony_ci    }
1535e41f4b71Sopenharmony_ci  } else {
1536e41f4b71Sopenharmony_ci    console.error(`Failed to get TrackDescription, error:${error}`);
1537e41f4b71Sopenharmony_ci  }
1538e41f4b71Sopenharmony_ci});
1539e41f4b71Sopenharmony_ci
1540e41f4b71Sopenharmony_ci// 选择其中一个音频轨道
1541e41f4b71Sopenharmony_ciavPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1542e41f4b71Sopenharmony_ci```
1543e41f4b71Sopenharmony_ci
1544e41f4b71Sopenharmony_ci### deselectTrack<sup>12+</sup>
1545e41f4b71Sopenharmony_ci
1546e41f4b71Sopenharmony_cideselectTrack(index: number): Promise\<void>
1547e41f4b71Sopenharmony_ci
1548e41f4b71Sopenharmony_ci使用AVPlayer播放多音轨视频时取消指定音轨播放,通过Promise获取返回值。
1549e41f4b71Sopenharmony_ci
1550e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1551e41f4b71Sopenharmony_ci
1552e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1553e41f4b71Sopenharmony_ci
1554e41f4b71Sopenharmony_ci**参数:**
1555e41f4b71Sopenharmony_ci
1556e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
1557e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
1558e41f4b71Sopenharmony_ci| index | number | 是   | 多音轨轨道索引,来自[MediaDescription](#mediadescription8)。 |
1559e41f4b71Sopenharmony_ci
1560e41f4b71Sopenharmony_ci**返回值:**
1561e41f4b71Sopenharmony_ci
1562e41f4b71Sopenharmony_ci| 类型           | 说明                      |
1563e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
1564e41f4b71Sopenharmony_ci| Promise\<void> | 取消选择曲目完成的Promise返回值。 |
1565e41f4b71Sopenharmony_ci
1566e41f4b71Sopenharmony_ci**错误码:**
1567e41f4b71Sopenharmony_ci
1568e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
1569e41f4b71Sopenharmony_ci
1570e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1571e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1572e41f4b71Sopenharmony_ci| 401      | The parameter check failed. Return by promise.       |
1573e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
1574e41f4b71Sopenharmony_ci
1575e41f4b71Sopenharmony_ci**示例:**
1576e41f4b71Sopenharmony_ci
1577e41f4b71Sopenharmony_ci```ts
1578e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
1579e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
1580e41f4b71Sopenharmony_ci
1581e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer();
1582e41f4b71Sopenharmony_cilet audioTrackIndex: Object = 0;
1583e41f4b71Sopenharmony_ciavPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
1584e41f4b71Sopenharmony_ci  if (arrList != null) {
1585e41f4b71Sopenharmony_ci    for (let i = 0; i < arrList.length; i++) {
1586e41f4b71Sopenharmony_ci      if (i != 0) {
1587e41f4b71Sopenharmony_ci        // 获取音频轨道列表
1588e41f4b71Sopenharmony_ci        audioTrackIndex = arrList[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
1589e41f4b71Sopenharmony_ci      }
1590e41f4b71Sopenharmony_ci    }
1591e41f4b71Sopenharmony_ci  } else {
1592e41f4b71Sopenharmony_ci    console.error(`Failed to get TrackDescription, error:${error}`);
1593e41f4b71Sopenharmony_ci  }
1594e41f4b71Sopenharmony_ci});
1595e41f4b71Sopenharmony_ci
1596e41f4b71Sopenharmony_ci// 选择其中一个音频轨道
1597e41f4b71Sopenharmony_ciavPlayer.selectTrack(parseInt(audioTrackIndex.toString()));
1598e41f4b71Sopenharmony_ci// 取消选择上次选中的音频轨道,并恢复到默认音频轨道。
1599e41f4b71Sopenharmony_ciavPlayer.deselectTrack(parseInt(audioTrackIndex.toString()));
1600e41f4b71Sopenharmony_ci```
1601e41f4b71Sopenharmony_ci
1602e41f4b71Sopenharmony_ci### setDecryptionConfig<sup>11+</sup>
1603e41f4b71Sopenharmony_ci
1604e41f4b71Sopenharmony_cisetDecryptionConfig(mediaKeySession: drm.MediaKeySession, secureVideoPath: boolean): void
1605e41f4b71Sopenharmony_ci
1606e41f4b71Sopenharmony_ci设置解密配置。当收到[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)时,需根据事件上报的信息创建相关配置并设置解密配置,否则无法播放。
1607e41f4b71Sopenharmony_ci
1608e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1609e41f4b71Sopenharmony_ci
1610e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1611e41f4b71Sopenharmony_ci
1612e41f4b71Sopenharmony_ci**参数:**
1613e41f4b71Sopenharmony_ci
1614e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                         |
1615e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------- |
1616e41f4b71Sopenharmony_ci| mediaKeySession | [drm.MediaKeySession](../apis-drm-kit/js-apis-drm.md#mediakeysession) | 是   | 解密会话 |
1617e41f4b71Sopenharmony_ci| secureVideoPath | boolean | 是 | 安全视频通路,true表示选择安全视频通路,false表示选择非安全视频通路 |
1618e41f4b71Sopenharmony_ci
1619e41f4b71Sopenharmony_ci**错误码:**
1620e41f4b71Sopenharmony_ci
1621e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
1622e41f4b71Sopenharmony_ci
1623e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
1624e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
1625e41f4b71Sopenharmony_ci| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
1626e41f4b71Sopenharmony_ci
1627e41f4b71Sopenharmony_ci**示例:**
1628e41f4b71Sopenharmony_ci
1629e41f4b71Sopenharmony_ci关于drm模块的示例具体可见[js-apis-drm.md](../apis-drm-kit/js-apis-drm.md)。
1630e41f4b71Sopenharmony_ci```ts
1631e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1632e41f4b71Sopenharmony_ci
1633e41f4b71Sopenharmony_ci// 创建MediaKeySystem系统
1634e41f4b71Sopenharmony_cilet keySystem:drm.MediaKeySystem = drm.createMediaKeySystem('com.clearplay.drm');
1635e41f4b71Sopenharmony_ci// 创建MediaKeySession解密会话
1636e41f4b71Sopenharmony_cilet keySession:drm.MediaKeySession = keySystem.createMediaKeySession(drm.ContentProtectionLevel.CONTENT_PROTECTION_LEVEL_SW_CRYPTO);
1637e41f4b71Sopenharmony_ci// 生成许可证请求、设置许可证响应等
1638e41f4b71Sopenharmony_ci// 安全视频通路标志
1639e41f4b71Sopenharmony_cilet secureVideoPath:boolean = false;
1640e41f4b71Sopenharmony_ci// 设置解密配置
1641e41f4b71Sopenharmony_ciavPlayer.setDecryptionConfig(keySession, secureVideoPath);
1642e41f4b71Sopenharmony_ci```
1643e41f4b71Sopenharmony_ci
1644e41f4b71Sopenharmony_ci### getMediaKeySystemInfos<sup>11+</sup>
1645e41f4b71Sopenharmony_ci
1646e41f4b71Sopenharmony_cigetMediaKeySystemInfos(): Array\<drm.MediaKeySystemInfo>
1647e41f4b71Sopenharmony_ci
1648e41f4b71Sopenharmony_ci获取当前播放的媒体资源的MediaKeySystemInfo。需要在[mediaKeySystemInfoUpdate事件](#onmediakeysysteminfoupdate11)触发成功后才能调用。
1649e41f4b71Sopenharmony_ci
1650e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1651e41f4b71Sopenharmony_ci
1652e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1653e41f4b71Sopenharmony_ci
1654e41f4b71Sopenharmony_ci**返回值:**
1655e41f4b71Sopenharmony_ci
1656e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                              |
1657e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ------------------------------------------------- |
1658e41f4b71Sopenharmony_ci|  Array<[drm.MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)> | MediaKeySystemInfo数组,MediaKeySystemInfo具有uuid和pssh两个属性。 |
1659e41f4b71Sopenharmony_ci
1660e41f4b71Sopenharmony_ci**示例:**
1661e41f4b71Sopenharmony_ci
1662e41f4b71Sopenharmony_ci```ts
1663e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1664e41f4b71Sopenharmony_ci
1665e41f4b71Sopenharmony_ciconst infos = avPlayer.getMediaKeySystemInfos();
1666e41f4b71Sopenharmony_ciconsole.info('GetMediaKeySystemInfos count: ' + infos.length);
1667e41f4b71Sopenharmony_cifor (let i = 0; i < infos.length; i++) {
1668e41f4b71Sopenharmony_ci  console.info('GetMediaKeySystemInfos uuid: ' + infos[i]["uuid"]);
1669e41f4b71Sopenharmony_ci  console.info('GetMediaKeySystemInfos pssh: ' + infos[i]["pssh"]);
1670e41f4b71Sopenharmony_ci}
1671e41f4b71Sopenharmony_ci```
1672e41f4b71Sopenharmony_ci
1673e41f4b71Sopenharmony_ci### seek<sup>9+</sup>
1674e41f4b71Sopenharmony_ci
1675e41f4b71Sopenharmony_ciseek(timeMs: number, mode?:SeekMode): void
1676e41f4b71Sopenharmony_ci
1677e41f4b71Sopenharmony_ci跳转到指定播放位置,只能在prepared/playing/paused/completed状态调用,可以通过[seekDone事件](#onseekdone9)确认是否生效。
1678e41f4b71Sopenharmony_ci注:直播场景不支持seek。
1679e41f4b71Sopenharmony_ci
1680e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1681e41f4b71Sopenharmony_ci
1682e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1683e41f4b71Sopenharmony_ci
1684e41f4b71Sopenharmony_ci**参数:**
1685e41f4b71Sopenharmony_ci
1686e41f4b71Sopenharmony_ci| 参数名 | 类型                   | 必填 | 说明                                                         |
1687e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
1688e41f4b71Sopenharmony_ci| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, [duration](#属性)]。 |
1689e41f4b71Sopenharmony_ci| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式,**仅在视频资源播放时设置**。 |
1690e41f4b71Sopenharmony_ci
1691e41f4b71Sopenharmony_ci**示例:**
1692e41f4b71Sopenharmony_ci
1693e41f4b71Sopenharmony_ci```ts
1694e41f4b71Sopenharmony_cilet seekTime: number = 1000
1695e41f4b71Sopenharmony_ciavPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)
1696e41f4b71Sopenharmony_ci```
1697e41f4b71Sopenharmony_ci
1698e41f4b71Sopenharmony_ci### on('seekDone')<sup>9+</sup>
1699e41f4b71Sopenharmony_ci
1700e41f4b71Sopenharmony_cion(type: 'seekDone', callback: Callback\<number>): void
1701e41f4b71Sopenharmony_ci
1702e41f4b71Sopenharmony_ci监听seek生效的事件。
1703e41f4b71Sopenharmony_ci
1704e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1705e41f4b71Sopenharmony_ci
1706e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1707e41f4b71Sopenharmony_ci
1708e41f4b71Sopenharmony_ci**参数:**
1709e41f4b71Sopenharmony_ci
1710e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1711e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1712e41f4b71Sopenharmony_ci| type     | string   | 是   | seek生效的事件回调类型,支持的事件:'seekDone',每次调用seek后都会回调此事件。 |
1713e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。 |
1714e41f4b71Sopenharmony_ci
1715e41f4b71Sopenharmony_ci**示例:**
1716e41f4b71Sopenharmony_ci
1717e41f4b71Sopenharmony_ci```ts
1718e41f4b71Sopenharmony_ciavPlayer.on('seekDone', (seekDoneTime:number) => {
1719e41f4b71Sopenharmony_ci  console.info('seekDone called,and seek time is:' + seekDoneTime)
1720e41f4b71Sopenharmony_ci})
1721e41f4b71Sopenharmony_ci```
1722e41f4b71Sopenharmony_ci
1723e41f4b71Sopenharmony_ci### off('seekDone')<sup>9+</sup>
1724e41f4b71Sopenharmony_ci
1725e41f4b71Sopenharmony_cioff(type: 'seekDone', callback?: Callback\<number>): void
1726e41f4b71Sopenharmony_ci
1727e41f4b71Sopenharmony_ci取消监听seek生效的事件。
1728e41f4b71Sopenharmony_ci
1729e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1730e41f4b71Sopenharmony_ci
1731e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1732e41f4b71Sopenharmony_ci
1733e41f4b71Sopenharmony_ci**参数:**
1734e41f4b71Sopenharmony_ci
1735e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                 |
1736e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------------------------------- |
1737e41f4b71Sopenharmony_ci| type   | string | 是   | seek生效的事件回调类型,取消注册的事件:'seekDone'。 |
1738e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | 回调函数。seek生效的事件回调方法,只会上报用户请求的time位置。<br/>**视频播放:**[SeekMode](#seekmode8)会造成实际跳转位置与用户设置产生偏差,精准位置需要通过currentTime获取,事件回调的time仅代表完成用户某一次请求。<br/>从API version 12开始支持此参数。 |
1739e41f4b71Sopenharmony_ci
1740e41f4b71Sopenharmony_ci**示例:**
1741e41f4b71Sopenharmony_ci
1742e41f4b71Sopenharmony_ci```ts
1743e41f4b71Sopenharmony_ciavPlayer.off('seekDone')
1744e41f4b71Sopenharmony_ci```
1745e41f4b71Sopenharmony_ci
1746e41f4b71Sopenharmony_ci### setSpeed<sup>9+</sup>
1747e41f4b71Sopenharmony_ci
1748e41f4b71Sopenharmony_cisetSpeed(speed: PlaybackSpeed): void
1749e41f4b71Sopenharmony_ci
1750e41f4b71Sopenharmony_ci设置倍速模式,只能在prepared/playing/paused/completed状态调用,可以通过[speedDone事件](#onspeeddone9)确认是否生效。
1751e41f4b71Sopenharmony_ci注:直播场景不支持setSpeed。
1752e41f4b71Sopenharmony_ci
1753e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1754e41f4b71Sopenharmony_ci
1755e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1756e41f4b71Sopenharmony_ci
1757e41f4b71Sopenharmony_ci**参数:**
1758e41f4b71Sopenharmony_ci
1759e41f4b71Sopenharmony_ci| 参数名 | 类型                             | 必填 | 说明               |
1760e41f4b71Sopenharmony_ci| ------ | -------------------------------- | ---- | ------------------ |
1761e41f4b71Sopenharmony_ci| speed  | [PlaybackSpeed](#playbackspeed8) | 是   | 指定播放倍速模式。 |
1762e41f4b71Sopenharmony_ci
1763e41f4b71Sopenharmony_ci**示例:**
1764e41f4b71Sopenharmony_ci
1765e41f4b71Sopenharmony_ci```ts
1766e41f4b71Sopenharmony_ciavPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)
1767e41f4b71Sopenharmony_ci```
1768e41f4b71Sopenharmony_ci
1769e41f4b71Sopenharmony_ci### on('speedDone')<sup>9+</sup>
1770e41f4b71Sopenharmony_ci
1771e41f4b71Sopenharmony_cion(type: 'speedDone', callback: Callback\<number>): void
1772e41f4b71Sopenharmony_ci
1773e41f4b71Sopenharmony_ci监听setSpeed生效的事件
1774e41f4b71Sopenharmony_ci
1775e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1776e41f4b71Sopenharmony_ci
1777e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1778e41f4b71Sopenharmony_ci
1779e41f4b71Sopenharmony_ci**参数:**
1780e41f4b71Sopenharmony_ci
1781e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1782e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1783e41f4b71Sopenharmony_ci| type     | string   | 是   | setSpeed生效的事件回调类型,支持的事件:'speedDone',每次调用setSpeed后都会回调此事件。 |
1784e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。 |
1785e41f4b71Sopenharmony_ci
1786e41f4b71Sopenharmony_ci**示例:**
1787e41f4b71Sopenharmony_ci
1788e41f4b71Sopenharmony_ci```ts
1789e41f4b71Sopenharmony_ciavPlayer.on('speedDone', (speed:number) => {
1790e41f4b71Sopenharmony_ci  console.info('speedDone called,and speed value is:' + speed)
1791e41f4b71Sopenharmony_ci})
1792e41f4b71Sopenharmony_ci```
1793e41f4b71Sopenharmony_ci
1794e41f4b71Sopenharmony_ci### off('speedDone')<sup>9+</sup>
1795e41f4b71Sopenharmony_ci
1796e41f4b71Sopenharmony_cioff(type: 'speedDone', callback?: Callback\<number>): void
1797e41f4b71Sopenharmony_ci
1798e41f4b71Sopenharmony_ci取消监听setSpeed生效的事件。
1799e41f4b71Sopenharmony_ci
1800e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1801e41f4b71Sopenharmony_ci
1802e41f4b71Sopenharmony_ci**参数:**
1803e41f4b71Sopenharmony_ci
1804e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                      |
1805e41f4b71Sopenharmony_ci| ------ | ------ | ---- | --------------------------------------------------------- |
1806e41f4b71Sopenharmony_ci| type   | string | 是   | setSpeed生效的事件回调类型,取消注册的事件:'speedDone'。 |
1807e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | 回调函数。当setSpeed成功,上报生效的倍速模式,具体见[PlaybackSpeed](#playbackspeed8)。<br/>从API version 12开始支持此参数。 |
1808e41f4b71Sopenharmony_ci
1809e41f4b71Sopenharmony_ci**示例:**
1810e41f4b71Sopenharmony_ci
1811e41f4b71Sopenharmony_ci```ts
1812e41f4b71Sopenharmony_ciavPlayer.off('speedDone')
1813e41f4b71Sopenharmony_ci```
1814e41f4b71Sopenharmony_ci
1815e41f4b71Sopenharmony_ci### setBitrate<sup>9+</sup>
1816e41f4b71Sopenharmony_ci
1817e41f4b71Sopenharmony_cisetBitrate(bitrate: number): void
1818e41f4b71Sopenharmony_ci
1819e41f4b71Sopenharmony_ci选择要播放的指定比特率,仅对**HLS协议网络流**有效,默认情况下,播放器会根据网络连接速度选择合适的比特率,只能在prepared/playing/paused/completed状态调用,可以通过[bitrateDone](#onbitratedone9)事件确认是否生效。
1820e41f4b71Sopenharmony_ci
1821e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1822e41f4b71Sopenharmony_ci
1823e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1824e41f4b71Sopenharmony_ci
1825e41f4b71Sopenharmony_ci**参数:**
1826e41f4b71Sopenharmony_ci
1827e41f4b71Sopenharmony_ci| 参数名  | 类型   | 必填 | 说明                                                         |
1828e41f4b71Sopenharmony_ci| ------- | ------ | ---- | ------------------------------------------------------------ |
1829e41f4b71Sopenharmony_ci| bitrate | number | 是   | 指定比特率,可以通过[availableBitrates](#onavailablebitrates9)事件获得当前HLS协议流可用的比特率,如果用户指定的比特率不在此列表中,则播放器将从可用比特率列表中选择最小和最接近的比特率。如果通过availableBitrates事件获得的比特率列表长度为0,则不支持指定比特率,也不会产生bitrateDone回调。 |
1830e41f4b71Sopenharmony_ci
1831e41f4b71Sopenharmony_ci**示例:**
1832e41f4b71Sopenharmony_ci
1833e41f4b71Sopenharmony_ci```ts
1834e41f4b71Sopenharmony_cilet bitrate: number = 96000
1835e41f4b71Sopenharmony_ciavPlayer.setBitrate(bitrate)
1836e41f4b71Sopenharmony_ci```
1837e41f4b71Sopenharmony_ci
1838e41f4b71Sopenharmony_ci### on('bitrateDone')<sup>9+</sup>
1839e41f4b71Sopenharmony_ci
1840e41f4b71Sopenharmony_cion(type: 'bitrateDone', callback: Callback\<number>): void
1841e41f4b71Sopenharmony_ci
1842e41f4b71Sopenharmony_ci监听setBitrate生效的事件。
1843e41f4b71Sopenharmony_ci
1844e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1845e41f4b71Sopenharmony_ci
1846e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1847e41f4b71Sopenharmony_ci
1848e41f4b71Sopenharmony_ci**参数:**
1849e41f4b71Sopenharmony_ci
1850e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1851e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1852e41f4b71Sopenharmony_ci| type     | string   | 是   | setBitrate生效的事件回调类型,支持的事件:'bitrateDone',每次调用setBitrate后都会回调此事件。 |
1853e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | setBitrate生效的事件回调方法,上报生效的比特率。             |
1854e41f4b71Sopenharmony_ci
1855e41f4b71Sopenharmony_ci**示例:**
1856e41f4b71Sopenharmony_ci
1857e41f4b71Sopenharmony_ci```ts
1858e41f4b71Sopenharmony_ciavPlayer.on('bitrateDone', (bitrate:number) => {
1859e41f4b71Sopenharmony_ci  console.info('bitrateDone called,and bitrate value is:' + bitrate)
1860e41f4b71Sopenharmony_ci})
1861e41f4b71Sopenharmony_ci```
1862e41f4b71Sopenharmony_ci
1863e41f4b71Sopenharmony_ci### off('bitrateDone')<sup>9+</sup>
1864e41f4b71Sopenharmony_ci
1865e41f4b71Sopenharmony_cioff(type: 'bitrateDone', callback?: Callback\<number>): void
1866e41f4b71Sopenharmony_ci
1867e41f4b71Sopenharmony_ci取消监听setBitrate生效的事件。
1868e41f4b71Sopenharmony_ci
1869e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1870e41f4b71Sopenharmony_ci
1871e41f4b71Sopenharmony_ci**参数:**
1872e41f4b71Sopenharmony_ci
1873e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
1874e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
1875e41f4b71Sopenharmony_ci| type   | string | 是   | setBitrate生效的事件回调类型,取消注册的事件:'bitrateDone'。 |
1876e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | setBitrate生效的事件回调方法,上报生效的比特率。<br/>从API version 12开始支持此参数。             |
1877e41f4b71Sopenharmony_ci
1878e41f4b71Sopenharmony_ci**示例:**
1879e41f4b71Sopenharmony_ci
1880e41f4b71Sopenharmony_ci```ts
1881e41f4b71Sopenharmony_ciavPlayer.off('bitrateDone')
1882e41f4b71Sopenharmony_ci```
1883e41f4b71Sopenharmony_ci
1884e41f4b71Sopenharmony_ci### on('availableBitrates')<sup>9+</sup>
1885e41f4b71Sopenharmony_ci
1886e41f4b71Sopenharmony_cion(type: 'availableBitrates', callback: Callback\<Array\<number>>): void
1887e41f4b71Sopenharmony_ci
1888e41f4b71Sopenharmony_ci监听HLS协议流可用的比特率列表,只会在切换prepared状态后上报。
1889e41f4b71Sopenharmony_ci
1890e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1891e41f4b71Sopenharmony_ci
1892e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1893e41f4b71Sopenharmony_ci
1894e41f4b71Sopenharmony_ci**参数:**
1895e41f4b71Sopenharmony_ci
1896e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1897e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1898e41f4b71Sopenharmony_ci| type     | string   | 是   | HLS协议可用比特率上报事件回调类型,支持的事件:'availableBitrates',只会在prepared之后上报一次。 |
1899e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 是   | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。 |
1900e41f4b71Sopenharmony_ci
1901e41f4b71Sopenharmony_ci**示例:**
1902e41f4b71Sopenharmony_ci
1903e41f4b71Sopenharmony_ci```ts
1904e41f4b71Sopenharmony_ciavPlayer.on('availableBitrates', (bitrates: Array<number>) => {
1905e41f4b71Sopenharmony_ci  console.info('availableBitrates called,and availableBitrates length is:' + bitrates.length)
1906e41f4b71Sopenharmony_ci})
1907e41f4b71Sopenharmony_ci```
1908e41f4b71Sopenharmony_ci
1909e41f4b71Sopenharmony_ci### off('availableBitrates')<sup>9+</sup>
1910e41f4b71Sopenharmony_ci
1911e41f4b71Sopenharmony_cioff(type: 'availableBitrates', callback?: Callback\<Array\<number>>): void
1912e41f4b71Sopenharmony_ci
1913e41f4b71Sopenharmony_ci取消监听HLS协议流可用的比特率列表,调用[prepare](#prepare9)后,上报此事件。
1914e41f4b71Sopenharmony_ci
1915e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1916e41f4b71Sopenharmony_ci
1917e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1918e41f4b71Sopenharmony_ci
1919e41f4b71Sopenharmony_ci**参数:**
1920e41f4b71Sopenharmony_ci
1921e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
1922e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
1923e41f4b71Sopenharmony_ci| type   | string | 是   | HLS协议可用比特率上报事件回调类型,取消注册的事件:'availableBitrates'。 |
1924e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 否   | HLS协议可用比特率上报事件回调方法,使用数组存放支持的比特率。如果数组长度为0,则不支持指定比特率。<br/>从API version 12开始支持此参数。 |
1925e41f4b71Sopenharmony_ci
1926e41f4b71Sopenharmony_ci**示例:**
1927e41f4b71Sopenharmony_ci
1928e41f4b71Sopenharmony_ci```ts
1929e41f4b71Sopenharmony_ciavPlayer.off('availableBitrates')
1930e41f4b71Sopenharmony_ci```
1931e41f4b71Sopenharmony_ci
1932e41f4b71Sopenharmony_ci
1933e41f4b71Sopenharmony_ci### on('mediaKeySystemInfoUpdate')<sup>11+</sup>
1934e41f4b71Sopenharmony_ci
1935e41f4b71Sopenharmony_cion(type: 'mediaKeySystemInfoUpdate', callback: Callback\<Array\<drm.MediaKeySystemInfo>>): void
1936e41f4b71Sopenharmony_ci
1937e41f4b71Sopenharmony_ci监听mediaKeySystemInfoUpdate事件。
1938e41f4b71Sopenharmony_ci
1939e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1940e41f4b71Sopenharmony_ci
1941e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1942e41f4b71Sopenharmony_ci
1943e41f4b71Sopenharmony_ci**参数:**
1944e41f4b71Sopenharmony_ci
1945e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
1946e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
1947e41f4b71Sopenharmony_ci| type     | string   | 是   | 版权保护信息更新上报事件回调类型,支持的事件:'mediaKeySystemInfoUpdate',当播放内容的版权保护信息更新时上报事件。 |
1948e41f4b71Sopenharmony_ci| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 是   | 版权保护信息更新上报事件回调方法,上报MediaKeySystemInfo数组。 |
1949e41f4b71Sopenharmony_ci
1950e41f4b71Sopenharmony_ci**示例:**
1951e41f4b71Sopenharmony_ci
1952e41f4b71Sopenharmony_ci```ts
1953e41f4b71Sopenharmony_ciimport { drm } from '@kit.DrmKit';
1954e41f4b71Sopenharmony_ci
1955e41f4b71Sopenharmony_ciavPlayer.on('mediaKeySystemInfoUpdate', (mediaKeySystemInfo: Array<drm.MediaKeySystemInfo>) => {
1956e41f4b71Sopenharmony_ci    for (let i = 0; i < mediaKeySystemInfo.length; i++) {
1957e41f4b71Sopenharmony_ci      console.info('mediaKeySystemInfoUpdate happened uuid: ' + mediaKeySystemInfo[i]["uuid"]);
1958e41f4b71Sopenharmony_ci      console.info('mediaKeySystemInfoUpdate happened pssh: ' + mediaKeySystemInfo[i]["pssh"]);
1959e41f4b71Sopenharmony_ci    }
1960e41f4b71Sopenharmony_ci})
1961e41f4b71Sopenharmony_ci```
1962e41f4b71Sopenharmony_ci
1963e41f4b71Sopenharmony_ci### off('mediaKeySystemInfoUpdate')<sup>11+</sup>
1964e41f4b71Sopenharmony_ci
1965e41f4b71Sopenharmony_cioff(type: 'mediaKeySystemInfoUpdate', callback?: Callback\<Array\<drm.MediaKeySystemInfo>>): void;
1966e41f4b71Sopenharmony_ci
1967e41f4b71Sopenharmony_ci取消监听mediaKeySystemInfoUpdate事件。
1968e41f4b71Sopenharmony_ci
1969e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1970e41f4b71Sopenharmony_ci
1971e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1972e41f4b71Sopenharmony_ci
1973e41f4b71Sopenharmony_ci**参数:**
1974e41f4b71Sopenharmony_ci
1975e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
1976e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
1977e41f4b71Sopenharmony_ci| type   | string | 是   | 版权保护信息更新上报事件回调类型,取消注册的事件:'mediaKeySystemInfoUpdate'。 |
1978e41f4b71Sopenharmony_ci| callback | Callback\<Array\<drm.[MediaKeySystemInfo](../apis-drm-kit/js-apis-drm.md#mediakeysysteminfo)>> | 否   | 版权保护信息更新上报事件回调方法,上报版权保护信息数组。如填写该参数,则仅取消注册此回调方法,否则取消注册mediaKeySystemInfoUpdate事件的所有回调方法。 |
1979e41f4b71Sopenharmony_ci
1980e41f4b71Sopenharmony_ci**示例:**
1981e41f4b71Sopenharmony_ci
1982e41f4b71Sopenharmony_ci```ts
1983e41f4b71Sopenharmony_ciavPlayer.off('mediaKeySystemInfoUpdate')
1984e41f4b71Sopenharmony_ci```
1985e41f4b71Sopenharmony_ci
1986e41f4b71Sopenharmony_ci### setVolume<sup>9+</sup>
1987e41f4b71Sopenharmony_ci
1988e41f4b71Sopenharmony_cisetVolume(volume: number): void
1989e41f4b71Sopenharmony_ci
1990e41f4b71Sopenharmony_ci设置媒体播放音量,只能在prepared/playing/paused/completed状态调用,可以通过[volumeChange事件](#onvolumechange9)确认是否生效。
1991e41f4b71Sopenharmony_ci
1992e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1993e41f4b71Sopenharmony_ci
1994e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
1995e41f4b71Sopenharmony_ci
1996e41f4b71Sopenharmony_ci**参数:**
1997e41f4b71Sopenharmony_ci
1998e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
1999e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2000e41f4b71Sopenharmony_ci| volume | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
2001e41f4b71Sopenharmony_ci
2002e41f4b71Sopenharmony_ci**示例:**
2003e41f4b71Sopenharmony_ci
2004e41f4b71Sopenharmony_ci```ts
2005e41f4b71Sopenharmony_cilet volume: number = 1.0
2006e41f4b71Sopenharmony_ciavPlayer.setVolume(volume)
2007e41f4b71Sopenharmony_ci```
2008e41f4b71Sopenharmony_ci
2009e41f4b71Sopenharmony_ci### on('volumeChange')<sup>9+</sup>
2010e41f4b71Sopenharmony_ci
2011e41f4b71Sopenharmony_cion(type: 'volumeChange', callback: Callback\<number>): void
2012e41f4b71Sopenharmony_ci
2013e41f4b71Sopenharmony_ci监听setVolume生效的事件。
2014e41f4b71Sopenharmony_ci
2015e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2016e41f4b71Sopenharmony_ci
2017e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2018e41f4b71Sopenharmony_ci
2019e41f4b71Sopenharmony_ci**参数:**
2020e41f4b71Sopenharmony_ci
2021e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2022e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2023e41f4b71Sopenharmony_ci| type     | string   | 是   | setVolume生效的事件回调类型,支持的事件:'volumeChange',每次调用setVolume后都会回调此事件。 |
2024e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | setVolume生效的事件回调方法,上报生效的媒体音量。            |
2025e41f4b71Sopenharmony_ci
2026e41f4b71Sopenharmony_ci**示例:**
2027e41f4b71Sopenharmony_ci
2028e41f4b71Sopenharmony_ci```ts
2029e41f4b71Sopenharmony_ciavPlayer.on('volumeChange', (vol: number) => {
2030e41f4b71Sopenharmony_ci  console.info('volumeChange called,and new volume is :' + vol)
2031e41f4b71Sopenharmony_ci})
2032e41f4b71Sopenharmony_ci```
2033e41f4b71Sopenharmony_ci
2034e41f4b71Sopenharmony_ci### off('volumeChange')<sup>9+</sup>
2035e41f4b71Sopenharmony_ci
2036e41f4b71Sopenharmony_cioff(type: 'volumeChange', callback?: Callback\<number>): void
2037e41f4b71Sopenharmony_ci
2038e41f4b71Sopenharmony_ci取消监听setVolume生效的事件。
2039e41f4b71Sopenharmony_ci
2040e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2041e41f4b71Sopenharmony_ci
2042e41f4b71Sopenharmony_ci**参数:**
2043e41f4b71Sopenharmony_ci
2044e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2045e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2046e41f4b71Sopenharmony_ci| type   | string | 是   | setVolume生效的事件回调类型,取消注册的事件:'volumeChange'。 |
2047e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | setVolume生效的事件回调方法,上报生效的媒体音量。<br/>从API version 12开始支持此参数。            |
2048e41f4b71Sopenharmony_ci
2049e41f4b71Sopenharmony_ci**示例:**
2050e41f4b71Sopenharmony_ci
2051e41f4b71Sopenharmony_ci```ts
2052e41f4b71Sopenharmony_ciavPlayer.off('volumeChange')
2053e41f4b71Sopenharmony_ci```
2054e41f4b71Sopenharmony_ci
2055e41f4b71Sopenharmony_ci### on('endOfStream')<sup>9+</sup>
2056e41f4b71Sopenharmony_ci
2057e41f4b71Sopenharmony_cion(type: 'endOfStream', callback: Callback\<void>): void
2058e41f4b71Sopenharmony_ci
2059e41f4b71Sopenharmony_ci监听资源播放至结尾的事件;如果用户设置[loop](#属性)=true,播放会跳转至开头重播;如果用户没有设置loop,会通过[stateChange](#onstatechange9)上报completed状态。
2060e41f4b71Sopenharmony_ci
2061e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2062e41f4b71Sopenharmony_ci
2063e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2064e41f4b71Sopenharmony_ci
2065e41f4b71Sopenharmony_ci**参数:**
2066e41f4b71Sopenharmony_ci
2067e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2068e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2069e41f4b71Sopenharmony_ci| type     | string   | 是   | 资源播放至结尾的事件回调类型,支持的事件:'endOfStream',当播放至结尾时会上报此事件。 |
2070e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是   | 资源播放至结尾的事件回调方法。                               |
2071e41f4b71Sopenharmony_ci
2072e41f4b71Sopenharmony_ci**示例:**
2073e41f4b71Sopenharmony_ci
2074e41f4b71Sopenharmony_ci```ts
2075e41f4b71Sopenharmony_ciavPlayer.on('endOfStream', () => {
2076e41f4b71Sopenharmony_ci  console.info('endOfStream called')
2077e41f4b71Sopenharmony_ci})
2078e41f4b71Sopenharmony_ci```
2079e41f4b71Sopenharmony_ci
2080e41f4b71Sopenharmony_ci### off('endOfStream')<sup>9+</sup>
2081e41f4b71Sopenharmony_ci
2082e41f4b71Sopenharmony_cioff(type: 'endOfStream', callback?: Callback\<void>): void
2083e41f4b71Sopenharmony_ci
2084e41f4b71Sopenharmony_ci取消监听资源播放至结尾的事件。
2085e41f4b71Sopenharmony_ci
2086e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2087e41f4b71Sopenharmony_ci
2088e41f4b71Sopenharmony_ci**参数:**
2089e41f4b71Sopenharmony_ci
2090e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2091e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2092e41f4b71Sopenharmony_ci| type   | string | 是   | 资源播放至结尾的事件回调类型,取消注册的事件:'endOfStream'。 |
2093e41f4b71Sopenharmony_ci| callback | Callback\<void> | 否   | 资源播放至结尾的事件回调方法。<br/>从API version 12开始支持此参数。                               |
2094e41f4b71Sopenharmony_ci
2095e41f4b71Sopenharmony_ci**示例:**
2096e41f4b71Sopenharmony_ci
2097e41f4b71Sopenharmony_ci```ts
2098e41f4b71Sopenharmony_ciavPlayer.off('endOfStream')
2099e41f4b71Sopenharmony_ci```
2100e41f4b71Sopenharmony_ci
2101e41f4b71Sopenharmony_ci### on('timeUpdate')<sup>9+</sup>
2102e41f4b71Sopenharmony_ci
2103e41f4b71Sopenharmony_cion(type: 'timeUpdate', callback: Callback\<number>): void
2104e41f4b71Sopenharmony_ci
2105e41f4b71Sopenharmony_ci监听资源播放当前时间,单位为毫秒(ms),用于刷新进度条当前位置,默认间隔100ms时间上报,因用户操作(seek)产生的时间变化会立刻上报。
2106e41f4b71Sopenharmony_ci
2107e41f4b71Sopenharmony_ci注:直播场景不支持timeUpdate上报。
2108e41f4b71Sopenharmony_ci
2109e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2110e41f4b71Sopenharmony_ci
2111e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2112e41f4b71Sopenharmony_ci
2113e41f4b71Sopenharmony_ci**参数:**
2114e41f4b71Sopenharmony_ci
2115e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                           |
2116e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ---------------------------------------------- |
2117e41f4b71Sopenharmony_ci| type     | string   | 是   | 时间更新的回调类型,支持的事件:'timeUpdate'。 |
2118e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | 回调函数。返回当前时间。                                     |
2119e41f4b71Sopenharmony_ci
2120e41f4b71Sopenharmony_ci**示例:**
2121e41f4b71Sopenharmony_ci
2122e41f4b71Sopenharmony_ci```ts
2123e41f4b71Sopenharmony_ciavPlayer.on('timeUpdate', (time:number) => {
2124e41f4b71Sopenharmony_ci  console.info('timeUpdate called,and new time is :' + time)
2125e41f4b71Sopenharmony_ci})
2126e41f4b71Sopenharmony_ci```
2127e41f4b71Sopenharmony_ci
2128e41f4b71Sopenharmony_ci### off('timeUpdate')<sup>9+</sup>
2129e41f4b71Sopenharmony_ci
2130e41f4b71Sopenharmony_cioff(type: 'timeUpdate', callback?: Callback\<number>): void
2131e41f4b71Sopenharmony_ci
2132e41f4b71Sopenharmony_ci取消监听资源播放当前时间。
2133e41f4b71Sopenharmony_ci
2134e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2135e41f4b71Sopenharmony_ci
2136e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2137e41f4b71Sopenharmony_ci
2138e41f4b71Sopenharmony_ci**参数:**
2139e41f4b71Sopenharmony_ci
2140e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                               |
2141e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------------------------------------------------- |
2142e41f4b71Sopenharmony_ci| type   | string | 是   | 时间更新的回调类型,取消注册的事件:'timeUpdate'。 |
2143e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | 回调函数。返回当前时间。<br/>从API version 12开始支持此参数。             |
2144e41f4b71Sopenharmony_ci
2145e41f4b71Sopenharmony_ci**示例:**
2146e41f4b71Sopenharmony_ci
2147e41f4b71Sopenharmony_ci```ts
2148e41f4b71Sopenharmony_ciavPlayer.off('timeUpdate')
2149e41f4b71Sopenharmony_ci```
2150e41f4b71Sopenharmony_ci
2151e41f4b71Sopenharmony_ci### on('durationUpdate')<sup>9+</sup>
2152e41f4b71Sopenharmony_ci
2153e41f4b71Sopenharmony_ci
2154e41f4b71Sopenharmony_cion(type: 'durationUpdate', callback: Callback\<number>): void
2155e41f4b71Sopenharmony_ci
2156e41f4b71Sopenharmony_ci监听资源播放资源的时长,单位为毫秒(ms),用于刷新进度条长度,默认只在prepared上报一次,同时允许一些特殊码流刷新多次时长。
2157e41f4b71Sopenharmony_ci注:直播场景不支持durationUpdate上报。
2158e41f4b71Sopenharmony_ci
2159e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2160e41f4b71Sopenharmony_ci
2161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2162e41f4b71Sopenharmony_ci
2163e41f4b71Sopenharmony_ci**参数:**
2164e41f4b71Sopenharmony_ci
2165e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                               |
2166e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------------------------------------- |
2167e41f4b71Sopenharmony_ci| type     | string   | 是   | 时长更新的回调类型,支持的事件:'durationUpdate'。 |
2168e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | 回调函数。返回资源时长。        |
2169e41f4b71Sopenharmony_ci
2170e41f4b71Sopenharmony_ci**示例:**
2171e41f4b71Sopenharmony_ci
2172e41f4b71Sopenharmony_ci```ts
2173e41f4b71Sopenharmony_ciavPlayer.on('durationUpdate', (duration: number) => {
2174e41f4b71Sopenharmony_ci  console.info('durationUpdate called,new duration is :' + duration)
2175e41f4b71Sopenharmony_ci})
2176e41f4b71Sopenharmony_ci```
2177e41f4b71Sopenharmony_ci
2178e41f4b71Sopenharmony_ci### off('durationUpdate')<sup>9+</sup>
2179e41f4b71Sopenharmony_ci
2180e41f4b71Sopenharmony_cioff(type: 'durationUpdate', callback?: Callback\<number>): void
2181e41f4b71Sopenharmony_ci
2182e41f4b71Sopenharmony_ci取消监听资源播放资源的时长。
2183e41f4b71Sopenharmony_ci
2184e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2185e41f4b71Sopenharmony_ci
2186e41f4b71Sopenharmony_ci**参数:**
2187e41f4b71Sopenharmony_ci
2188e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                   |
2189e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------ |
2190e41f4b71Sopenharmony_ci| type   | string | 是   | 时长更新的回调类型,取消注册的事件:'durationUpdate'。 |
2191e41f4b71Sopenharmony_ci| callback | Callback\<number> | 否   | 回调函数。返回资源时长。<br/>从API version 12开始支持此参数。        |
2192e41f4b71Sopenharmony_ci
2193e41f4b71Sopenharmony_ci**示例:**
2194e41f4b71Sopenharmony_ci
2195e41f4b71Sopenharmony_ci```ts
2196e41f4b71Sopenharmony_ciavPlayer.off('durationUpdate')
2197e41f4b71Sopenharmony_ci```
2198e41f4b71Sopenharmony_ci
2199e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>9+</sup>
2200e41f4b71Sopenharmony_ci
2201e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: OnBufferingUpdateHandler): void
2202e41f4b71Sopenharmony_ci
2203e41f4b71Sopenharmony_ci订阅音视频缓存更新事件,仅网络播放支持该订阅事件。
2204e41f4b71Sopenharmony_ci
2205e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2206e41f4b71Sopenharmony_ci
2207e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2208e41f4b71Sopenharmony_ci
2209e41f4b71Sopenharmony_ci**参数:**
2210e41f4b71Sopenharmony_ci
2211e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2212e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2213e41f4b71Sopenharmony_ci| type     | string   | 是   | 播放缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
2214e41f4b71Sopenharmony_ci| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 是   | 播放缓存事件回调方法。 |
2215e41f4b71Sopenharmony_ci
2216e41f4b71Sopenharmony_ci**示例:**
2217e41f4b71Sopenharmony_ci
2218e41f4b71Sopenharmony_ci```ts
2219e41f4b71Sopenharmony_ciavPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
2220e41f4b71Sopenharmony_ci  console.info('bufferingUpdate called,and infoType value is:' + infoType + ', value is :' + value)
2221e41f4b71Sopenharmony_ci})
2222e41f4b71Sopenharmony_ci```
2223e41f4b71Sopenharmony_ci
2224e41f4b71Sopenharmony_ci### off('bufferingUpdate')<sup>9+</sup>
2225e41f4b71Sopenharmony_ci
2226e41f4b71Sopenharmony_cioff(type: 'bufferingUpdate', callback?: OnBufferingUpdateHandler): void
2227e41f4b71Sopenharmony_ci
2228e41f4b71Sopenharmony_ci取消监听音视频缓存更新事件。
2229e41f4b71Sopenharmony_ci
2230e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2231e41f4b71Sopenharmony_ci
2232e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2233e41f4b71Sopenharmony_ci
2234e41f4b71Sopenharmony_ci**参数:**
2235e41f4b71Sopenharmony_ci
2236e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                      |
2237e41f4b71Sopenharmony_ci| ------ | ------ | ---- | --------------------------------------------------------- |
2238e41f4b71Sopenharmony_ci| type   | string | 是   | 播放缓存事件回调类型,取消注册的事件:'bufferingUpdate'。 |
2239e41f4b71Sopenharmony_ci| callback | [OnBufferingUpdateHandler](#onbufferingupdatehandler12) | 否   | 播放缓存事件回调方法。 |
2240e41f4b71Sopenharmony_ci
2241e41f4b71Sopenharmony_ci**示例:**
2242e41f4b71Sopenharmony_ci
2243e41f4b71Sopenharmony_ci```ts
2244e41f4b71Sopenharmony_ciavPlayer.off('bufferingUpdate')
2245e41f4b71Sopenharmony_ci```
2246e41f4b71Sopenharmony_ci
2247e41f4b71Sopenharmony_ci### on('startRenderFrame')<sup>9+</sup>
2248e41f4b71Sopenharmony_ci
2249e41f4b71Sopenharmony_cion(type: 'startRenderFrame', callback: Callback\<void>): void
2250e41f4b71Sopenharmony_ci
2251e41f4b71Sopenharmony_ci订阅视频播放开始首帧渲染的更新事件,仅视频播放支持该订阅事件,该事件仅代表播放服务将第一帧画面送显示模块,实际效果依赖显示服务渲染性能。
2252e41f4b71Sopenharmony_ci
2253e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2254e41f4b71Sopenharmony_ci
2255e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2256e41f4b71Sopenharmony_ci
2257e41f4b71Sopenharmony_ci**参数:**
2258e41f4b71Sopenharmony_ci
2259e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2260e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2261e41f4b71Sopenharmony_ci| type     | string   | 是   | 视频播放开始首帧渲染事件回调类型,支持的事件:'startRenderFrame'。 |
2262e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是   | 视频播放开始首帧渲染事件回调方法。                           |
2263e41f4b71Sopenharmony_ci
2264e41f4b71Sopenharmony_ci**示例:**
2265e41f4b71Sopenharmony_ci
2266e41f4b71Sopenharmony_ci```ts
2267e41f4b71Sopenharmony_ciavPlayer.on('startRenderFrame', () => {
2268e41f4b71Sopenharmony_ci  console.info('startRenderFrame called')
2269e41f4b71Sopenharmony_ci})
2270e41f4b71Sopenharmony_ci```
2271e41f4b71Sopenharmony_ci
2272e41f4b71Sopenharmony_ci### off('startRenderFrame')<sup>9+</sup>
2273e41f4b71Sopenharmony_ci
2274e41f4b71Sopenharmony_cioff(type: 'startRenderFrame', callback?: Callback\<void>): void
2275e41f4b71Sopenharmony_ci
2276e41f4b71Sopenharmony_ci取消监听视频播放开始首帧渲染的更新事件。
2277e41f4b71Sopenharmony_ci
2278e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2279e41f4b71Sopenharmony_ci
2280e41f4b71Sopenharmony_ci**参数:**
2281e41f4b71Sopenharmony_ci
2282e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2283e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2284e41f4b71Sopenharmony_ci| type   | string | 是   | 视频播放开始首帧渲染事件回调类型,取消注册的事件:'startRenderFrame'。 |
2285e41f4b71Sopenharmony_ci| callback | Callback\<void> | 否   | 视频播放开始首帧渲染事件回调方法。<br/>从API version 12开始支持此参数。                   |
2286e41f4b71Sopenharmony_ci
2287e41f4b71Sopenharmony_ci**示例:**
2288e41f4b71Sopenharmony_ci
2289e41f4b71Sopenharmony_ci```ts
2290e41f4b71Sopenharmony_ciavPlayer.off('startRenderFrame')
2291e41f4b71Sopenharmony_ci```
2292e41f4b71Sopenharmony_ci
2293e41f4b71Sopenharmony_ci### on('videoSizeChange')<sup>9+</sup>
2294e41f4b71Sopenharmony_ci
2295e41f4b71Sopenharmony_cion(type: 'videoSizeChange', callback: OnVideoSizeChangeHandler): void
2296e41f4b71Sopenharmony_ci
2297e41f4b71Sopenharmony_ci监听视频播放宽高变化事件,仅视频播放支持该订阅事件,默认只在prepared状态上报一次,但HLS协议码流会在切换分辨率时上报。
2298e41f4b71Sopenharmony_ci
2299e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2300e41f4b71Sopenharmony_ci
2301e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2302e41f4b71Sopenharmony_ci
2303e41f4b71Sopenharmony_ci**参数:**
2304e41f4b71Sopenharmony_ci
2305e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2306e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2307e41f4b71Sopenharmony_ci| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChange'。 |
2308e41f4b71Sopenharmony_ci| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 是   | 视频播放宽高变化事件回调方法。    |
2309e41f4b71Sopenharmony_ci
2310e41f4b71Sopenharmony_ci**示例:**
2311e41f4b71Sopenharmony_ci
2312e41f4b71Sopenharmony_ci```ts
2313e41f4b71Sopenharmony_ciavPlayer.on('videoSizeChange', (width: number, height: number) => {
2314e41f4b71Sopenharmony_ci  console.info('videoSizeChange called,and width is:' + width + ', height is :' + height)
2315e41f4b71Sopenharmony_ci})
2316e41f4b71Sopenharmony_ci```
2317e41f4b71Sopenharmony_ci
2318e41f4b71Sopenharmony_ci### off('videoSizeChange')<sup>9+</sup>
2319e41f4b71Sopenharmony_ci
2320e41f4b71Sopenharmony_cioff(type: 'videoSizeChange', callback?: OnVideoSizeChangeHandler): void
2321e41f4b71Sopenharmony_ci
2322e41f4b71Sopenharmony_ci取消监听视频播放宽高变化事件。
2323e41f4b71Sopenharmony_ci
2324e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2325e41f4b71Sopenharmony_ci
2326e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2327e41f4b71Sopenharmony_ci
2328e41f4b71Sopenharmony_ci**参数:**
2329e41f4b71Sopenharmony_ci
2330e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2331e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2332e41f4b71Sopenharmony_ci| type   | string | 是   | 视频播放宽高变化事件回调类型,取消注册的事件:'videoSizeChange'。 |
2333e41f4b71Sopenharmony_ci| callback | [OnVideoSizeChangeHandler](#onvideosizechangehandler12) | 否   | 视频播放宽高变化事件回调方法。<br/>从API version 12开始支持此参数。    |
2334e41f4b71Sopenharmony_ci
2335e41f4b71Sopenharmony_ci**示例:**
2336e41f4b71Sopenharmony_ci
2337e41f4b71Sopenharmony_ci```ts
2338e41f4b71Sopenharmony_ciavPlayer.off('videoSizeChange')
2339e41f4b71Sopenharmony_ci```
2340e41f4b71Sopenharmony_ci
2341e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>9+</sup>
2342e41f4b71Sopenharmony_ci
2343e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: Callback\<audio.InterruptEvent>): void
2344e41f4b71Sopenharmony_ci
2345e41f4b71Sopenharmony_ci监听音频焦点变化事件,多个音视频资源同时播放时,会根据音频焦点模型[audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9)触发此事件。应用需根据不同焦点变化事件作相应处理。具体可参考[处理音频焦点事件](../../media/audio/audio-playback-concurrency.md)。
2346e41f4b71Sopenharmony_ci
2347e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2348e41f4b71Sopenharmony_ci
2349e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2350e41f4b71Sopenharmony_ci
2351e41f4b71Sopenharmony_ci**参数:**
2352e41f4b71Sopenharmony_ci
2353e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                                     |
2354e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
2355e41f4b71Sopenharmony_ci| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
2356e41f4b71Sopenharmony_ci| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 是   | 音频焦点变化事件回调方法。                           |
2357e41f4b71Sopenharmony_ci
2358e41f4b71Sopenharmony_ci**示例:**
2359e41f4b71Sopenharmony_ci
2360e41f4b71Sopenharmony_ci```ts
2361e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
2362e41f4b71Sopenharmony_ci
2363e41f4b71Sopenharmony_ciavPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
2364e41f4b71Sopenharmony_ci  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
2365e41f4b71Sopenharmony_ci})
2366e41f4b71Sopenharmony_ci```
2367e41f4b71Sopenharmony_ci
2368e41f4b71Sopenharmony_ci### off('audioInterrupt')<sup>9+</sup>
2369e41f4b71Sopenharmony_ci
2370e41f4b71Sopenharmony_cioff(type: 'audioInterrupt', callback?: Callback<audio.InterruptEvent>): void
2371e41f4b71Sopenharmony_ci
2372e41f4b71Sopenharmony_ci取消监听音频焦点变化事件。
2373e41f4b71Sopenharmony_ci
2374e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2375e41f4b71Sopenharmony_ci
2376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2377e41f4b71Sopenharmony_ci
2378e41f4b71Sopenharmony_ci**参数:**
2379e41f4b71Sopenharmony_ci
2380e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2381e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2382e41f4b71Sopenharmony_ci| type   | string | 是   | 音频焦点变化事件回调类型,取消注册的事件:'audioInterrupt'。 |
2383e41f4b71Sopenharmony_ci| callback | Callback\<[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)> | 否   | 音频焦点变化事件回调方法。<br/>从API version 12开始支持此参数。             |
2384e41f4b71Sopenharmony_ci
2385e41f4b71Sopenharmony_ci**示例:**
2386e41f4b71Sopenharmony_ci
2387e41f4b71Sopenharmony_ci```ts
2388e41f4b71Sopenharmony_ciavPlayer.off('audioInterrupt')
2389e41f4b71Sopenharmony_ci```
2390e41f4b71Sopenharmony_ci
2391e41f4b71Sopenharmony_ci### on('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2392e41f4b71Sopenharmony_ci
2393e41f4b71Sopenharmony_cion(type: 'audioOutputDeviceChangeWithInfo', callback: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2394e41f4b71Sopenharmony_ci
2395e41f4b71Sopenharmony_ci订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2396e41f4b71Sopenharmony_ci
2397e41f4b71Sopenharmony_ci在订阅此监听时,建议参考[响应音频流输出设备变更](../../media/audio/audio-output-device-change.md)自行实现设备连接或者断开时的播放器行为。
2398e41f4b71Sopenharmony_ci
2399e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2400e41f4b71Sopenharmony_ci
2401e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2402e41f4b71Sopenharmony_ci
2403e41f4b71Sopenharmony_ci**参数:**
2404e41f4b71Sopenharmony_ci
2405e41f4b71Sopenharmony_ci| 参数名   | 类型                       | 必填 | 说明                                        |
2406e41f4b71Sopenharmony_ci| :------- | :------------------------- | :--- | :------------------------------------------ |
2407e41f4b71Sopenharmony_ci| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChangeWithInfo'。 |
2408e41f4b71Sopenharmony_ci| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 是   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2409e41f4b71Sopenharmony_ci
2410e41f4b71Sopenharmony_ci**错误码:**
2411e41f4b71Sopenharmony_ci
2412e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
2413e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
2414e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.       |
2415e41f4b71Sopenharmony_ci
2416e41f4b71Sopenharmony_ci**示例:**
2417e41f4b71Sopenharmony_ci
2418e41f4b71Sopenharmony_ci```ts
2419e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
2420e41f4b71Sopenharmony_ci
2421e41f4b71Sopenharmony_ciavPlayer.on('audioOutputDeviceChangeWithInfo', (data: audio.AudioStreamDeviceChangeInfo) => {
2422e41f4b71Sopenharmony_ci  console.info(`${JSON.stringify(data)}`);
2423e41f4b71Sopenharmony_ci});
2424e41f4b71Sopenharmony_ci```
2425e41f4b71Sopenharmony_ci
2426e41f4b71Sopenharmony_ci### off('audioOutputDeviceChangeWithInfo')<sup>11+</sup>
2427e41f4b71Sopenharmony_ci
2428e41f4b71Sopenharmony_cioff(type: 'audioOutputDeviceChangeWithInfo', callback?: Callback\<audio.AudioStreamDeviceChangeInfo>): void
2429e41f4b71Sopenharmony_ci
2430e41f4b71Sopenharmony_ci取消订阅监听音频流输出设备变化及原因,使用callback方式返回结果。
2431e41f4b71Sopenharmony_ci
2432e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2433e41f4b71Sopenharmony_ci
2434e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2435e41f4b71Sopenharmony_ci
2436e41f4b71Sopenharmony_ci**参数:**
2437e41f4b71Sopenharmony_ci
2438e41f4b71Sopenharmony_ci| 参数名   | 类型                       | 必填 | 说明                                        |
2439e41f4b71Sopenharmony_ci| :------- | :------------------------- | :--- | :------------------------------------------ |
2440e41f4b71Sopenharmony_ci| type     | string                     | 是   | 事件回调类型,支持的事件为:'outputDeviceChange'。 |
2441e41f4b71Sopenharmony_ci| callback | Callback\<[audio.AudioStreamDeviceChangeInfo](../apis-audio-kit/js-apis-audio.md#audiostreamdevicechangeinfo11)> | 否   | 回调函数,返回当前音频流的输出设备描述信息及变化原因。 |
2442e41f4b71Sopenharmony_ci
2443e41f4b71Sopenharmony_ci**错误码:**
2444e41f4b71Sopenharmony_ci
2445e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
2446e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
2447e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
2448e41f4b71Sopenharmony_ci
2449e41f4b71Sopenharmony_ci**示例:**
2450e41f4b71Sopenharmony_ci
2451e41f4b71Sopenharmony_ci```ts
2452e41f4b71Sopenharmony_ciavPlayer.off('audioOutputDeviceChangeWithInfo');
2453e41f4b71Sopenharmony_ci```
2454e41f4b71Sopenharmony_ci
2455e41f4b71Sopenharmony_ci### addSubtitleFromFd<sup>12+</sup>
2456e41f4b71Sopenharmony_ci
2457e41f4b71Sopenharmony_ciaddSubtitleFromFd(fd: number, offset?: number, length?: number): Promise\<void>
2458e41f4b71Sopenharmony_ci
2459e41f4b71Sopenharmony_ci依据fd为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2460e41f4b71Sopenharmony_ci
2461e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2462e41f4b71Sopenharmony_ci
2463e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2464e41f4b71Sopenharmony_ci
2465e41f4b71Sopenharmony_ci**参数:**
2466e41f4b71Sopenharmony_ci
2467e41f4b71Sopenharmony_ci| 参数名 | 类型                   | 必填 | 说明                                                         |
2468e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
2469e41f4b71Sopenharmony_ci| fd | number   | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取。 |
2470e41f4b71Sopenharmony_ci| offset | number | 否   | 资源偏移量,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 |
2471e41f4b71Sopenharmony_ci| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成字幕频资源解析错误。 |
2472e41f4b71Sopenharmony_ci
2473e41f4b71Sopenharmony_ci**返回值:**
2474e41f4b71Sopenharmony_ci
2475e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
2476e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
2477e41f4b71Sopenharmony_ci| Promise\<void> | 添加外挂字幕addSubtitleFromFd方法的Promise返回值。 |
2478e41f4b71Sopenharmony_ci
2479e41f4b71Sopenharmony_ci**错误码:**
2480e41f4b71Sopenharmony_ci
2481e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
2482e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
2483e41f4b71Sopenharmony_ci| 401      | The parameter check failed. Return by promise. |
2484e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
2485e41f4b71Sopenharmony_ci
2486e41f4b71Sopenharmony_ci**示例:**
2487e41f4b71Sopenharmony_ci
2488e41f4b71Sopenharmony_ci```ts
2489e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'
2490e41f4b71Sopenharmony_ci
2491e41f4b71Sopenharmony_cilet context = getContext(this) as common.UIAbilityContext
2492e41f4b71Sopenharmony_cilet fileDescriptor = await context.resourceManager.getRawFd('xxx.srt')
2493e41f4b71Sopenharmony_ci
2494e41f4b71Sopenharmony_ciavPlayer.addSubtitleFromFd(fileDescriptor.fd, fileDescriptor.offset, fileDescriptor.length)
2495e41f4b71Sopenharmony_ci```
2496e41f4b71Sopenharmony_ci
2497e41f4b71Sopenharmony_ci### addSubtitleFromUrl<sup>12+</sup>
2498e41f4b71Sopenharmony_ci
2499e41f4b71Sopenharmony_ciaddSubtitleFromUrl(url: string): Promise\<void>
2500e41f4b71Sopenharmony_ci
2501e41f4b71Sopenharmony_ci依据url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕)。使用Promise方式返回结果。
2502e41f4b71Sopenharmony_ci
2503e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2504e41f4b71Sopenharmony_ci
2505e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2506e41f4b71Sopenharmony_ci
2507e41f4b71Sopenharmony_ci**参数:**
2508e41f4b71Sopenharmony_ci
2509e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2510e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2511e41f4b71Sopenharmony_ci| url    | string | 是   | 外挂字幕文件地址。 |
2512e41f4b71Sopenharmony_ci
2513e41f4b71Sopenharmony_ci**返回值:**
2514e41f4b71Sopenharmony_ci
2515e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
2516e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
2517e41f4b71Sopenharmony_ci| Promise\<void> | 添加外挂字幕addSubtitleFromUrl方法的Promise返回值。 |
2518e41f4b71Sopenharmony_ci
2519e41f4b71Sopenharmony_ci**错误码:**
2520e41f4b71Sopenharmony_ci
2521e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
2522e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
2523e41f4b71Sopenharmony_ci| 401      | The parameter check failed. Return by promise. |
2524e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
2525e41f4b71Sopenharmony_ci
2526e41f4b71Sopenharmony_ci**示例:**
2527e41f4b71Sopenharmony_ci
2528e41f4b71Sopenharmony_ci```ts
2529e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit'
2530e41f4b71Sopenharmony_ci
2531e41f4b71Sopenharmony_cilet fdUrl:string = 'http://xxx.xxx.xxx/xx/index.srt'
2532e41f4b71Sopenharmony_ci
2533e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer = await media.createAVPlayer()
2534e41f4b71Sopenharmony_ciavPlayer.addSubtitleFromUrl(fdUrl)
2535e41f4b71Sopenharmony_ci```
2536e41f4b71Sopenharmony_ci
2537e41f4b71Sopenharmony_ci### on('subtitleUpdate')<sup>12+</sup>
2538e41f4b71Sopenharmony_ci
2539e41f4b71Sopenharmony_cion(type: 'subtitleUpdate', callback: Callback\<SubtitleInfo>): void
2540e41f4b71Sopenharmony_ci
2541e41f4b71Sopenharmony_ci订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。用户只能订阅一个外挂字幕事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2542e41f4b71Sopenharmony_ci
2543e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2544e41f4b71Sopenharmony_ci
2545e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2546e41f4b71Sopenharmony_ci
2547e41f4b71Sopenharmony_ci**参数:**
2548e41f4b71Sopenharmony_ci
2549e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2550e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2551e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2552e41f4b71Sopenharmony_ci| callback | function | 是   | 外挂字幕事件回调方法。 |
2553e41f4b71Sopenharmony_ci
2554e41f4b71Sopenharmony_ci**示例:**
2555e41f4b71Sopenharmony_ci
2556e41f4b71Sopenharmony_ci```ts
2557e41f4b71Sopenharmony_ciavPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => {
2558e41f4b71Sopenharmony_ci  if (info) {
2559e41f4b71Sopenharmony_ci    let text = (!info.text) ? '' : info.text
2560e41f4b71Sopenharmony_ci    let startTime = (!info.startTime) ? 0 : info.startTime
2561e41f4b71Sopenharmony_ci    let duration = (!info.duration) ? 0 : info.duration
2562e41f4b71Sopenharmony_ci    console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration)
2563e41f4b71Sopenharmony_ci  } else {
2564e41f4b71Sopenharmony_ci    console.info('subtitleUpdate info is null')
2565e41f4b71Sopenharmony_ci  }
2566e41f4b71Sopenharmony_ci})
2567e41f4b71Sopenharmony_ci```
2568e41f4b71Sopenharmony_ci
2569e41f4b71Sopenharmony_ci### off('subtitleUpdate')<sup>12+</sup>
2570e41f4b71Sopenharmony_ci
2571e41f4b71Sopenharmony_cioff(type: 'subtitleUpdate', callback?: Callback\<SubtitleInfo>): void
2572e41f4b71Sopenharmony_ci
2573e41f4b71Sopenharmony_ci取消订阅获取外挂字幕的事件。
2574e41f4b71Sopenharmony_ci
2575e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2576e41f4b71Sopenharmony_ci
2577e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2578e41f4b71Sopenharmony_ci
2579e41f4b71Sopenharmony_ci**参数:**
2580e41f4b71Sopenharmony_ci
2581e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2582e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2583e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'subtitleUpdate'。 |
2584e41f4b71Sopenharmony_ci| callback | function | 否   | 取消外挂字幕事件的回调方法。 |
2585e41f4b71Sopenharmony_ci
2586e41f4b71Sopenharmony_ci**示例:**
2587e41f4b71Sopenharmony_ci
2588e41f4b71Sopenharmony_ci```ts
2589e41f4b71Sopenharmony_ciavPlayer.off('subtitleUpdate')
2590e41f4b71Sopenharmony_ci```
2591e41f4b71Sopenharmony_ci
2592e41f4b71Sopenharmony_ci### on('trackChange')<sup>12+</sup>
2593e41f4b71Sopenharmony_ci
2594e41f4b71Sopenharmony_cion(type: 'trackChange', callback: OnTrackChangeHandler): void
2595e41f4b71Sopenharmony_ci
2596e41f4b71Sopenharmony_ci订阅获取轨道变更的事件,当播放的轨道变更时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2597e41f4b71Sopenharmony_ci
2598e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2599e41f4b71Sopenharmony_ci
2600e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2601e41f4b71Sopenharmony_ci
2602e41f4b71Sopenharmony_ci**参数:**
2603e41f4b71Sopenharmony_ci
2604e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2605e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2606e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2607e41f4b71Sopenharmony_ci| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 是   | 轨道变更事件回调方法。 |
2608e41f4b71Sopenharmony_ci
2609e41f4b71Sopenharmony_ci**示例:**
2610e41f4b71Sopenharmony_ci
2611e41f4b71Sopenharmony_ci```ts
2612e41f4b71Sopenharmony_ciavPlayer.on('trackChange', (index: number, isSelect: boolean) => {
2613e41f4b71Sopenharmony_ci  console.info('trackChange info: index=' + index + ' isSelect=' + isSelect)
2614e41f4b71Sopenharmony_ci})
2615e41f4b71Sopenharmony_ci```
2616e41f4b71Sopenharmony_ci
2617e41f4b71Sopenharmony_ci### off('trackChange')<sup>12+</sup>
2618e41f4b71Sopenharmony_ci
2619e41f4b71Sopenharmony_cioff(type: 'trackChange', callback?: OnTrackChangeHandler): void
2620e41f4b71Sopenharmony_ci
2621e41f4b71Sopenharmony_ci取消订阅获取轨道变更的事件。
2622e41f4b71Sopenharmony_ci
2623e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2624e41f4b71Sopenharmony_ci
2625e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2626e41f4b71Sopenharmony_ci
2627e41f4b71Sopenharmony_ci**参数:**
2628e41f4b71Sopenharmony_ci
2629e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2630e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2631e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'trackChange'。 |
2632e41f4b71Sopenharmony_ci| callback | [OnTrackChangeHandler](#ontrackchangehandler12) | 否   | 取消轨道变更事件的回调方法。 |
2633e41f4b71Sopenharmony_ci
2634e41f4b71Sopenharmony_ci**示例:**
2635e41f4b71Sopenharmony_ci
2636e41f4b71Sopenharmony_ci```ts
2637e41f4b71Sopenharmony_ciavPlayer.off('trackChange')
2638e41f4b71Sopenharmony_ci```
2639e41f4b71Sopenharmony_ci
2640e41f4b71Sopenharmony_ci### on('trackInfoUpdate')<sup>12+</sup>
2641e41f4b71Sopenharmony_ci
2642e41f4b71Sopenharmony_cion(type: 'trackInfoUpdate', callback: Callback\<Array\<MediaDescription>>): void
2643e41f4b71Sopenharmony_ci
2644e41f4b71Sopenharmony_ci订阅获取轨道信息更新的事件,当播放的轨道有更新时,会通过订阅的回调方法通知用户。用户只能订阅一个轨道变更事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
2645e41f4b71Sopenharmony_ci
2646e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2647e41f4b71Sopenharmony_ci
2648e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2649e41f4b71Sopenharmony_ci
2650e41f4b71Sopenharmony_ci**参数:**
2651e41f4b71Sopenharmony_ci
2652e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2653e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2654e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2655e41f4b71Sopenharmony_ci| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 轨道信息更新事件回调方法。 |
2656e41f4b71Sopenharmony_ci
2657e41f4b71Sopenharmony_ci**示例:**
2658e41f4b71Sopenharmony_ci
2659e41f4b71Sopenharmony_ci```ts
2660e41f4b71Sopenharmony_ciavPlayer.on('trackInfoUpdate', (info: Array<media.MediaDescription>) => {
2661e41f4b71Sopenharmony_ci  if (info) {
2662e41f4b71Sopenharmony_ci    for (let i = 0; i < info.length; i++) {
2663e41f4b71Sopenharmony_ci      let propertyIndex: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_INDEX];
2664e41f4b71Sopenharmony_ci      let propertyType: Object = info[i][media.MediaDescriptionKey.MD_KEY_TRACK_TYPE];
2665e41f4b71Sopenharmony_ci      console.info('track info: index=' + propertyIndex + ' tracktype=' + propertyType)
2666e41f4b71Sopenharmony_ci    }
2667e41f4b71Sopenharmony_ci  } else {
2668e41f4b71Sopenharmony_ci    console.info('track info is null')
2669e41f4b71Sopenharmony_ci  }
2670e41f4b71Sopenharmony_ci})
2671e41f4b71Sopenharmony_ci```
2672e41f4b71Sopenharmony_ci
2673e41f4b71Sopenharmony_ci### off('trackInfoUpdate')<sup>12+</sup>
2674e41f4b71Sopenharmony_ci
2675e41f4b71Sopenharmony_cioff(type: 'trackInfoUpdate', callback?: Callback\<Array\<MediaDescription>>): void
2676e41f4b71Sopenharmony_ci
2677e41f4b71Sopenharmony_ci取消订阅获取轨道变更的事件。
2678e41f4b71Sopenharmony_ci
2679e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2680e41f4b71Sopenharmony_ci
2681e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2682e41f4b71Sopenharmony_ci
2683e41f4b71Sopenharmony_ci**参数:**
2684e41f4b71Sopenharmony_ci
2685e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2686e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2687e41f4b71Sopenharmony_ci| type | string | 是   | 事件回调类型,支持的事件为:'trackInfoUpdate'。 |
2688e41f4b71Sopenharmony_ci| callback | Callback\<Array\<[MediaDescription](#mediadescription8)>> | 否   | 取消轨道信息更新事件的回调方法。 |
2689e41f4b71Sopenharmony_ci
2690e41f4b71Sopenharmony_ci**示例:**
2691e41f4b71Sopenharmony_ci
2692e41f4b71Sopenharmony_ci```ts
2693e41f4b71Sopenharmony_ciavPlayer.off('trackInfoUpdate')
2694e41f4b71Sopenharmony_ci```
2695e41f4b71Sopenharmony_ci
2696e41f4b71Sopenharmony_ci### on('amplitudeUpdate')<sup>13+</sup>
2697e41f4b71Sopenharmony_ci
2698e41f4b71Sopenharmony_cion(type: 'amplitudeUpdate', callback: Callback\<Array\<number>>): void
2699e41f4b71Sopenharmony_ci
2700e41f4b71Sopenharmony_ci订阅音频最大电平值,音频资源播放时定时上报。
2701e41f4b71Sopenharmony_ci
2702e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
2703e41f4b71Sopenharmony_ci
2704e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2705e41f4b71Sopenharmony_ci
2706e41f4b71Sopenharmony_ci**参数:**
2707e41f4b71Sopenharmony_ci
2708e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
2709e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
2710e41f4b71Sopenharmony_ci| type     | string   | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2711e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 是   | 音频最大电平值更新事件回调方法。 |
2712e41f4b71Sopenharmony_ci
2713e41f4b71Sopenharmony_ci**示例:**
2714e41f4b71Sopenharmony_ci
2715e41f4b71Sopenharmony_ci```ts
2716e41f4b71Sopenharmony_ciavPlayer.on('amplitudeUpdate', (value: Array<number>) => {
2717e41f4b71Sopenharmony_ci  console.info('amplitudeUpdate called,and amplitudeUpdate = ${value}')
2718e41f4b71Sopenharmony_ci})
2719e41f4b71Sopenharmony_ci```
2720e41f4b71Sopenharmony_ci
2721e41f4b71Sopenharmony_ci### off('amplitudeUpdate')<sup>13+</sup>
2722e41f4b71Sopenharmony_ci
2723e41f4b71Sopenharmony_cioff(type: 'amplitudeUpdate', callback?: Callback\<Array\<number>>): void
2724e41f4b71Sopenharmony_ci
2725e41f4b71Sopenharmony_ci取消订阅获取音频最大电平值事件。
2726e41f4b71Sopenharmony_ci
2727e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
2728e41f4b71Sopenharmony_ci
2729e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2730e41f4b71Sopenharmony_ci
2731e41f4b71Sopenharmony_ci**参数:**
2732e41f4b71Sopenharmony_ci
2733e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
2734e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2735e41f4b71Sopenharmony_ci| type   | string | 是   | 事件回调类型,支持的事件为:'amplitudeUpdate'。 |
2736e41f4b71Sopenharmony_ci| callback | Callback\<Array\<number>> | 否   | 取消音频最大电平值更新事件回调方法。 |
2737e41f4b71Sopenharmony_ci
2738e41f4b71Sopenharmony_ci**示例:**
2739e41f4b71Sopenharmony_ci
2740e41f4b71Sopenharmony_ci```ts
2741e41f4b71Sopenharmony_ciavPlayer.off('amplitudeUpdate')
2742e41f4b71Sopenharmony_ci```
2743e41f4b71Sopenharmony_ci
2744e41f4b71Sopenharmony_ci## AVPlayerState<sup>9+</sup>
2745e41f4b71Sopenharmony_ci
2746e41f4b71Sopenharmony_citype AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error'
2747e41f4b71Sopenharmony_ci
2748e41f4b71Sopenharmony_ci[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。
2749e41f4b71Sopenharmony_ci
2750e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2751e41f4b71Sopenharmony_ci
2752e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2753e41f4b71Sopenharmony_ci
2754e41f4b71Sopenharmony_ci|              类型               | 说明                                                         |
2755e41f4b71Sopenharmony_ci| :-----------------------------: | :----------------------------------------------------------- |
2756e41f4b71Sopenharmony_ci|              'idle'               | 闲置状态,AVPlayer刚被创建[createAVPlayer()](#mediacreateavplayer9)或者调用了[reset()](#reset9)方法之后,进入Idle状态。<br/>首次创建[createAVPlayer()](#mediacreateavplayer9),所有属性都为默认值。<br/>调用[reset()](#reset9)方法,url<sup>9+</sup> 或 fdSrc<sup>9+</sup>或dataSrc<sup>10+</sup>属性及loop属性会被重置,其他用户设置的属性将被保留。 |
2757e41f4b71Sopenharmony_ci|           'initialized'           | 资源初始化,在Idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 |
2758e41f4b71Sopenharmony_ci|            'prepared'             | 已准备状态,在initialized状态调用[prepare()](#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 |
2759e41f4b71Sopenharmony_ci|             'playing'             | 正在播放状态,在prepared/paused/completed状态调用[play()](#play9)方法,AVPlayer会进入playing状态。 |
2760e41f4b71Sopenharmony_ci|             'paused'              | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 |
2761e41f4b71Sopenharmony_ci|            'completed'            | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](#play9)会进入playing状态和重播,调用[stop()](#stop9)会进入stopped状态。 |
2762e41f4b71Sopenharmony_ci|             'stopped'             | 停止状态,在prepared/playing/paused/completed状态调用[stop()](#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](#prepare9)重新准备,也可以调用[reset()](#reset9)重置,或者调用[release()](#release9)彻底销毁。 |
2763e41f4b71Sopenharmony_ci|            'released'             | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](#release9)方法后,会进入released状态,结束流程。 |
2764e41f4b71Sopenharmony_ci| 'error' | 错误状态,当**播放引擎**发生**不可逆的错误**(详见[媒体错误码](errorcode-media.md)),则会转换至当前状态,可以调用[reset()](#reset9)重置,也可以调用[release()](#release9)销毁重建。<br/>**注意:** 区分error状态和 [on('error')](#onerror9) :<br/>1、进入error状态时,会触发on('error')监听事件,可以通过on('error')事件获取详细错误信息;<br/>2、处于error状态时,播放服务进入不可播控的状态,要求客户端设计容错机制,使用[reset()](#reset9)重置或者[release()](#release9)销毁重建;<br/>3、如果客户端收到on('error'),但未进入error状态:<br/>原因1:客户端未按状态机调用API或传入参数错误,被AVPlayer拦截提醒,需要客户端调整代码逻辑;<br/>原因2:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 |
2765e41f4b71Sopenharmony_ci
2766e41f4b71Sopenharmony_ci## OnTrackChangeHandler<sup>12+</sup>
2767e41f4b71Sopenharmony_ci
2768e41f4b71Sopenharmony_citype OnTrackChangeHandler = (index: number, isSelected: boolean) => void
2769e41f4b71Sopenharmony_ci
2770e41f4b71Sopenharmony_citrack变更事件回调方法。
2771e41f4b71Sopenharmony_ci
2772e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2773e41f4b71Sopenharmony_ci
2774e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2775e41f4b71Sopenharmony_ci
2776e41f4b71Sopenharmony_ci| 参数名   | 类型   | 必填 | 说明                                                         |
2777e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ---------------------------------------------------------- |
2778e41f4b71Sopenharmony_ci| index  | number | 是 | 当前选中的track索引。     |
2779e41f4b71Sopenharmony_ci| isSelected | boolean | 是 | 当前索引的选中状态。 |
2780e41f4b71Sopenharmony_ci
2781e41f4b71Sopenharmony_ci## OnAVPlayerStateChangeHandle<sup>12+</sup>
2782e41f4b71Sopenharmony_ci
2783e41f4b71Sopenharmony_citype OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void
2784e41f4b71Sopenharmony_ci
2785e41f4b71Sopenharmony_ci状态机切换事件回调方法。
2786e41f4b71Sopenharmony_ci
2787e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2788e41f4b71Sopenharmony_ci
2789e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2790e41f4b71Sopenharmony_ci
2791e41f4b71Sopenharmony_ci| 参数名   | 类型   | 必填 | 说明                                                         |
2792e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ---------------------------------------------------------- |
2793e41f4b71Sopenharmony_ci| state  | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。     |
2794e41f4b71Sopenharmony_ci| reason | [StateChangeReason](#statechangereason9) | 是 | 当前播放状态的切换原因。 |
2795e41f4b71Sopenharmony_ci
2796e41f4b71Sopenharmony_ci## OnBufferingUpdateHandler<sup>12+</sup>
2797e41f4b71Sopenharmony_ci
2798e41f4b71Sopenharmony_citype OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void
2799e41f4b71Sopenharmony_ci
2800e41f4b71Sopenharmony_ci播放缓存事件回调方法。
2801e41f4b71Sopenharmony_ci
2802e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2803e41f4b71Sopenharmony_ci
2804e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2805e41f4b71Sopenharmony_ci
2806e41f4b71Sopenharmony_ci| 参数名   | 类型   | 必填 | 说明                                                         |
2807e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ |
2808e41f4b71Sopenharmony_ci| infoType  | [BufferingInfoType](#bufferinginfotype8) | 是 | 缓存时间类型。     |
2809e41f4b71Sopenharmony_ci| value | number | 是 | value值固定为0。 |
2810e41f4b71Sopenharmony_ci
2811e41f4b71Sopenharmony_ci## OnVideoSizeChangeHandler<sup>12+</sup>
2812e41f4b71Sopenharmony_ci
2813e41f4b71Sopenharmony_citype OnVideoSizeChangeHandler = (width: number, height: number) => void
2814e41f4b71Sopenharmony_ci
2815e41f4b71Sopenharmony_ci视频播放宽高变化事件回调方法。
2816e41f4b71Sopenharmony_ci
2817e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2818e41f4b71Sopenharmony_ci
2819e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2820e41f4b71Sopenharmony_ci
2821e41f4b71Sopenharmony_ci| 参数名   | 类型   | 必填 | 说明                                                         |
2822e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ |
2823e41f4b71Sopenharmony_ci| width  | number | 是 | 视频宽度。     |
2824e41f4b71Sopenharmony_ci| height | number | 是 | 视频高度。 |
2825e41f4b71Sopenharmony_ci
2826e41f4b71Sopenharmony_ci## AVFileDescriptor<sup>9+</sup>
2827e41f4b71Sopenharmony_ci
2828e41f4b71Sopenharmony_ci音视频文件资源描述,一种特殊资源的播放方式,使用场景:应用中的音频资源被连续存储在同一个文件中,需要根据偏移量和长度进行播放。
2829e41f4b71Sopenharmony_ci
2830e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2831e41f4b71Sopenharmony_ci
2832e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2833e41f4b71Sopenharmony_ci
2834e41f4b71Sopenharmony_ci| 名称   | 类型   | 必填 | 说明                                                         |
2835e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2836e41f4b71Sopenharmony_ci| fd     | number | 是   | 资源句柄,通过[resourceManager.getRawFd](../apis-localization-kit/js-apis-resource-manager.md#getrawfd9)获取,也可以通过[fs.open](../apis-core-file-kit/js-apis-file-fs.md#fsopen)获取。    |
2837e41f4b71Sopenharmony_ci| offset | number | 否   | 资源偏移量,默认值为0,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
2838e41f4b71Sopenharmony_ci| length | number | 否   | 资源长度,默认值为文件中从偏移量开始的剩余字节,需要基于预置资源的信息输入,非法值会造成音视频资源解析错误。 |
2839e41f4b71Sopenharmony_ci
2840e41f4b71Sopenharmony_ci## AVDataSrcDescriptor<sup>10+</sup>
2841e41f4b71Sopenharmony_ci
2842e41f4b71Sopenharmony_ci音视频文件资源描述,用于DataSource播放方式,使用场景:应用在未获取完整音视频资源时,允许用户创建播放实例并开始播放,达到提前播放的目的。
2843e41f4b71Sopenharmony_ci
2844e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2845e41f4b71Sopenharmony_ci
2846e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
2847e41f4b71Sopenharmony_ci
2848e41f4b71Sopenharmony_ci| 名称   | 类型   | 必填 | 说明                                                         |
2849e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2850e41f4b71Sopenharmony_ci| fileSize     | number | 是   | 待播放文件大小(字节),-1代表大小未知。如果fileSize设置为-1, 播放模式类似于直播,不能进行seek及setSpeed操作,不能设置loop属性,因此不能重新播放。 |
2851e41f4b71Sopenharmony_ci| callback | (buffer: ArrayBuffer, length: number, pos?: number) => number | 是   | 用户设置的回调函数,用于填写数据。<br>- 函数列式:callback: (buffer: ArrayBuffer, length: number, pos?:number) => number;<br>- buffer,ArrayBuffer类型,表示被填写的内存,必选。<br>- length,number类型,表示被填写内存的最大长度,必选。<br>- pos,number类型,表示填写的数据在资源文件中的位置,可选,当fileSize设置为-1时,该参数禁止被使用。 <br>- 返回值,number类型,返回要填充数据的长度。 |
2852e41f4b71Sopenharmony_ci
2853e41f4b71Sopenharmony_ci## SubtitleInfo<sup>12+</sup>
2854e41f4b71Sopenharmony_ci
2855e41f4b71Sopenharmony_ci外挂字幕信息,使用场景:订阅外挂字幕事件,回调返回外挂字幕详细信息。
2856e41f4b71Sopenharmony_ci
2857e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2858e41f4b71Sopenharmony_ci
2859e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2860e41f4b71Sopenharmony_ci
2861e41f4b71Sopenharmony_ci| 名称   | 类型   | 必填 | 说明                                                         |
2862e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
2863e41f4b71Sopenharmony_ci| text | string | 否  | 字幕文本信息。 |
2864e41f4b71Sopenharmony_ci| startTime | number | 否  | 显示当前字幕文本的开始时间(单位:毫秒)。 |
2865e41f4b71Sopenharmony_ci| duration | number | 否 | 显示当前字幕文本的持续时间(单位:毫秒)。 |
2866e41f4b71Sopenharmony_ci
2867e41f4b71Sopenharmony_ci## SeekMode<sup>8+</sup>
2868e41f4b71Sopenharmony_ci
2869e41f4b71Sopenharmony_ci视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。
2870e41f4b71Sopenharmony_ci
2871e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2872e41f4b71Sopenharmony_ci
2873e41f4b71Sopenharmony_ci| 名称           | 值   | 说明                                                         |
2874e41f4b71Sopenharmony_ci| -------------- | ---- | ------------------------------------------------------------ |
2875e41f4b71Sopenharmony_ci| SEEK_NEXT_SYNC | 0    | 表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2876e41f4b71Sopenharmony_ci| SEEK_PREV_SYNC | 1    | 表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
2877e41f4b71Sopenharmony_ci| SEEK_CLOSEST<sup>12+</sup> | 2    | 表示跳转到距离指定时间点最近的帧,建议精准跳转进度的时候用这个枚举值。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2878e41f4b71Sopenharmony_ci
2879e41f4b71Sopenharmony_ci## SwitchMode<sup>12+</sup>
2880e41f4b71Sopenharmony_ci
2881e41f4b71Sopenharmony_ci视频播放的selectTrack模式枚举,可通过selectTrack方法作为参数传递下去,当前仅DASH协议视频轨支持该扩展参数。
2882e41f4b71Sopenharmony_ci
2883e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2884e41f4b71Sopenharmony_ci
2885e41f4b71Sopenharmony_ci| 名称           | 值   | 说明                                                         |
2886e41f4b71Sopenharmony_ci| -------------- | ---- | ------------------------------------------------------------ |
2887e41f4b71Sopenharmony_ci| SMOOTH | 0    | 表示切换后视频平滑播放,该模式切换存在延迟,不会立即生效。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2888e41f4b71Sopenharmony_ci| SEGMENT | 1    | 表示切换后从当前分片开始位置播放,该模式立即切换,会有重复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2889e41f4b71Sopenharmony_ci| CLOSEST | 2    | 表示从距离当前播放时间点最近的帧开始播放,该模式立即切换,切换后会卡住3到5s,然后恢复播放。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2890e41f4b71Sopenharmony_ci
2891e41f4b71Sopenharmony_ci## PlaybackSpeed<sup>8+</sup>
2892e41f4b71Sopenharmony_ci
2893e41f4b71Sopenharmony_ci视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。
2894e41f4b71Sopenharmony_ci
2895e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2896e41f4b71Sopenharmony_ci
2897e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
2898e41f4b71Sopenharmony_ci
2899e41f4b71Sopenharmony_ci| 名称                 | 值   | 说明                           |
2900e41f4b71Sopenharmony_ci| -------------------- | ---- | ------------------------------ |
2901e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_75_X | 0    | 表示视频播放正常播速的0.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2902e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_00_X | 1    | 表示视频播放正常播速。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。         |
2903e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_25_X | 2    | 表示视频播放正常播速的1.25倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2904e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_75_X | 3    | 表示视频播放正常播速的1.75倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2905e41f4b71Sopenharmony_ci| SPEED_FORWARD_2_00_X | 4    | 表示视频播放正常播速的2.00倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2906e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_50_X<sup>12+</sup> | 5    | 表示视频播放正常播速的0.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2907e41f4b71Sopenharmony_ci| SPEED_FORWARD_1_50_X<sup>12+</sup> | 6    | 表示视频播放正常播速的1.50倍。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
2908e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_25_X<sup>12+</sup> | 8    | 表示视频播放正常播速的0.25倍。 |
2909e41f4b71Sopenharmony_ci| SPEED_FORWARD_0_125_X<sup>12+</sup> | 9    | 表示视频播放正常播速的0.125倍。 |
2910e41f4b71Sopenharmony_ci
2911e41f4b71Sopenharmony_ci## VideoScaleType<sup>9+</sup>
2912e41f4b71Sopenharmony_ci
2913e41f4b71Sopenharmony_ci枚举,视频缩放模式。
2914e41f4b71Sopenharmony_ci
2915e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
2916e41f4b71Sopenharmony_ci
2917e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
2918e41f4b71Sopenharmony_ci
2919e41f4b71Sopenharmony_ci| 名称                      | 值   | 说明                                             |
2920e41f4b71Sopenharmony_ci| ------------------------- | ---- | ------------------------------------------------ |
2921e41f4b71Sopenharmony_ci| VIDEO_SCALE_TYPE_FIT      | 0    | 默认比例类型,视频拉伸至与窗口等大。              |
2922e41f4b71Sopenharmony_ci| VIDEO_SCALE_TYPE_FIT_CROP | 1    | 保持视频宽高比拉伸至填满窗口,内容可能会有裁剪。 |
2923e41f4b71Sopenharmony_ci
2924e41f4b71Sopenharmony_ci## MediaDescription<sup>8+</sup>
2925e41f4b71Sopenharmony_ci
2926e41f4b71Sopenharmony_ci通过key-value方式获取媒体信息。
2927e41f4b71Sopenharmony_ci
2928e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
2929e41f4b71Sopenharmony_ci
2930e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2931e41f4b71Sopenharmony_ci
2932e41f4b71Sopenharmony_ci| 名称          | 类型   | 必填 | 说明                                                         |
2933e41f4b71Sopenharmony_ci| ------------- | ------ | ---- | ------------------------------------------------------------ |
2934e41f4b71Sopenharmony_ci| [key: string] | Object | 是   | 该键值对支持的key取值范围,请参考[MediaDescriptionKey](#mediadescriptionkey8);每个key值的Object类型和范围,请参考[MediaDescriptionKey](#mediadescriptionkey8)对应Key值的说明 |
2935e41f4b71Sopenharmony_ci
2936e41f4b71Sopenharmony_ci**示例:**
2937e41f4b71Sopenharmony_ci
2938e41f4b71Sopenharmony_ci```ts
2939e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
2940e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
2941e41f4b71Sopenharmony_ci
2942e41f4b71Sopenharmony_cifunction printfItemDescription(obj: media.MediaDescription, key: string) {
2943e41f4b71Sopenharmony_ci  let property: Object = obj[key];
2944e41f4b71Sopenharmony_ci  console.info('audio key is ' + key); // 通过key值获取对应的value。key值具体可见[MediaDescriptionKey]
2945e41f4b71Sopenharmony_ci  console.info('audio value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[MediaDescriptionKey]
2946e41f4b71Sopenharmony_ci}
2947e41f4b71Sopenharmony_ci
2948e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined;
2949e41f4b71Sopenharmony_cimedia.createAVPlayer((err: BusinessError, player: media.AVPlayer) => {
2950e41f4b71Sopenharmony_ci  if(player != null) {
2951e41f4b71Sopenharmony_ci    avPlayer = player;
2952e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVPlayer`);
2953e41f4b71Sopenharmony_ci    avPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
2954e41f4b71Sopenharmony_ci      if (arrList != null) {
2955e41f4b71Sopenharmony_ci        for (let i = 0; i < arrList.length; i++) {
2956e41f4b71Sopenharmony_ci          printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE);  //打印出每条轨道MD_KEY_TRACK_TYPE的值
2957e41f4b71Sopenharmony_ci        }
2958e41f4b71Sopenharmony_ci      } else {
2959e41f4b71Sopenharmony_ci        console.error(`Failed to get TrackDescription, error:${error}`);
2960e41f4b71Sopenharmony_ci      }
2961e41f4b71Sopenharmony_ci    });
2962e41f4b71Sopenharmony_ci  } else {
2963e41f4b71Sopenharmony_ci    console.error(`Failed to create AVPlayer, error message:${err.message}`);
2964e41f4b71Sopenharmony_ci  }
2965e41f4b71Sopenharmony_ci});
2966e41f4b71Sopenharmony_ci```
2967e41f4b71Sopenharmony_ci
2968e41f4b71Sopenharmony_ci## PlaybackInfo<sup>12+</sup>
2969e41f4b71Sopenharmony_ci
2970e41f4b71Sopenharmony_ci通过key-value方式获取播放信息。
2971e41f4b71Sopenharmony_ci
2972e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
2973e41f4b71Sopenharmony_ci
2974e41f4b71Sopenharmony_ci| 名称          | 类型   | 必填 | 说明                                                         |
2975e41f4b71Sopenharmony_ci| ------------- | ------ | ---- | ------------------------------------------------------------ |
2976e41f4b71Sopenharmony_ci| [key: string] | Object | 是   | 该键值对支持的key取值范围,请参考[PlaybackInfoKey](#playbackinfokey12);每个key值的Object类型和范围,请参考[PlaybackInfoKey](#playbackinfokey12)对应Key值的说明。 |
2977e41f4b71Sopenharmony_ci
2978e41f4b71Sopenharmony_ci**示例:**
2979e41f4b71Sopenharmony_ci
2980e41f4b71Sopenharmony_ci```ts
2981e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
2982e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
2983e41f4b71Sopenharmony_ci
2984e41f4b71Sopenharmony_cifunction printfPlaybackInfo(obj: media.PlaybackInfo, key: string) {
2985e41f4b71Sopenharmony_ci  let property: Object = obj[key];
2986e41f4b71Sopenharmony_ci  console.info('key is ' + key); // 通过key值获取对应的value。key值具体可见[PlaybackInfoKey]
2987e41f4b71Sopenharmony_ci  console.info('value is ' + property); //对应key值得value。其类型可为任意类型,具体key对应value的类型可参考[PlaybackInfoKey]
2988e41f4b71Sopenharmony_ci}
2989e41f4b71Sopenharmony_ci
2990e41f4b71Sopenharmony_cilet avPlayer: media.AVPlayer | undefined = undefined;
2991e41f4b71Sopenharmony_cilet playbackInfo: media.PlaybackInfo | undefined = undefined;
2992e41f4b71Sopenharmony_cimedia.createAVPlayer(async (err: BusinessError, player: media.AVPlayer) => {
2993e41f4b71Sopenharmony_ci  if (player != null) {
2994e41f4b71Sopenharmony_ci    avPlayer = player;
2995e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVPlayer`);
2996e41f4b71Sopenharmony_ci    if (avPlayer) {
2997e41f4b71Sopenharmony_ci      try {
2998e41f4b71Sopenharmony_ci        playbackInfo = await avPlayer.getPlaybackInfo();
2999e41f4b71Sopenharmony_ci        console.info(`AVPlayer getPlaybackInfo = ${JSON.stringify(playbackInfo)}`); // 打印整个PlaybackInfo的值
3000e41f4b71Sopenharmony_ci        printfPlaybackInfo(playbackInfo, media.PlaybackInfoKey.SERVER_IP_ADDRESS); // 打印ip的值
3001e41f4b71Sopenharmony_ci      } catch (error) {
3002e41f4b71Sopenharmony_ci        console.error(`error = ${error}`);
3003e41f4b71Sopenharmony_ci      }
3004e41f4b71Sopenharmony_ci    }
3005e41f4b71Sopenharmony_ci  } else {
3006e41f4b71Sopenharmony_ci    console.error(`Failed to create AVPlayer, error message:${err.message}`);
3007e41f4b71Sopenharmony_ci  }
3008e41f4b71Sopenharmony_ci});
3009e41f4b71Sopenharmony_ci```
3010e41f4b71Sopenharmony_ci
3011e41f4b71Sopenharmony_ci## AVRecorder<sup>9+</sup>
3012e41f4b71Sopenharmony_ci
3013e41f4b71Sopenharmony_ci音视频录制管理类,用于音视频媒体录制。在调用AVRecorder的方法前,需要先通过[createAVRecorder()](#mediacreateavrecorder9)构建一个AVRecorder实例。
3014e41f4b71Sopenharmony_ci
3015e41f4b71Sopenharmony_ci音视频录制demo可参考:[音频录制开发指导](../../media/media/using-avrecorder-for-recording.md)、[视频录制开发指导](../../media/media/video-recording.md)。
3016e41f4b71Sopenharmony_ci
3017e41f4b71Sopenharmony_ci> **说明:**
3018e41f4b71Sopenharmony_ci>
3019e41f4b71Sopenharmony_ci> 使用相机进行视频录制时,需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3020e41f4b71Sopenharmony_ci
3021e41f4b71Sopenharmony_ci### 属性
3022e41f4b71Sopenharmony_ci
3023e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3024e41f4b71Sopenharmony_ci
3025e41f4b71Sopenharmony_ci| 名称    | 类型                                 | 只读 | 可选 | 说明               |
3026e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | ---- | ------------------ |
3027e41f4b71Sopenharmony_ci| state9+ | [AVRecorderState](#avrecorderstate9) | 是   | 否   | 音视频录制的状态。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
3028e41f4b71Sopenharmony_ci
3029e41f4b71Sopenharmony_ci### prepare<sup>9+</sup>
3030e41f4b71Sopenharmony_ci
3031e41f4b71Sopenharmony_ciprepare(config: AVRecorderConfig, callback: AsyncCallback\<void>): void
3032e41f4b71Sopenharmony_ci
3033e41f4b71Sopenharmony_ci异步方式进行音视频录制的参数设置。通过注册回调函数获取返回值。
3034e41f4b71Sopenharmony_ci
3035e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE
3036e41f4b71Sopenharmony_ci
3037e41f4b71Sopenharmony_ci不涉及音频录制时,可以不需要获取ohos.permission.MICROPHONE权限。
3038e41f4b71Sopenharmony_ci
3039e41f4b71Sopenharmony_ci使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3040e41f4b71Sopenharmony_ci
3041e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3042e41f4b71Sopenharmony_ci
3043e41f4b71Sopenharmony_ci**参数:**
3044e41f4b71Sopenharmony_ci
3045e41f4b71Sopenharmony_ci| 参数名   | 类型                                   | 必填 | 说明                                  |
3046e41f4b71Sopenharmony_ci| -------- | -------------------------------------- | ---- | ------------------------------------- |
3047e41f4b71Sopenharmony_ci| config   | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。            |
3048e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void>                   | 是   | 回调函数。当prepare方法成功,err为undefined,否则为错误对象。 |
3049e41f4b71Sopenharmony_ci
3050e41f4b71Sopenharmony_ci**错误码:**
3051e41f4b71Sopenharmony_ci
3052e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3053e41f4b71Sopenharmony_ci
3054e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3055e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3056e41f4b71Sopenharmony_ci| 201      | Permission denied. Return by callback.  |
3057e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.    |
3058e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3059e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3060e41f4b71Sopenharmony_ci
3061e41f4b71Sopenharmony_ci**示例:**
3062e41f4b71Sopenharmony_ci
3063e41f4b71Sopenharmony_ci```ts
3064e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3065e41f4b71Sopenharmony_ci
3066e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准
3067e41f4b71Sopenharmony_cilet avRecorderProfile: media.AVRecorderProfile = {
3068e41f4b71Sopenharmony_ci  audioBitrate : 48000,
3069e41f4b71Sopenharmony_ci  audioChannels : 2,
3070e41f4b71Sopenharmony_ci  audioCodec : media.CodecMimeType.AUDIO_AAC,
3071e41f4b71Sopenharmony_ci  audioSampleRate : 48000,
3072e41f4b71Sopenharmony_ci  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
3073e41f4b71Sopenharmony_ci  videoBitrate : 2000000,
3074e41f4b71Sopenharmony_ci  videoCodec : media.CodecMimeType.VIDEO_AVC,
3075e41f4b71Sopenharmony_ci  videoFrameWidth : 640,
3076e41f4b71Sopenharmony_ci  videoFrameHeight : 480,
3077e41f4b71Sopenharmony_ci  videoFrameRate : 30
3078e41f4b71Sopenharmony_ci}
3079e41f4b71Sopenharmony_cilet avRecorderConfig: media.AVRecorderConfig = {
3080e41f4b71Sopenharmony_ci  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
3081e41f4b71Sopenharmony_ci  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
3082e41f4b71Sopenharmony_ci  profile : avRecorderProfile,
3083e41f4b71Sopenharmony_ci  url : 'fd://', // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
3084e41f4b71Sopenharmony_ci  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口将报错
3085e41f4b71Sopenharmony_ci  location : { latitude : 30, longitude : 130 }
3086e41f4b71Sopenharmony_ci}
3087e41f4b71Sopenharmony_ci
3088e41f4b71Sopenharmony_ciavRecorder.prepare(avRecorderConfig, (err: BusinessError) => {
3089e41f4b71Sopenharmony_ci  if (err) {
3090e41f4b71Sopenharmony_ci    console.error('Failed to prepare and error is ' + err.message);
3091e41f4b71Sopenharmony_ci  } else {
3092e41f4b71Sopenharmony_ci    console.info('Succeeded in preparing');
3093e41f4b71Sopenharmony_ci  }
3094e41f4b71Sopenharmony_ci})
3095e41f4b71Sopenharmony_ci```
3096e41f4b71Sopenharmony_ci
3097e41f4b71Sopenharmony_ci### prepare<sup>9+</sup>
3098e41f4b71Sopenharmony_ci
3099e41f4b71Sopenharmony_ciprepare(config: AVRecorderConfig): Promise\<void>
3100e41f4b71Sopenharmony_ci
3101e41f4b71Sopenharmony_ci异步方式进行音视频录制的参数设置。通过Promise获取返回值。
3102e41f4b71Sopenharmony_ci
3103e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE
3104e41f4b71Sopenharmony_ci
3105e41f4b71Sopenharmony_ci不涉及音频录制时,可以不需要获ohos.permission.MICROPHONE权限。
3106e41f4b71Sopenharmony_ci
3107e41f4b71Sopenharmony_ci使用相机视频录制还需要与相机模块配合,相机模块接口的使用详情见[相机管理](../apis-camera-kit/js-apis-camera.md)。
3108e41f4b71Sopenharmony_ci
3109e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3110e41f4b71Sopenharmony_ci
3111e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3112e41f4b71Sopenharmony_ci
3113e41f4b71Sopenharmony_ci**参数:**
3114e41f4b71Sopenharmony_ci
3115e41f4b71Sopenharmony_ci| 参数名 | 类型                                   | 必填 | 说明                       |
3116e41f4b71Sopenharmony_ci| ------ | -------------------------------------- | ---- | -------------------------- |
3117e41f4b71Sopenharmony_ci| config | [AVRecorderConfig](#avrecorderconfig9) | 是   | 配置音视频录制的相关参数。 |
3118e41f4b71Sopenharmony_ci
3119e41f4b71Sopenharmony_ci**返回值:**
3120e41f4b71Sopenharmony_ci
3121e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
3122e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
3123e41f4b71Sopenharmony_ci| Promise\<void> | 异步音视频录制prepare方法的Promise返回值。 |
3124e41f4b71Sopenharmony_ci
3125e41f4b71Sopenharmony_ci**错误码:**
3126e41f4b71Sopenharmony_ci
3127e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3128e41f4b71Sopenharmony_ci
3129e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3130e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3131e41f4b71Sopenharmony_ci| 201      | Permission denied. Return by promise.  |
3132e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.    |
3133e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3134e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3135e41f4b71Sopenharmony_ci
3136e41f4b71Sopenharmony_ci**示例:**
3137e41f4b71Sopenharmony_ci
3138e41f4b71Sopenharmony_ci```ts
3139e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3140e41f4b71Sopenharmony_ci
3141e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准
3142e41f4b71Sopenharmony_cilet avRecorderProfile: media.AVRecorderProfile = {
3143e41f4b71Sopenharmony_ci  audioBitrate : 48000,
3144e41f4b71Sopenharmony_ci  audioChannels : 2,
3145e41f4b71Sopenharmony_ci  audioCodec : media.CodecMimeType.AUDIO_AAC,
3146e41f4b71Sopenharmony_ci  audioSampleRate : 48000,
3147e41f4b71Sopenharmony_ci  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
3148e41f4b71Sopenharmony_ci  videoBitrate : 2000000,
3149e41f4b71Sopenharmony_ci  videoCodec : media.CodecMimeType.VIDEO_AVC,
3150e41f4b71Sopenharmony_ci  videoFrameWidth : 640,
3151e41f4b71Sopenharmony_ci  videoFrameHeight : 480,
3152e41f4b71Sopenharmony_ci  videoFrameRate : 30
3153e41f4b71Sopenharmony_ci}
3154e41f4b71Sopenharmony_cilet avRecorderConfig: media.AVRecorderConfig = {
3155e41f4b71Sopenharmony_ci  audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
3156e41f4b71Sopenharmony_ci  videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
3157e41f4b71Sopenharmony_ci  profile : avRecorderProfile,
3158e41f4b71Sopenharmony_ci  url : 'fd://',  // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45
3159e41f4b71Sopenharmony_ci  rotation : 0, // 合理值0、90、180、270,非合理值prepare接口报错
3160e41f4b71Sopenharmony_ci  location : { latitude : 30, longitude : 130 }
3161e41f4b71Sopenharmony_ci}
3162e41f4b71Sopenharmony_ci
3163e41f4b71Sopenharmony_ciavRecorder.prepare(avRecorderConfig).then(() => {
3164e41f4b71Sopenharmony_ci  console.info('Succeeded in preparing');
3165e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3166e41f4b71Sopenharmony_ci  console.error('Failed to prepare and catch error is ' + err.message);
3167e41f4b71Sopenharmony_ci});
3168e41f4b71Sopenharmony_ci```
3169e41f4b71Sopenharmony_ci
3170e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup>
3171e41f4b71Sopenharmony_ci
3172e41f4b71Sopenharmony_cigetInputSurface(callback: AsyncCallback\<string>): void
3173e41f4b71Sopenharmony_ci
3174e41f4b71Sopenharmony_ci异步方式获得录制需要的surface。通过注册回调函数获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
3175e41f4b71Sopenharmony_ci
3176e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
3177e41f4b71Sopenharmony_ci
3178e41f4b71Sopenharmony_ci需在[prepare()](#prepare9-2)事件成功触发后,才能调用getInputSurface()方法。
3179e41f4b71Sopenharmony_ci
3180e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3181e41f4b71Sopenharmony_ci
3182e41f4b71Sopenharmony_ci**参数:**
3183e41f4b71Sopenharmony_ci
3184e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                        |
3185e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- |
3186e41f4b71Sopenharmony_ci| callback | AsyncCallback\<string> | 是   | 回调函数。当获取surface成功,err为undefined,data为获取到的surfaceId,否则为错误对象。 |
3187e41f4b71Sopenharmony_ci
3188e41f4b71Sopenharmony_ci**错误码:**
3189e41f4b71Sopenharmony_ci
3190e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3191e41f4b71Sopenharmony_ci
3192e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3193e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3194e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3195e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.           |
3196e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3197e41f4b71Sopenharmony_ci
3198e41f4b71Sopenharmony_ci**示例:**
3199e41f4b71Sopenharmony_ci
3200e41f4b71Sopenharmony_ci```ts
3201e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3202e41f4b71Sopenharmony_cilet surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
3203e41f4b71Sopenharmony_ci
3204e41f4b71Sopenharmony_ciavRecorder.getInputSurface((err: BusinessError, surfaceId: string) => {
3205e41f4b71Sopenharmony_ci  if (err) {
3206e41f4b71Sopenharmony_ci    console.error('Failed to do getInputSurface and error is ' + err.message);
3207e41f4b71Sopenharmony_ci  } else {
3208e41f4b71Sopenharmony_ci    console.info('Succeeded in doing getInputSurface');
3209e41f4b71Sopenharmony_ci    surfaceID = surfaceId;
3210e41f4b71Sopenharmony_ci  }
3211e41f4b71Sopenharmony_ci});
3212e41f4b71Sopenharmony_ci
3213e41f4b71Sopenharmony_ci```
3214e41f4b71Sopenharmony_ci
3215e41f4b71Sopenharmony_ci### getInputSurface<sup>9+</sup>
3216e41f4b71Sopenharmony_ci
3217e41f4b71Sopenharmony_cigetInputSurface(): Promise\<string>
3218e41f4b71Sopenharmony_ci
3219e41f4b71Sopenharmony_ci异步方式获得录制需要的surface。通过Promise获取返回值。此surface提供给调用者,调用者从此surface中获取surfaceBuffer,填入相应的视频数据。
3220e41f4b71Sopenharmony_ci
3221e41f4b71Sopenharmony_ci应当注意,填入的视频数据需要携带时间戳(单位ns)和buffersize。时间戳的起始时间请以系统启动时间为基准。
3222e41f4b71Sopenharmony_ci
3223e41f4b71Sopenharmony_ci需在[prepare()](#prepare9-3)事件成功触发后,才能调用getInputSurface方法。
3224e41f4b71Sopenharmony_ci
3225e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3226e41f4b71Sopenharmony_ci
3227e41f4b71Sopenharmony_ci**返回值:**
3228e41f4b71Sopenharmony_ci
3229e41f4b71Sopenharmony_ci| 类型             | 说明                             |
3230e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- |
3231e41f4b71Sopenharmony_ci| Promise\<string> | 异步获得surface的Promise返回值。 |
3232e41f4b71Sopenharmony_ci
3233e41f4b71Sopenharmony_ci**错误码:**
3234e41f4b71Sopenharmony_ci
3235e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3236e41f4b71Sopenharmony_ci
3237e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3238e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3239e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3240e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3241e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3242e41f4b71Sopenharmony_ci
3243e41f4b71Sopenharmony_ci**示例:**
3244e41f4b71Sopenharmony_ci
3245e41f4b71Sopenharmony_ci```ts
3246e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3247e41f4b71Sopenharmony_cilet surfaceID: string; // 该surfaceID用于传递给相机接口创造videoOutput
3248e41f4b71Sopenharmony_ci
3249e41f4b71Sopenharmony_ciavRecorder.getInputSurface().then((surfaceId: string) => {
3250e41f4b71Sopenharmony_ci  console.info('Succeeded in getting InputSurface');
3251e41f4b71Sopenharmony_ci  surfaceID = surfaceId;
3252e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3253e41f4b71Sopenharmony_ci  console.error('Failed to get InputSurface and catch error is ' + err.message);
3254e41f4b71Sopenharmony_ci});
3255e41f4b71Sopenharmony_ci```
3256e41f4b71Sopenharmony_ci
3257e41f4b71Sopenharmony_ci### updateRotation<sup>12+</sup>
3258e41f4b71Sopenharmony_ci
3259e41f4b71Sopenharmony_ciupdateRotation(rotation: number): Promise\<void>
3260e41f4b71Sopenharmony_ci
3261e41f4b71Sopenharmony_ci更新视频旋转角度。通过Promise获取返回值。
3262e41f4b71Sopenharmony_ci
3263e41f4b71Sopenharmony_ci当且仅当[prepare()](#prepare9-3)事件成功触发后,且在[start()](#start9)之前,才能调用updateRotation方法。
3264e41f4b71Sopenharmony_ci
3265e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3266e41f4b71Sopenharmony_ci
3267e41f4b71Sopenharmony_ci**参数:**
3268e41f4b71Sopenharmony_ci
3269e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                        |
3270e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | --------------------------- |
3271e41f4b71Sopenharmony_ci| rotation | number | 是   | 旋转角度,取值仅支持0、90、180、270度。 |
3272e41f4b71Sopenharmony_ci
3273e41f4b71Sopenharmony_ci**返回值:**
3274e41f4b71Sopenharmony_ci
3275e41f4b71Sopenharmony_ci| 类型             | 说明                             |
3276e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- |
3277e41f4b71Sopenharmony_ci| Promise\<void> | 异步返回函数执行结果。 |
3278e41f4b71Sopenharmony_ci
3279e41f4b71Sopenharmony_ci**错误码:**
3280e41f4b71Sopenharmony_ci
3281e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
3282e41f4b71Sopenharmony_ci
3283e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3284e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3285e41f4b71Sopenharmony_ci|   401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.   |
3286e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
3287e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3288e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3289e41f4b71Sopenharmony_ci
3290e41f4b71Sopenharmony_ci**示例:**
3291e41f4b71Sopenharmony_ci
3292e41f4b71Sopenharmony_ci```ts
3293e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3294e41f4b71Sopenharmony_ci
3295e41f4b71Sopenharmony_cilet rotation = 90
3296e41f4b71Sopenharmony_ci
3297e41f4b71Sopenharmony_ciavRecorder.updateRotation(rotation).then(() => {
3298e41f4b71Sopenharmony_ci  console.info('Succeeded in updateRotation');
3299e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3300e41f4b71Sopenharmony_ci  console.error('Failed to updateRotation and catch error is ' + err.message);
3301e41f4b71Sopenharmony_ci});
3302e41f4b71Sopenharmony_ci```
3303e41f4b71Sopenharmony_ci
3304e41f4b71Sopenharmony_ci### start<sup>9+</sup>
3305e41f4b71Sopenharmony_ci
3306e41f4b71Sopenharmony_cistart(callback: AsyncCallback\<void>): void
3307e41f4b71Sopenharmony_ci
3308e41f4b71Sopenharmony_ci异步方式开始视频录制。通过注册回调函数获取返回值。
3309e41f4b71Sopenharmony_ci
3310e41f4b71Sopenharmony_ci纯音频录制需在[prepare()](#prepare9-2)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9)事件成功触发后,才能调用start方法。
3311e41f4b71Sopenharmony_ci
3312e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3313e41f4b71Sopenharmony_ci
3314e41f4b71Sopenharmony_ci**参数:**
3315e41f4b71Sopenharmony_ci
3316e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                         |
3317e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- |
3318e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   |回调函数。当开始录制视频成功,err为undefined,否则为错误对象。 |
3319e41f4b71Sopenharmony_ci
3320e41f4b71Sopenharmony_ci**错误码:**
3321e41f4b71Sopenharmony_ci
3322e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3323e41f4b71Sopenharmony_ci
3324e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3325e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3326e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3327e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.           |
3328e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3329e41f4b71Sopenharmony_ci
3330e41f4b71Sopenharmony_ci**示例:**
3331e41f4b71Sopenharmony_ci
3332e41f4b71Sopenharmony_ci```ts
3333e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3334e41f4b71Sopenharmony_ci
3335e41f4b71Sopenharmony_ciavRecorder.start((err: BusinessError) => {
3336e41f4b71Sopenharmony_ci  if (err) {
3337e41f4b71Sopenharmony_ci    console.error('Failed to start AVRecorder and error is ' + err.message);
3338e41f4b71Sopenharmony_ci  } else {
3339e41f4b71Sopenharmony_ci    console.info('Succeeded in starting AVRecorder');
3340e41f4b71Sopenharmony_ci  }
3341e41f4b71Sopenharmony_ci});
3342e41f4b71Sopenharmony_ci```
3343e41f4b71Sopenharmony_ci
3344e41f4b71Sopenharmony_ci### start<sup>9+</sup>
3345e41f4b71Sopenharmony_ci
3346e41f4b71Sopenharmony_cistart(): Promise\<void>
3347e41f4b71Sopenharmony_ci
3348e41f4b71Sopenharmony_ci异步方式开始视频录制。通过Promise获取返回值。
3349e41f4b71Sopenharmony_ci
3350e41f4b71Sopenharmony_ci纯音频录制需在[prepare()](#prepare9-3)事件成功触发后,才能调用start方法。纯视频录制,音视频录制需在[getInputSurface()](#getinputsurface9-1)事件成功触发后,才能调用start方法。
3351e41f4b71Sopenharmony_ci
3352e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3353e41f4b71Sopenharmony_ci
3354e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3355e41f4b71Sopenharmony_ci
3356e41f4b71Sopenharmony_ci**返回值:**
3357e41f4b71Sopenharmony_ci
3358e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
3359e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
3360e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始视频录制方法的Promise返回值。 |
3361e41f4b71Sopenharmony_ci
3362e41f4b71Sopenharmony_ci**错误码:**
3363e41f4b71Sopenharmony_ci
3364e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3365e41f4b71Sopenharmony_ci
3366e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3367e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3368e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3369e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3370e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3371e41f4b71Sopenharmony_ci
3372e41f4b71Sopenharmony_ci**示例:**
3373e41f4b71Sopenharmony_ci
3374e41f4b71Sopenharmony_ci```ts
3375e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3376e41f4b71Sopenharmony_ci
3377e41f4b71Sopenharmony_ciavRecorder.start().then(() => {
3378e41f4b71Sopenharmony_ci  console.info('Succeeded in starting AVRecorder');
3379e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3380e41f4b71Sopenharmony_ci  console.error('Failed to start AVRecorder and catch error is ' + err.message);
3381e41f4b71Sopenharmony_ci});
3382e41f4b71Sopenharmony_ci```
3383e41f4b71Sopenharmony_ci
3384e41f4b71Sopenharmony_ci### pause<sup>9+</sup>
3385e41f4b71Sopenharmony_ci
3386e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void
3387e41f4b71Sopenharmony_ci
3388e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过注册回调函数获取返回值。
3389e41f4b71Sopenharmony_ci
3390e41f4b71Sopenharmony_ci需要[start()](#start9)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9)接口来恢复录制。
3391e41f4b71Sopenharmony_ci
3392e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3393e41f4b71Sopenharmony_ci
3394e41f4b71Sopenharmony_ci**参数:**
3395e41f4b71Sopenharmony_ci
3396e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                        |
3397e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | --------------------------- |
3398e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当暂停视频录制成功,err为undefined,否则为错误对象。 |
3399e41f4b71Sopenharmony_ci
3400e41f4b71Sopenharmony_ci**错误码:**
3401e41f4b71Sopenharmony_ci
3402e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3403e41f4b71Sopenharmony_ci
3404e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3405e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3406e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3407e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.           |
3408e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3409e41f4b71Sopenharmony_ci
3410e41f4b71Sopenharmony_ci**示例:**
3411e41f4b71Sopenharmony_ci
3412e41f4b71Sopenharmony_ci```ts
3413e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3414e41f4b71Sopenharmony_ci
3415e41f4b71Sopenharmony_ciavRecorder.pause((err: BusinessError) => {
3416e41f4b71Sopenharmony_ci  if (err) {
3417e41f4b71Sopenharmony_ci    console.error('Failed to pause AVRecorder and error is ' + err.message);
3418e41f4b71Sopenharmony_ci  } else {
3419e41f4b71Sopenharmony_ci    console.info('Succeeded in pausing');
3420e41f4b71Sopenharmony_ci  }
3421e41f4b71Sopenharmony_ci});
3422e41f4b71Sopenharmony_ci```
3423e41f4b71Sopenharmony_ci
3424e41f4b71Sopenharmony_ci### pause<sup>9+</sup>
3425e41f4b71Sopenharmony_ci
3426e41f4b71Sopenharmony_cipause(): Promise\<void>
3427e41f4b71Sopenharmony_ci
3428e41f4b71Sopenharmony_ci异步方式暂停视频录制。通过Promise获取返回值。
3429e41f4b71Sopenharmony_ci
3430e41f4b71Sopenharmony_ci需要[start()](#start9-1)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume9-1)接口来恢复录制。
3431e41f4b71Sopenharmony_ci
3432e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3433e41f4b71Sopenharmony_ci
3434e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3435e41f4b71Sopenharmony_ci
3436e41f4b71Sopenharmony_ci**返回值:**
3437e41f4b71Sopenharmony_ci
3438e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
3439e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
3440e41f4b71Sopenharmony_ci| Promise\<void> | 异步暂停视频录制方法的Promise返回值。 |
3441e41f4b71Sopenharmony_ci
3442e41f4b71Sopenharmony_ci**错误码:**
3443e41f4b71Sopenharmony_ci
3444e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3445e41f4b71Sopenharmony_ci
3446e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3447e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3448e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3449e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3450e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3451e41f4b71Sopenharmony_ci
3452e41f4b71Sopenharmony_ci**示例:**
3453e41f4b71Sopenharmony_ci
3454e41f4b71Sopenharmony_ci```ts
3455e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3456e41f4b71Sopenharmony_ci
3457e41f4b71Sopenharmony_ciavRecorder.pause().then(() => {
3458e41f4b71Sopenharmony_ci  console.info('Succeeded in pausing');
3459e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3460e41f4b71Sopenharmony_ci  console.error('Failed to pause AVRecorder and catch error is ' + err.message);
3461e41f4b71Sopenharmony_ci});
3462e41f4b71Sopenharmony_ci```
3463e41f4b71Sopenharmony_ci
3464e41f4b71Sopenharmony_ci### resume<sup>9+</sup>
3465e41f4b71Sopenharmony_ci
3466e41f4b71Sopenharmony_ciresume(callback: AsyncCallback\<void>): void
3467e41f4b71Sopenharmony_ci
3468e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过注册回调函数获取返回值。
3469e41f4b71Sopenharmony_ci
3470e41f4b71Sopenharmony_ci需要在[pause()](#pause9-2)事件成功触发后,才能调用resume方法。
3471e41f4b71Sopenharmony_ci
3472e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3473e41f4b71Sopenharmony_ci
3474e41f4b71Sopenharmony_ci**参数:**
3475e41f4b71Sopenharmony_ci
3476e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                         |
3477e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- |
3478e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当恢复视频录制成功,err为undefined,否则为错误对象。 |
3479e41f4b71Sopenharmony_ci
3480e41f4b71Sopenharmony_ci**错误码:**
3481e41f4b71Sopenharmony_ci
3482e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3483e41f4b71Sopenharmony_ci
3484e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3485e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3486e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3487e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.           |
3488e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3489e41f4b71Sopenharmony_ci
3490e41f4b71Sopenharmony_ci**示例:**
3491e41f4b71Sopenharmony_ci
3492e41f4b71Sopenharmony_ci```ts
3493e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3494e41f4b71Sopenharmony_ci
3495e41f4b71Sopenharmony_ciavRecorder.resume((err: BusinessError) => {
3496e41f4b71Sopenharmony_ci  if (err) {
3497e41f4b71Sopenharmony_ci    console.error('Failed to resume AVRecorder and error is ' + err.message);
3498e41f4b71Sopenharmony_ci  } else {
3499e41f4b71Sopenharmony_ci    console.info('Succeeded in resuming AVRecorder');
3500e41f4b71Sopenharmony_ci  }
3501e41f4b71Sopenharmony_ci});
3502e41f4b71Sopenharmony_ci```
3503e41f4b71Sopenharmony_ci
3504e41f4b71Sopenharmony_ci### resume<sup>9+</sup>
3505e41f4b71Sopenharmony_ci
3506e41f4b71Sopenharmony_ciresume(): Promise\<void>
3507e41f4b71Sopenharmony_ci
3508e41f4b71Sopenharmony_ci异步方式恢复视频录制。通过Promise获取返回值。
3509e41f4b71Sopenharmony_ci
3510e41f4b71Sopenharmony_ci需要在[pause()](#pause9-3)事件成功触发后,才能调用resume方法。
3511e41f4b71Sopenharmony_ci
3512e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3513e41f4b71Sopenharmony_ci
3514e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3515e41f4b71Sopenharmony_ci
3516e41f4b71Sopenharmony_ci**返回值:**
3517e41f4b71Sopenharmony_ci
3518e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
3519e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
3520e41f4b71Sopenharmony_ci| Promise\<void> | 异步恢复视频录制方法的Promise返回值。 |
3521e41f4b71Sopenharmony_ci
3522e41f4b71Sopenharmony_ci**错误码:**
3523e41f4b71Sopenharmony_ci
3524e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3525e41f4b71Sopenharmony_ci
3526e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3527e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3528e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3529e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3530e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3531e41f4b71Sopenharmony_ci
3532e41f4b71Sopenharmony_ci**示例:**
3533e41f4b71Sopenharmony_ci
3534e41f4b71Sopenharmony_ci```ts
3535e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3536e41f4b71Sopenharmony_ci
3537e41f4b71Sopenharmony_ciavRecorder.resume().then(() => {
3538e41f4b71Sopenharmony_ci  console.info('Succeeded in resuming AVRecorder');
3539e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3540e41f4b71Sopenharmony_ci  console.error('Failed to resume  AVRecorder failed and catch error is ' + err.message);
3541e41f4b71Sopenharmony_ci});
3542e41f4b71Sopenharmony_ci```
3543e41f4b71Sopenharmony_ci
3544e41f4b71Sopenharmony_ci### stop<sup>9+</sup>
3545e41f4b71Sopenharmony_ci
3546e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void
3547e41f4b71Sopenharmony_ci
3548e41f4b71Sopenharmony_ci异步方式停止视频录制。通过注册回调函数获取返回值。
3549e41f4b71Sopenharmony_ci
3550e41f4b71Sopenharmony_ci需要在[start()](#start9)或[pause()](#pause9-2)事件成功触发后,才能调用stop方法。
3551e41f4b71Sopenharmony_ci
3552e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
3553e41f4b71Sopenharmony_ci
3554e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3555e41f4b71Sopenharmony_ci
3556e41f4b71Sopenharmony_ci**参数:**
3557e41f4b71Sopenharmony_ci
3558e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                         |
3559e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------- |
3560e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当停止视频录制成功,err为undefined,否则为错误对象。 |
3561e41f4b71Sopenharmony_ci
3562e41f4b71Sopenharmony_ci**错误码:**
3563e41f4b71Sopenharmony_ci
3564e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3565e41f4b71Sopenharmony_ci
3566e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                |
3567e41f4b71Sopenharmony_ci| -------- | --------------------------------------- |
3568e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
3569e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.           |
3570e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.       |
3571e41f4b71Sopenharmony_ci
3572e41f4b71Sopenharmony_ci**示例:**
3573e41f4b71Sopenharmony_ci
3574e41f4b71Sopenharmony_ci```ts
3575e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3576e41f4b71Sopenharmony_ci
3577e41f4b71Sopenharmony_ciavRecorder.stop((err: BusinessError) => {
3578e41f4b71Sopenharmony_ci  if (err) {
3579e41f4b71Sopenharmony_ci    console.error('Failed to stop AVRecorder and error is ' + err.message);
3580e41f4b71Sopenharmony_ci  } else {
3581e41f4b71Sopenharmony_ci    console.info('Succeeded in stopping AVRecorder');
3582e41f4b71Sopenharmony_ci  }
3583e41f4b71Sopenharmony_ci});
3584e41f4b71Sopenharmony_ci```
3585e41f4b71Sopenharmony_ci
3586e41f4b71Sopenharmony_ci### stop<sup>9+</sup>
3587e41f4b71Sopenharmony_ci
3588e41f4b71Sopenharmony_cistop(): Promise\<void>
3589e41f4b71Sopenharmony_ci
3590e41f4b71Sopenharmony_ci异步方式停止视频录制。通过Promise获取返回值。
3591e41f4b71Sopenharmony_ci
3592e41f4b71Sopenharmony_ci需要在[start()](#start9-1)或[pause()](#pause9-3)事件成功触发后,才能调用stop方法。
3593e41f4b71Sopenharmony_ci
3594e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
3595e41f4b71Sopenharmony_ci
3596e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3597e41f4b71Sopenharmony_ci
3598e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3599e41f4b71Sopenharmony_ci
3600e41f4b71Sopenharmony_ci**返回值:**
3601e41f4b71Sopenharmony_ci
3602e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
3603e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
3604e41f4b71Sopenharmony_ci| Promise\<void> | 异步停止视频录制方法的Promise返回值。 |
3605e41f4b71Sopenharmony_ci
3606e41f4b71Sopenharmony_ci**错误码:**
3607e41f4b71Sopenharmony_ci
3608e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3609e41f4b71Sopenharmony_ci
3610e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
3611e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
3612e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
3613e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
3614e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
3615e41f4b71Sopenharmony_ci
3616e41f4b71Sopenharmony_ci**示例:**
3617e41f4b71Sopenharmony_ci
3618e41f4b71Sopenharmony_ci```ts
3619e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3620e41f4b71Sopenharmony_ci
3621e41f4b71Sopenharmony_ciavRecorder.stop().then(() => {
3622e41f4b71Sopenharmony_ci  console.info('Succeeded in stopping AVRecorder');
3623e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3624e41f4b71Sopenharmony_ci  console.error('Failed to stop AVRecorder and catch error is ' + err.message);
3625e41f4b71Sopenharmony_ci});
3626e41f4b71Sopenharmony_ci```
3627e41f4b71Sopenharmony_ci
3628e41f4b71Sopenharmony_ci### reset<sup>9+</sup>
3629e41f4b71Sopenharmony_ci
3630e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void
3631e41f4b71Sopenharmony_ci
3632e41f4b71Sopenharmony_ci异步方式重置音视频录制。通过注册回调函数获取返回值。
3633e41f4b71Sopenharmony_ci
3634e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-2)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-2)和[getInputSurface()](#getinputsurface9)接口才能重新录制。
3635e41f4b71Sopenharmony_ci
3636e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3637e41f4b71Sopenharmony_ci
3638e41f4b71Sopenharmony_ci**参数:**
3639e41f4b71Sopenharmony_ci
3640e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                           |
3641e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------ |
3642e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当重置音视频录制成功,err为undefined,否则为错误对象。 |
3643e41f4b71Sopenharmony_ci
3644e41f4b71Sopenharmony_ci**错误码:**
3645e41f4b71Sopenharmony_ci
3646e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3647e41f4b71Sopenharmony_ci
3648e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                          |
3649e41f4b71Sopenharmony_ci| -------- | --------------------------------- |
3650e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.     |
3651e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback. |
3652e41f4b71Sopenharmony_ci
3653e41f4b71Sopenharmony_ci**示例:**
3654e41f4b71Sopenharmony_ci
3655e41f4b71Sopenharmony_ci```ts
3656e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3657e41f4b71Sopenharmony_ci
3658e41f4b71Sopenharmony_ciavRecorder.reset((err: BusinessError) => {
3659e41f4b71Sopenharmony_ci  if (err) {
3660e41f4b71Sopenharmony_ci    console.error('Failed to reset AVRecorder and error is ' + err.message);
3661e41f4b71Sopenharmony_ci  } else {
3662e41f4b71Sopenharmony_ci    console.info('Succeeded in resetting AVRecorder');
3663e41f4b71Sopenharmony_ci  }
3664e41f4b71Sopenharmony_ci});
3665e41f4b71Sopenharmony_ci```
3666e41f4b71Sopenharmony_ci
3667e41f4b71Sopenharmony_ci### reset<sup>9+</sup>
3668e41f4b71Sopenharmony_ci
3669e41f4b71Sopenharmony_cireset(): Promise\<void>
3670e41f4b71Sopenharmony_ci
3671e41f4b71Sopenharmony_ci异步方式重置音视频录制。通过Promise获取返回值。
3672e41f4b71Sopenharmony_ci
3673e41f4b71Sopenharmony_ci纯音频录制时,需要重新调用[prepare()](#prepare9-3)接口才能重新录制。纯视频录制,音视频录制时,需要重新调用[prepare()](#prepare9-3)和[getInputSurface()](#getinputsurface9-1)接口才能重新录制。
3674e41f4b71Sopenharmony_ci
3675e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3676e41f4b71Sopenharmony_ci
3677e41f4b71Sopenharmony_ci**返回值:**
3678e41f4b71Sopenharmony_ci
3679e41f4b71Sopenharmony_ci| 类型           | 说明                                    |
3680e41f4b71Sopenharmony_ci| -------------- | --------------------------------------- |
3681e41f4b71Sopenharmony_ci| Promise\<void> | 异步重置音视频录制方法的Promise返回值。 |
3682e41f4b71Sopenharmony_ci
3683e41f4b71Sopenharmony_ci**错误码:**
3684e41f4b71Sopenharmony_ci
3685e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3686e41f4b71Sopenharmony_ci
3687e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
3688e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
3689e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
3690e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
3691e41f4b71Sopenharmony_ci
3692e41f4b71Sopenharmony_ci**示例:**
3693e41f4b71Sopenharmony_ci
3694e41f4b71Sopenharmony_ci```ts
3695e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3696e41f4b71Sopenharmony_ci
3697e41f4b71Sopenharmony_ciavRecorder.reset().then(() => {
3698e41f4b71Sopenharmony_ci  console.info('Succeeded in resetting AVRecorder');
3699e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3700e41f4b71Sopenharmony_ci  console.error('Failed to reset and catch error is ' + err.message);
3701e41f4b71Sopenharmony_ci});
3702e41f4b71Sopenharmony_ci```
3703e41f4b71Sopenharmony_ci
3704e41f4b71Sopenharmony_ci### release<sup>9+</sup>
3705e41f4b71Sopenharmony_ci
3706e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void
3707e41f4b71Sopenharmony_ci
3708e41f4b71Sopenharmony_ci异步方式释放音视频录制资源。通过注册回调函数获取返回值。
3709e41f4b71Sopenharmony_ci
3710e41f4b71Sopenharmony_ci释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
3711e41f4b71Sopenharmony_ci
3712e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3713e41f4b71Sopenharmony_ci
3714e41f4b71Sopenharmony_ci**参数:**
3715e41f4b71Sopenharmony_ci
3716e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                               |
3717e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ---------------------------------- |
3718e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当释放音视频录制资源成功,err为undefined,否则为错误对象。 |
3719e41f4b71Sopenharmony_ci
3720e41f4b71Sopenharmony_ci**错误码:**
3721e41f4b71Sopenharmony_ci
3722e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3723e41f4b71Sopenharmony_ci
3724e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                          |
3725e41f4b71Sopenharmony_ci| -------- | --------------------------------- |
3726e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback. |
3727e41f4b71Sopenharmony_ci
3728e41f4b71Sopenharmony_ci**示例:**
3729e41f4b71Sopenharmony_ci
3730e41f4b71Sopenharmony_ci```ts
3731e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3732e41f4b71Sopenharmony_ci
3733e41f4b71Sopenharmony_ciavRecorder.release((err: BusinessError) => {
3734e41f4b71Sopenharmony_ci  if (err) {
3735e41f4b71Sopenharmony_ci    console.error('Failed to release AVRecorder and error is ' + err.message);
3736e41f4b71Sopenharmony_ci  } else {
3737e41f4b71Sopenharmony_ci    console.info('Succeeded in releasing AVRecorder');
3738e41f4b71Sopenharmony_ci  }
3739e41f4b71Sopenharmony_ci});
3740e41f4b71Sopenharmony_ci```
3741e41f4b71Sopenharmony_ci
3742e41f4b71Sopenharmony_ci### release<sup>9+</sup>
3743e41f4b71Sopenharmony_ci
3744e41f4b71Sopenharmony_cirelease(): Promise\<void>
3745e41f4b71Sopenharmony_ci
3746e41f4b71Sopenharmony_ci异步方式释放音视频录制资源。通过Promise获取返回值。
3747e41f4b71Sopenharmony_ci
3748e41f4b71Sopenharmony_ci释放音视频录制资源之后,该AVRecorder实例不能再进行任何操作。
3749e41f4b71Sopenharmony_ci
3750e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
3751e41f4b71Sopenharmony_ci
3752e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
3753e41f4b71Sopenharmony_ci
3754e41f4b71Sopenharmony_ci**返回值:**
3755e41f4b71Sopenharmony_ci
3756e41f4b71Sopenharmony_ci| 类型           | 说明                                        |
3757e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------- |
3758e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放音视频录制资源方法的Promise返回值。 |
3759e41f4b71Sopenharmony_ci
3760e41f4b71Sopenharmony_ci**错误码:**
3761e41f4b71Sopenharmony_ci
3762e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3763e41f4b71Sopenharmony_ci
3764e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                          |
3765e41f4b71Sopenharmony_ci| -------- | --------------------------------- |
3766e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback. |
3767e41f4b71Sopenharmony_ci
3768e41f4b71Sopenharmony_ci**示例:**
3769e41f4b71Sopenharmony_ci
3770e41f4b71Sopenharmony_ci```ts
3771e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
3772e41f4b71Sopenharmony_ci
3773e41f4b71Sopenharmony_ciavRecorder.release().then(() => {
3774e41f4b71Sopenharmony_ci  console.info('Succeeded in releasing AVRecorder');
3775e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3776e41f4b71Sopenharmony_ci  console.error('Failed to release AVRecorder and catch error is ' + err.message);
3777e41f4b71Sopenharmony_ci});
3778e41f4b71Sopenharmony_ci```
3779e41f4b71Sopenharmony_ci
3780e41f4b71Sopenharmony_ci### getCurrentAudioCapturerInfo<sup>11+</sup>
3781e41f4b71Sopenharmony_ci
3782e41f4b71Sopenharmony_cigetCurrentAudioCapturerInfo(callback: AsyncCallback\<audio.AudioCapturerChangeInfo>): void
3783e41f4b71Sopenharmony_ci
3784e41f4b71Sopenharmony_ci异步方式获取当前音频采集参数。通过注册回调函数获取返回值。
3785e41f4b71Sopenharmony_ci
3786e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3787e41f4b71Sopenharmony_ci
3788e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3789e41f4b71Sopenharmony_ci
3790e41f4b71Sopenharmony_ci**参数**:
3791e41f4b71Sopenharmony_ci
3792e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                 |
3793e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------ |
3794e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是   | 回调函数。当获取音频采集参数成功时,err为undefined,data为获取到的audio.AudioCapturerChangeInfo,否则为错误对象。 |
3795e41f4b71Sopenharmony_ci
3796e41f4b71Sopenharmony_ci**错误码**:
3797e41f4b71Sopenharmony_ci
3798e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3799e41f4b71Sopenharmony_ci
3800e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
3801e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
3802e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
3803e41f4b71Sopenharmony_ci| 5400103  | I/O error.             |
3804e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.          |
3805e41f4b71Sopenharmony_ci
3806e41f4b71Sopenharmony_ci**示例**:
3807e41f4b71Sopenharmony_ci
3808e41f4b71Sopenharmony_ci```ts
3809e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
3810e41f4b71Sopenharmony_ci
3811e41f4b71Sopenharmony_cilet currentCapturerInfo: audio.AudioCapturerChangeInfo;
3812e41f4b71Sopenharmony_ci
3813e41f4b71Sopenharmony_ciavRecorder.getCurrentAudioCapturerInfo((err: BusinessError, capturerInfo: audio.AudioCapturerChangeInfo) => {
3814e41f4b71Sopenharmony_ci  if (err) {
3815e41f4b71Sopenharmony_ci    console.error('Failed to get CurrentAudioCapturerInfo and error is ' + err.message);
3816e41f4b71Sopenharmony_ci  } else {
3817e41f4b71Sopenharmony_ci    console.info('Succeeded in getting CurrentAudioCapturerInfo');
3818e41f4b71Sopenharmony_ci    currentCapturerInfo = capturerInfo;
3819e41f4b71Sopenharmony_ci  }
3820e41f4b71Sopenharmony_ci});
3821e41f4b71Sopenharmony_ci```
3822e41f4b71Sopenharmony_ci
3823e41f4b71Sopenharmony_ci### getCurrentAudioCapturerInfo<sup>11+</sup>
3824e41f4b71Sopenharmony_ci
3825e41f4b71Sopenharmony_cigetCurrentAudioCapturerInfo(): Promise\<audio.AudioCapturerChangeInfo>
3826e41f4b71Sopenharmony_ci
3827e41f4b71Sopenharmony_ci异步方式获取当前音频采集参数。通过Promise获取返回值。
3828e41f4b71Sopenharmony_ci
3829e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3830e41f4b71Sopenharmony_ci
3831e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3832e41f4b71Sopenharmony_ci
3833e41f4b71Sopenharmony_ci**返回值**:
3834e41f4b71Sopenharmony_ci
3835e41f4b71Sopenharmony_ci| 类型                                                         | 说明                                              |
3836e41f4b71Sopenharmony_ci| ------------------------------------------------------------ | ------------------------------------------------- |
3837e41f4b71Sopenharmony_ci| Promise\<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | Promise对象,返回获取的当前音频采集参数。 |
3838e41f4b71Sopenharmony_ci
3839e41f4b71Sopenharmony_ci**错误码**:
3840e41f4b71Sopenharmony_ci
3841e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3842e41f4b71Sopenharmony_ci
3843e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
3844e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
3845e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed.           |
3846e41f4b71Sopenharmony_ci| 5400103  | I/O error.                       |
3847e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
3848e41f4b71Sopenharmony_ci
3849e41f4b71Sopenharmony_ci**示例**:
3850e41f4b71Sopenharmony_ci
3851e41f4b71Sopenharmony_ci```ts
3852e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
3853e41f4b71Sopenharmony_ci
3854e41f4b71Sopenharmony_cilet currentCapturerInfo: audio.AudioCapturerChangeInfo;
3855e41f4b71Sopenharmony_ci
3856e41f4b71Sopenharmony_ciavRecorder.getCurrentAudioCapturerInfo().then((capturerInfo: audio.AudioCapturerChangeInfo) => {
3857e41f4b71Sopenharmony_ci  console.info('Succeeded in getting CurrentAudioCapturerInfo');
3858e41f4b71Sopenharmony_ci  currentCapturerInfo = capturerInfo;
3859e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3860e41f4b71Sopenharmony_ci  console.error('Failed to get CurrentAudioCapturerInfo and catch error is ' + err.message);
3861e41f4b71Sopenharmony_ci});
3862e41f4b71Sopenharmony_ci```
3863e41f4b71Sopenharmony_ci
3864e41f4b71Sopenharmony_ci### getAudioCapturerMaxAmplitude<sup>11+</sup>
3865e41f4b71Sopenharmony_ci
3866e41f4b71Sopenharmony_cigetAudioCapturerMaxAmplitude(callback: AsyncCallback\<number>): void
3867e41f4b71Sopenharmony_ci
3868e41f4b71Sopenharmony_ci异步方式获取当前音频最大振幅。通过注册回调函数获取返回值。
3869e41f4b71Sopenharmony_ci
3870e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3871e41f4b71Sopenharmony_ci
3872e41f4b71Sopenharmony_ci调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
3873e41f4b71Sopenharmony_ci
3874e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3875e41f4b71Sopenharmony_ci
3876e41f4b71Sopenharmony_ci**参数**:
3877e41f4b71Sopenharmony_ci
3878e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                                 |
3879e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------ |
3880e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是   |  回调函数。获取当前音频最大振幅成功时,err为undefined,data为获取到的最大振幅,否则为错误对象。 |
3881e41f4b71Sopenharmony_ci
3882e41f4b71Sopenharmony_ci**错误码**:
3883e41f4b71Sopenharmony_ci
3884e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3885e41f4b71Sopenharmony_ci
3886e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
3887e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
3888e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
3889e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.          |
3890e41f4b71Sopenharmony_ci
3891e41f4b71Sopenharmony_ci**示例**:
3892e41f4b71Sopenharmony_ci
3893e41f4b71Sopenharmony_ci```ts
3894e41f4b71Sopenharmony_cilet maxAmplitude: number;
3895e41f4b71Sopenharmony_ci
3896e41f4b71Sopenharmony_ciavRecorder.getAudioCapturerMaxAmplitude((err: BusinessError, amplitude: number) => {
3897e41f4b71Sopenharmony_ci  if (err) {
3898e41f4b71Sopenharmony_ci    console.error('Failed to get AudioCapturerMaxAmplitude and error is ' + err.message);
3899e41f4b71Sopenharmony_ci  } else {
3900e41f4b71Sopenharmony_ci    console.info('Succeeded in getting AudioCapturerMaxAmplitude');
3901e41f4b71Sopenharmony_ci    maxAmplitude = amplitude;
3902e41f4b71Sopenharmony_ci  }
3903e41f4b71Sopenharmony_ci});
3904e41f4b71Sopenharmony_ci```
3905e41f4b71Sopenharmony_ci
3906e41f4b71Sopenharmony_ci### getAudioCapturerMaxAmplitude<sup>11+</sup>
3907e41f4b71Sopenharmony_ci
3908e41f4b71Sopenharmony_cigetAudioCapturerMaxAmplitude(): Promise\<number>
3909e41f4b71Sopenharmony_ci
3910e41f4b71Sopenharmony_ci异步方式获取当前音频最大振幅参数。通过Promise获取返回值。
3911e41f4b71Sopenharmony_ci
3912e41f4b71Sopenharmony_ci在prepare()成功触发后,才能调用此方法。在stop()成功触发后,调用此方法会报错。
3913e41f4b71Sopenharmony_ci
3914e41f4b71Sopenharmony_ci调用接口时,获取到的返回值是上一次获取最大振幅的时刻到当前这段区间内的音频最大振幅。即,如果在1s的时刻获取了一次最大振幅,在2s时再获取到的最大振幅时1-2s这个区间里面的最大值。
3915e41f4b71Sopenharmony_ci
3916e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3917e41f4b71Sopenharmony_ci
3918e41f4b71Sopenharmony_ci**返回值**:
3919e41f4b71Sopenharmony_ci
3920e41f4b71Sopenharmony_ci| 类型             | 说明                                              |
3921e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------------- |
3922e41f4b71Sopenharmony_ci| Promise\<number> | Promise对象,返回获取的当前音频最大振幅。 |
3923e41f4b71Sopenharmony_ci
3924e41f4b71Sopenharmony_ci**错误码**:
3925e41f4b71Sopenharmony_ci
3926e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3927e41f4b71Sopenharmony_ci
3928e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
3929e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
3930e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed.           |
3931e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
3932e41f4b71Sopenharmony_ci
3933e41f4b71Sopenharmony_ci**示例**:
3934e41f4b71Sopenharmony_ci
3935e41f4b71Sopenharmony_ci```ts
3936e41f4b71Sopenharmony_cilet maxAmplitude: number;
3937e41f4b71Sopenharmony_ci
3938e41f4b71Sopenharmony_ciavRecorder.getAudioCapturerMaxAmplitude().then((amplitude: number) => {
3939e41f4b71Sopenharmony_ci  console.info('Succeeded in getting AudioCapturerMaxAmplitude');
3940e41f4b71Sopenharmony_ci  maxAmplitude = amplitude;
3941e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
3942e41f4b71Sopenharmony_ci  console.error('Failed to get AudioCapturerMaxAmplitude and catch error is ' + err.message);
3943e41f4b71Sopenharmony_ci});
3944e41f4b71Sopenharmony_ci```
3945e41f4b71Sopenharmony_ci
3946e41f4b71Sopenharmony_ci### getAvailableEncoder<sup>11+</sup>
3947e41f4b71Sopenharmony_ci
3948e41f4b71Sopenharmony_cigetAvailableEncoder(callback: AsyncCallback\<Array\<EncoderInfo>>): void
3949e41f4b71Sopenharmony_ci
3950e41f4b71Sopenharmony_ci异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
3951e41f4b71Sopenharmony_ci
3952e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3953e41f4b71Sopenharmony_ci
3954e41f4b71Sopenharmony_ci**参数**:
3955e41f4b71Sopenharmony_ci
3956e41f4b71Sopenharmony_ci| 参数名   | 类型                                                  | 必填 | 说明                                 |
3957e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------------- | ---- | ------------------------------------ |
3958e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[EncoderInfo](#encoderinfo11)>> | 是   | 回调函数。获取可用的编码器参数成功时,err为undefined,data为获取到的编码器参数,否则为错误对象。 |
3959e41f4b71Sopenharmony_ci
3960e41f4b71Sopenharmony_ci**错误码**:
3961e41f4b71Sopenharmony_ci
3962e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
3963e41f4b71Sopenharmony_ci
3964e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
3965e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
3966e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
3967e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.          |
3968e41f4b71Sopenharmony_ci
3969e41f4b71Sopenharmony_ci**示例**:
3970e41f4b71Sopenharmony_ci
3971e41f4b71Sopenharmony_ci```ts
3972e41f4b71Sopenharmony_cilet encoderInfo: media.EncoderInfo;
3973e41f4b71Sopenharmony_ci
3974e41f4b71Sopenharmony_ciavRecorder.getAvailableEncoder((err: BusinessError, info: media.EncoderInfo[]) => {
3975e41f4b71Sopenharmony_ci  if (err) {
3976e41f4b71Sopenharmony_ci    console.error('Failed to get AvailableEncoder and error is ' + err.message);
3977e41f4b71Sopenharmony_ci  } else {
3978e41f4b71Sopenharmony_ci    console.info('Succeeded in getting AvailableEncoder');
3979e41f4b71Sopenharmony_ci    encoderInfo = info[0];
3980e41f4b71Sopenharmony_ci  }
3981e41f4b71Sopenharmony_ci});
3982e41f4b71Sopenharmony_ci```
3983e41f4b71Sopenharmony_ci
3984e41f4b71Sopenharmony_ci### getAvailableEncoder<sup>11+</sup>
3985e41f4b71Sopenharmony_ci
3986e41f4b71Sopenharmony_cigetAvailableEncoder(): Promise\<Array\<EncoderInfo>>
3987e41f4b71Sopenharmony_ci
3988e41f4b71Sopenharmony_ci异步方式获取可用的编码器参数。通过注册回调函数获取返回值。
3989e41f4b71Sopenharmony_ci
3990e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Multimedia.Media.AVRecorder
3991e41f4b71Sopenharmony_ci
3992e41f4b71Sopenharmony_ci**返回值**:
3993e41f4b71Sopenharmony_ci
3994e41f4b71Sopenharmony_ci| 类型                                            | 说明                                            |
3995e41f4b71Sopenharmony_ci| ----------------------------------------------- | ----------------------------------------------- |
3996e41f4b71Sopenharmony_ci| Promise\<Array\<[EncoderInfo](#encoderinfo11)>> | Promise对象,返回获取的可用的编码器参数。 |
3997e41f4b71Sopenharmony_ci
3998e41f4b71Sopenharmony_ci**错误码**:
3999e41f4b71Sopenharmony_ci
4000e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4001e41f4b71Sopenharmony_ci
4002e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
4003e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
4004e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed.           |
4005e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
4006e41f4b71Sopenharmony_ci
4007e41f4b71Sopenharmony_ci**示例**:
4008e41f4b71Sopenharmony_ci
4009e41f4b71Sopenharmony_ci```ts
4010e41f4b71Sopenharmony_cilet encoderInfo: media.EncoderInfo;
4011e41f4b71Sopenharmony_ci
4012e41f4b71Sopenharmony_ciavRecorder.getAvailableEncoder().then((info: media.EncoderInfo[]) => {
4013e41f4b71Sopenharmony_ci  console.info('Succeeded in getting AvailableEncoder');
4014e41f4b71Sopenharmony_ci  encoderInfo = info[0];
4015e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4016e41f4b71Sopenharmony_ci  console.error('Failed to get AvailableEncoder and catch error is ' + err.message);
4017e41f4b71Sopenharmony_ci});
4018e41f4b71Sopenharmony_ci```
4019e41f4b71Sopenharmony_ci
4020e41f4b71Sopenharmony_ci### getAVRecorderConfig<sup>11+</sup>
4021e41f4b71Sopenharmony_ci
4022e41f4b71Sopenharmony_cigetAVRecorderConfig(callback: AsyncCallback\<AVRecorderConfig>): void
4023e41f4b71Sopenharmony_ci
4024e41f4b71Sopenharmony_ci异步方式获取实时的配置参数。通过注册回调函数获取返回值。
4025e41f4b71Sopenharmony_ci
4026e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9-2)接口调用后调用。
4027e41f4b71Sopenharmony_ci
4028e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4029e41f4b71Sopenharmony_ci
4030e41f4b71Sopenharmony_ci**参数:**
4031e41f4b71Sopenharmony_ci
4032e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                        |
4033e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | --------------------------- |
4034e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVRecorderConfig](#avrecorderconfig9)> | 是   | 回调函数。获取实时配置的参数成功时,err为undefined,data为获取到的配置参数,否则为错误对象。 |
4035e41f4b71Sopenharmony_ci
4036e41f4b71Sopenharmony_ci**错误码:**
4037e41f4b71Sopenharmony_ci
4038e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
4039e41f4b71Sopenharmony_ci
4040e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4041e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4042e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by callback. |
4043e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.             |
4044e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.          |
4045e41f4b71Sopenharmony_ci
4046e41f4b71Sopenharmony_ci**示例:**
4047e41f4b71Sopenharmony_ci
4048e41f4b71Sopenharmony_ci```ts
4049e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4050e41f4b71Sopenharmony_ci
4051e41f4b71Sopenharmony_cilet avConfig: media.AVRecorderConfig;
4052e41f4b71Sopenharmony_ci
4053e41f4b71Sopenharmony_ciavRecorder.getAVRecorderConfig((err: BusinessError, config: media.AVRecorderConfig) => {
4054e41f4b71Sopenharmony_ci  if (err) {
4055e41f4b71Sopenharmony_ci    console.error('Failed to get avConfig and error is ' + err.message);
4056e41f4b71Sopenharmony_ci  } else {
4057e41f4b71Sopenharmony_ci    console.info('Succeeded in getting AVRecorderConfig');
4058e41f4b71Sopenharmony_ci    avConfig = config;
4059e41f4b71Sopenharmony_ci  }
4060e41f4b71Sopenharmony_ci});
4061e41f4b71Sopenharmony_ci```
4062e41f4b71Sopenharmony_ci
4063e41f4b71Sopenharmony_ci### getAVRecorderConfig<sup>11+</sup>
4064e41f4b71Sopenharmony_ci
4065e41f4b71Sopenharmony_cigetAVRecorderConfig(): Promise\<AVRecorderConfig>;
4066e41f4b71Sopenharmony_ci
4067e41f4b71Sopenharmony_ci异步方式获取实时的配置参数。通过Promise获取返回值。
4068e41f4b71Sopenharmony_ci
4069e41f4b71Sopenharmony_ci只能在[prepare()](#prepare9-3)接口调用后调用。
4070e41f4b71Sopenharmony_ci
4071e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4072e41f4b71Sopenharmony_ci
4073e41f4b71Sopenharmony_ci**返回值:**
4074e41f4b71Sopenharmony_ci
4075e41f4b71Sopenharmony_ci| 类型             | 说明                             |
4076e41f4b71Sopenharmony_ci| ---------------- | -------------------------------- |
4077e41f4b71Sopenharmony_ci| Promise\<[AVRecorderConfig](#avrecorderconfig9)> | 异步获得实时配置参数的回调方法。 |
4078e41f4b71Sopenharmony_ci
4079e41f4b71Sopenharmony_ci**错误码:**
4080e41f4b71Sopenharmony_ci
4081e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
4082e41f4b71Sopenharmony_ci
4083e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
4084e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
4085e41f4b71Sopenharmony_ci| 5400102  | Operate not permit. Return by promise. |
4086e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.             |
4087e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.          |
4088e41f4b71Sopenharmony_ci
4089e41f4b71Sopenharmony_ci**示例:**
4090e41f4b71Sopenharmony_ci
4091e41f4b71Sopenharmony_ci```ts
4092e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4093e41f4b71Sopenharmony_ci
4094e41f4b71Sopenharmony_cilet avConfig: media.AVRecorderConfig;
4095e41f4b71Sopenharmony_ci
4096e41f4b71Sopenharmony_ciavRecorder.getAVRecorderConfig().then((config: media.AVRecorderConfig) => {
4097e41f4b71Sopenharmony_ci  console.info('Succeeded in getting AVRecorderConfig');
4098e41f4b71Sopenharmony_ci  avConfig = config;
4099e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4100e41f4b71Sopenharmony_ci  console.error('Failed to get AVRecorderConfig and catch error is ' + err.message);
4101e41f4b71Sopenharmony_ci});
4102e41f4b71Sopenharmony_ci```
4103e41f4b71Sopenharmony_ci
4104e41f4b71Sopenharmony_ci### on('stateChange')<sup>9+</sup>
4105e41f4b71Sopenharmony_ci
4106e41f4b71Sopenharmony_cion(type: 'stateChange', callback: OnAVRecorderStateChangeHandler): void
4107e41f4b71Sopenharmony_ci
4108e41f4b71Sopenharmony_ci订阅录制状态机AVRecorderState切换的事件,当 AVRecorderState状态机发生变化时,会通过订阅的回调方法通知用户。用户只能订阅一个状态机切换事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4109e41f4b71Sopenharmony_ci
4110e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4111e41f4b71Sopenharmony_ci
4112e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4113e41f4b71Sopenharmony_ci
4114e41f4b71Sopenharmony_ci**参数:**
4115e41f4b71Sopenharmony_ci
4116e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
4117e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
4118e41f4b71Sopenharmony_ci| type     | string   | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
4119e41f4b71Sopenharmony_ci| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 是   | 状态机切换事件回调方法。 |
4120e41f4b71Sopenharmony_ci
4121e41f4b71Sopenharmony_ci**错误码:**
4122e41f4b71Sopenharmony_ci
4123e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4124e41f4b71Sopenharmony_ci
4125e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                          |
4126e41f4b71Sopenharmony_ci| -------- | --------------------------------- |
4127e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.     |
4128e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback. |
4129e41f4b71Sopenharmony_ci
4130e41f4b71Sopenharmony_ci**示例:**
4131e41f4b71Sopenharmony_ci
4132e41f4b71Sopenharmony_ci```ts
4133e41f4b71Sopenharmony_ciavRecorder.on('stateChange', async (state: media.AVRecorderState, reason: media.StateChangeReason) => {
4134e41f4b71Sopenharmony_ci  console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
4135e41f4b71Sopenharmony_ci});
4136e41f4b71Sopenharmony_ci```
4137e41f4b71Sopenharmony_ci
4138e41f4b71Sopenharmony_ci### off('stateChange')<sup>9+</sup>
4139e41f4b71Sopenharmony_ci
4140e41f4b71Sopenharmony_cioff(type: 'stateChange', callback?: OnAVRecorderStateChangeHandler): void
4141e41f4b71Sopenharmony_ci
4142e41f4b71Sopenharmony_ci取消订阅播放状态机[AVRecorderState](#avrecorderstate9)切换的事件。
4143e41f4b71Sopenharmony_ci
4144e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4145e41f4b71Sopenharmony_ci
4146e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4147e41f4b71Sopenharmony_ci
4148e41f4b71Sopenharmony_ci**参数:**
4149e41f4b71Sopenharmony_ci
4150e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4151e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4152e41f4b71Sopenharmony_ci| type   | string | 是   | 状态机切换事件回调类型,支持的事件:'stateChange',用户操作和系统都会触发此事件。 |
4153e41f4b71Sopenharmony_ci| callback | [OnAVRecorderStateChangeHandler](#onavrecorderstatechangehandler12) | 否   | 状态机切换事件回调方法。<br/>从API version 12开始支持此参数。 |
4154e41f4b71Sopenharmony_ci
4155e41f4b71Sopenharmony_ci**示例:**
4156e41f4b71Sopenharmony_ci
4157e41f4b71Sopenharmony_ci```ts
4158e41f4b71Sopenharmony_ciavRecorder.off('stateChange');
4159e41f4b71Sopenharmony_ci```
4160e41f4b71Sopenharmony_ci
4161e41f4b71Sopenharmony_ci### on('error')<sup>9+</sup>
4162e41f4b71Sopenharmony_ci
4163e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
4164e41f4b71Sopenharmony_ci
4165e41f4b71Sopenharmony_ci订阅AVRecorder的错误事件,该事件仅用于错误提示,不需要用户停止播控动作。如果此时[AVRecorderState](#avrecorderstate9)也切至error状态,用户需要通过[reset()](#reset9-2)或者[release()](#release9-2)退出录制操作。
4166e41f4b71Sopenharmony_ci
4167e41f4b71Sopenharmony_ci用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4168e41f4b71Sopenharmony_ci
4169e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4170e41f4b71Sopenharmony_ci
4171e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4172e41f4b71Sopenharmony_ci
4173e41f4b71Sopenharmony_ci**参数:**
4174e41f4b71Sopenharmony_ci
4175e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                                         |
4176e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ |
4177e41f4b71Sopenharmony_ci| type     | string        | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4178e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
4179e41f4b71Sopenharmony_ci
4180e41f4b71Sopenharmony_ci**错误码:**
4181e41f4b71Sopenharmony_ci
4182e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4183e41f4b71Sopenharmony_ci
4184e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4185e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4186e41f4b71Sopenharmony_ci| 201      | Permission denied.     |
4187e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed. |
4188e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
4189e41f4b71Sopenharmony_ci| 5400101  | No memory.             |
4190e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
4191e41f4b71Sopenharmony_ci| 5400103  | I/O error.             |
4192e41f4b71Sopenharmony_ci| 5400104  | Time out.              |
4193e41f4b71Sopenharmony_ci| 5400105  | Service died.          |
4194e41f4b71Sopenharmony_ci| 5400106  | Unsupport format.      |
4195e41f4b71Sopenharmony_ci| 5400107  | Audio interrupted.     |
4196e41f4b71Sopenharmony_ci
4197e41f4b71Sopenharmony_ci**示例:**
4198e41f4b71Sopenharmony_ci
4199e41f4b71Sopenharmony_ci```ts
4200e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4201e41f4b71Sopenharmony_ci
4202e41f4b71Sopenharmony_ciavRecorder.on('error', (err: BusinessError) => {
4203e41f4b71Sopenharmony_ci  console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
4204e41f4b71Sopenharmony_ci});
4205e41f4b71Sopenharmony_ci```
4206e41f4b71Sopenharmony_ci
4207e41f4b71Sopenharmony_ci### off('error')<sup>9+</sup>
4208e41f4b71Sopenharmony_ci
4209e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void
4210e41f4b71Sopenharmony_ci
4211e41f4b71Sopenharmony_ci取消订阅录制错误事件,取消后不再接收到AVRecorder的错误事件。
4212e41f4b71Sopenharmony_ci
4213e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4214e41f4b71Sopenharmony_ci
4215e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4216e41f4b71Sopenharmony_ci
4217e41f4b71Sopenharmony_ci**参数:**
4218e41f4b71Sopenharmony_ci
4219e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4220e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4221e41f4b71Sopenharmony_ci| type   | string | 是   | 录制错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4222e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 录制错误事件回调方法。<br/>从API version 12开始支持此参数。                   |
4223e41f4b71Sopenharmony_ci
4224e41f4b71Sopenharmony_ci**示例:**
4225e41f4b71Sopenharmony_ci
4226e41f4b71Sopenharmony_ci```ts
4227e41f4b71Sopenharmony_ciavRecorder.off('error');
4228e41f4b71Sopenharmony_ci```
4229e41f4b71Sopenharmony_ci
4230e41f4b71Sopenharmony_ci### on('audioCapturerChange')<sup>11+</sup>
4231e41f4b71Sopenharmony_ci
4232e41f4b71Sopenharmony_cion(type: 'audioCapturerChange', callback: Callback<audio.AudioCapturerChangeInfo>): void
4233e41f4b71Sopenharmony_ci
4234e41f4b71Sopenharmony_ci订阅录音配置变化的回调,任意录音配置的变化会触发变化后的录音配置全量信息回调。
4235e41f4b71Sopenharmony_ci
4236e41f4b71Sopenharmony_ci当用户重复订阅时,以最后一次订阅的回调接口为准。
4237e41f4b71Sopenharmony_ci
4238e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4239e41f4b71Sopenharmony_ci
4240e41f4b71Sopenharmony_ci**参数:**
4241e41f4b71Sopenharmony_ci
4242e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
4243e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
4244e41f4b71Sopenharmony_ci| type     | string   | 是   |录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
4245e41f4b71Sopenharmony_ci| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 是 | 变化后的录音配置全量信息。|
4246e41f4b71Sopenharmony_ci
4247e41f4b71Sopenharmony_ci**错误码:**
4248e41f4b71Sopenharmony_ci
4249e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4250e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4251e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
4252e41f4b71Sopenharmony_ci
4253e41f4b71Sopenharmony_ci**示例:**
4254e41f4b71Sopenharmony_ci
4255e41f4b71Sopenharmony_ci```ts
4256e41f4b71Sopenharmony_cilet capturerChangeInfo: audio.AudioCapturerChangeInfo;
4257e41f4b71Sopenharmony_ci
4258e41f4b71Sopenharmony_ciavRecorder.on('audioCapturerChange',  (audioCapturerChangeInfo: audio.AudioCapturerChangeInfo) => {
4259e41f4b71Sopenharmony_ci  console.info('audioCapturerChange called');
4260e41f4b71Sopenharmony_ci  capturerChangeInfo = audioCapturerChangeInfo;
4261e41f4b71Sopenharmony_ci});
4262e41f4b71Sopenharmony_ci```
4263e41f4b71Sopenharmony_ci
4264e41f4b71Sopenharmony_ci### off('audioCapturerChange')<sup>11+</sup>
4265e41f4b71Sopenharmony_ci
4266e41f4b71Sopenharmony_cioff(type: 'audioCapturerChange', callback?: Callback<audio.AudioCapturerChangeInfo>): void
4267e41f4b71Sopenharmony_ci
4268e41f4b71Sopenharmony_ci取消订阅录音变化的回调事件。
4269e41f4b71Sopenharmony_ci
4270e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4271e41f4b71Sopenharmony_ci
4272e41f4b71Sopenharmony_ci**参数:**
4273e41f4b71Sopenharmony_ci
4274e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4275e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4276e41f4b71Sopenharmony_ci| type   | string | 是   | 录音配置变化的回调类型,支持的事件:'audioCapturerChange'。 |
4277e41f4b71Sopenharmony_ci| callback | Callback<[audio.AudioCapturerChangeInfo](../apis-audio-kit/js-apis-audio.md#audiocapturerchangeinfo9)> | 否 | 变化后的录音配置全量信息。<br/>从API version 12开始支持此参数。|
4278e41f4b71Sopenharmony_ci
4279e41f4b71Sopenharmony_ci**示例:**
4280e41f4b71Sopenharmony_ci
4281e41f4b71Sopenharmony_ci```ts
4282e41f4b71Sopenharmony_ciavRecorder.off('audioCapturerChange');
4283e41f4b71Sopenharmony_ci```
4284e41f4b71Sopenharmony_ci
4285e41f4b71Sopenharmony_ci### on('photoAssetAvailable')<sup>12+</sup>
4286e41f4b71Sopenharmony_ci
4287e41f4b71Sopenharmony_cion(type: 'photoAssetAvailable', callback: Callback\<photoAccessHelper.PhotoAsset>): void
4288e41f4b71Sopenharmony_ci
4289e41f4b71Sopenharmony_ci订阅媒体资源回调事件,当[FileGenerationMode](#filegenerationmode12)枚举设置为系统创建媒体文件时,会在[stop](#stop9-2)操作结束后把[PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)对象回调给应用。
4290e41f4b71Sopenharmony_ci
4291e41f4b71Sopenharmony_ci当用户重复订阅时,以最后一次订阅的回调接口为准。
4292e41f4b71Sopenharmony_ci
4293e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4294e41f4b71Sopenharmony_ci
4295e41f4b71Sopenharmony_ci**参数:**
4296e41f4b71Sopenharmony_ci
4297e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
4298e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
4299e41f4b71Sopenharmony_ci| type     | string   | 是   |录像资源的回调类型,支持的事件:'photoAssetAvailable'。 |
4300e41f4b71Sopenharmony_ci| callback | Callback<[photoAccessHelper.PhotoAsset](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoasset)> | 是 | 系统创建的资源文件对应的PhotoAsset对象|
4301e41f4b71Sopenharmony_ci
4302e41f4b71Sopenharmony_ci**错误码:**
4303e41f4b71Sopenharmony_ci
4304e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4305e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4306e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by callback.             |
4307e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by callback.          |
4308e41f4b71Sopenharmony_ci
4309e41f4b71Sopenharmony_ci**示例:**
4310e41f4b71Sopenharmony_ci
4311e41f4b71Sopenharmony_ci```ts
4312e41f4b71Sopenharmony_ciimport { photoAccessHelper } from '@kit.MediaLibraryKit';
4313e41f4b71Sopenharmony_cilet photoAsset: photoAccessHelper.PhotoAsset;
4314e41f4b71Sopenharmony_ci
4315e41f4b71Sopenharmony_ci// 例:处理photoAsset回调,保存video
4316e41f4b71Sopenharmony_ciasync saveVideo(asset: photoAccessHelper.PhotoAsset) {
4317e41f4b71Sopenharmony_ci  console.info("saveVideo called");
4318e41f4b71Sopenharmony_ci  try {
4319e41f4b71Sopenharmony_ci    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(getContext(this));
4320e41f4b71Sopenharmony_ci    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
4321e41f4b71Sopenharmony_ci    assetChangeRequest.saveCameraPhoto();
4322e41f4b71Sopenharmony_ci    await phAccessHelper.applyChanges(assetChangeRequest);
4323e41f4b71Sopenharmony_ci    console.info('apply saveVideo successfully');
4324e41f4b71Sopenharmony_ci  } catch (err) {
4325e41f4b71Sopenharmony_ci    console.error(`apply saveVideo failed with error: ${err.code}, ${err.message}`);
4326e41f4b71Sopenharmony_ci  }
4327e41f4b71Sopenharmony_ci}
4328e41f4b71Sopenharmony_ci// 注册photoAsset监听
4329e41f4b71Sopenharmony_ciavRecorder.on('photoAssetAvailable',  (asset: photoAccessHelper.PhotoAsset) => {
4330e41f4b71Sopenharmony_ci  console.info('photoAssetAvailable called');
4331e41f4b71Sopenharmony_ci  if (asset != undefined) {
4332e41f4b71Sopenharmony_ci    photoAsset = asset;
4333e41f4b71Sopenharmony_ci    // 处理photoAsset回调
4334e41f4b71Sopenharmony_ci    // 例: this.saveVideo(asset);
4335e41f4b71Sopenharmony_ci  } else {
4336e41f4b71Sopenharmony_ci    console.error('photoAsset is undefined');
4337e41f4b71Sopenharmony_ci  }
4338e41f4b71Sopenharmony_ci});
4339e41f4b71Sopenharmony_ci```
4340e41f4b71Sopenharmony_ci
4341e41f4b71Sopenharmony_ci### off('photoAssetAvailable')<sup>12+</sup>
4342e41f4b71Sopenharmony_ci
4343e41f4b71Sopenharmony_cioff(type: 'photoAssetAvailable', callback?: Callback<photoAccessHelper.PhotoAsset>): void
4344e41f4b71Sopenharmony_ci
4345e41f4b71Sopenharmony_ci取消订阅媒体资源的回调类型。
4346e41f4b71Sopenharmony_ci
4347e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4348e41f4b71Sopenharmony_ci
4349e41f4b71Sopenharmony_ci**参数:**
4350e41f4b71Sopenharmony_ci
4351e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4352e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4353e41f4b71Sopenharmony_ci| type   | string | 是   | 录音配置变化的回调类型,支持的事件:'photoAssetAvailable'。 |
4354e41f4b71Sopenharmony_ci
4355e41f4b71Sopenharmony_ci**示例:**
4356e41f4b71Sopenharmony_ci
4357e41f4b71Sopenharmony_ci```ts
4358e41f4b71Sopenharmony_ciavRecorder.off('photoAssetAvailable');
4359e41f4b71Sopenharmony_ci```
4360e41f4b71Sopenharmony_ci
4361e41f4b71Sopenharmony_ci## AVRecorderState<sup>9+</sup>
4362e41f4b71Sopenharmony_ci
4363e41f4b71Sopenharmony_citype AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error'
4364e41f4b71Sopenharmony_ci
4365e41f4b71Sopenharmony_ci音视频录制的状态机。可通过state属性获取当前状态。
4366e41f4b71Sopenharmony_ci
4367e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
4368e41f4b71Sopenharmony_ci
4369e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4370e41f4b71Sopenharmony_ci
4371e41f4b71Sopenharmony_ci| 类型     | 说明                                                         |
4372e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ |
4373e41f4b71Sopenharmony_ci| 'idle'     | 闲置状态。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](#reset9-2)方法,均进入idle状态。 |
4374e41f4b71Sopenharmony_ci| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](#start9)方法开始录制,进入started状态。 |
4375e41f4b71Sopenharmony_ci| 'started'  | 正在录制。此时可以调用[AVRecorder.pause()](#pause9-2)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
4376e41f4b71Sopenharmony_ci| 'paused'   | 录制暂停。此时可以调用[AVRecorder.resume()](#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](#stop9-2)方法结束录制,进入stopped状态。 |
4377e41f4b71Sopenharmony_ci| 'stopped'  | 录制停止。此时可以调用[AVRecorder.prepare()](#prepare9-2)方法设置录制参数,重新进入prepared状态。 |
4378e41f4b71Sopenharmony_ci| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](#release9-2)方法进入released状态。 |
4379e41f4b71Sopenharmony_ci| 'error'    | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](#onerror9-1),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](#reset9-2)方法重置AVRecorder实例,或者调用[AVRecorder.release()](#release9-2)方法释放资源。 |
4380e41f4b71Sopenharmony_ci
4381e41f4b71Sopenharmony_ci## OnAVRecorderStateChangeHandler<sup>12+</sup>
4382e41f4b71Sopenharmony_ci
4383e41f4b71Sopenharmony_citype OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void
4384e41f4b71Sopenharmony_ci
4385e41f4b71Sopenharmony_ci状态机切换事件回调方法。
4386e41f4b71Sopenharmony_ci
4387e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4388e41f4b71Sopenharmony_ci
4389e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
4390e41f4b71Sopenharmony_ci
4391e41f4b71Sopenharmony_ci| 参数名   | 类型   | 必填 | 说明                                                         |
4392e41f4b71Sopenharmony_ci| ------ | ------ | ------ | ------------------------------------------------------------ |
4393e41f4b71Sopenharmony_ci| state  | [AVRecorderState](#avrecorderstate9) | 必填 | 当前播放状态。     |
4394e41f4b71Sopenharmony_ci| reason | [StateChangeReason](#statechangereason9) | 必填 | 当前播放状态的切换原因。 |
4395e41f4b71Sopenharmony_ci
4396e41f4b71Sopenharmony_ci## AVRecorderConfig<sup>9+</sup>
4397e41f4b71Sopenharmony_ci
4398e41f4b71Sopenharmony_ci表示音视频录制的参数设置。
4399e41f4b71Sopenharmony_ci
4400e41f4b71Sopenharmony_ci通过audioSourceType和videoSourceType区分纯音频录制、纯视频录制或音视频录制。纯音频录制时,仅需要设置audioSourceType;纯视频录制时,仅需要设置videoSourceType;音视频录制时,audioSourceType和videoSourceType均需要设置。
4401e41f4b71Sopenharmony_ci
4402e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4403e41f4b71Sopenharmony_ci
4404e41f4b71Sopenharmony_ci| 名称            | 类型                                     | 必填 | 说明                                                         |
4405e41f4b71Sopenharmony_ci| --------------- | ---------------------------------------- | ---- | ------------------------------------------------------------ |
4406e41f4b71Sopenharmony_ci| audioSourceType | [AudioSourceType](#audiosourcetype9)     | 否   | 选择录制的音频源类型。选择音频录制时必填。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4407e41f4b71Sopenharmony_ci| videoSourceType | [VideoSourceType](#videosourcetype9)     | 否   | 选择录制的视频源类型。选择视频录制时必填。                   |
4408e41f4b71Sopenharmony_ci| profile         | [AVRecorderProfile](#avrecorderprofile9) | 是   | 录制的profile,必要参数。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4409e41f4b71Sopenharmony_ci| url             | string                                   | 是   | 录制输出URL:fd://xx (fd number) ![img](figures/zh-cn_image_url.png),必要参数。 <br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4410e41f4b71Sopenharmony_ci|fileGenerationMode<sup>12+</sup> | [FileGenerationMode](#filegenerationmode12)  | 否   |  创建媒体文件的模式,配合[on('photoAssetAvailable')](#onphotoassetavailable12)监听使用。|
4411e41f4b71Sopenharmony_ci| rotation<sup>(deprecated)</sup>        | number                                   | 否   | 录制的视频旋转角度,mp4格式支持0,90,180,270,默认值为0。<br>从API version 6开始支持,从API version 12开始废弃。建议使用[AVMetadata](#avmetadata11).videoOrientation替代。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).videoOrientation。     |
4412e41f4b71Sopenharmony_ci| location<sup>(deprecated)</sup>        | [Location](#location)                    | 否   | 录制的地理位置,默认不记录地理位置信息。<br>从API version 6开始支持,从API version 12开始废弃。建议使用 [AVMetadata](#avmetadata11).location。如果同时设置两个值,将会采用[AVMetadata](#avmetadata11).location。 |
4413e41f4b71Sopenharmony_ci| metadata<sup>12+</sup>        | [AVMetadata](#avmetadata11)              | 否   | 设置元数据信息。详情见 [AVMetadata](#avmetadata11)。                  |
4414e41f4b71Sopenharmony_ci
4415e41f4b71Sopenharmony_ci## AVRecorderProfile<sup>9+</sup>
4416e41f4b71Sopenharmony_ci
4417e41f4b71Sopenharmony_ci音视频录制的配置文件。
4418e41f4b71Sopenharmony_ci
4419e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4420e41f4b71Sopenharmony_ci
4421e41f4b71Sopenharmony_ci| 名称             | 类型                                         | 必填 | 说明                                                         |
4422e41f4b71Sopenharmony_ci| ---------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
4423e41f4b71Sopenharmony_ci| audioBitrate     | number                                       | 否   | 音频编码比特率,选择音频录制时必填。<br>支持范围:<br>- AAC编码格式支持比特率范围[32000 - 500000]。<br>- G711-mulaw编码格式支持比特率范围[64000 - 64000]。<br>- MP3编码格式支持范围[8000, 16000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000]。<br>当使用MP3编码格式时,采样率和比特率的映射关系: <br>- 采样率使用16K以下时,对应比特率范围为[8kbps - 64kbps]。<br>- 采样率使用16K~32K时对应的比特率范围为[8kbps - 160kbps]。<br>- 采样率使用32K以上时对应的比特率范围为[32kbps - 320kbps]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4424e41f4b71Sopenharmony_ci| audioChannels    | number                                       | 否   | 音频采集声道数,选择音频录制时必填。<br>- AAC编码格式支持范围[1 - 8]。<br>- G711-mulaw编码格式支持范围[1 - 1]。<br>- MP3编码格式支持范围[1 - 2]。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。       |
4425e41f4b71Sopenharmony_ci| audioCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 音频编码格式,选择音频录制时必填。当前支持AUDIO_AAC,AUDIO_MP3,AUDIO_G711MU。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。     |
4426e41f4b71Sopenharmony_ci| audioSampleRate  | number                                       | 否   | 音频采样率,选择音频录制时必填。<br>支持范围:<br>- AAC编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000]。<br>- G711-mulaw编码支持采样率范围[8000 - 8000]。<br>- MP3编码支持采样率范围[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]。<br>可变比特率模式,码率仅作参考。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4427e41f4b71Sopenharmony_ci| fileFormat       | [ContainerFormatType](#containerformattype8) | 是   | 文件的容器格式,必要参数。当前支持MP4、M4A、MP3、WAV封装格式,不支持在MP4封装格式下使用AUDIO_MP3编码格式。<br>**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。|
4428e41f4b71Sopenharmony_ci| videoBitrate     | number                                       | 否   | 视频编码比特率,选择视频录制时必填,支持范围[10000 - 100000000]。  |
4429e41f4b71Sopenharmony_ci| videoCodec       | [CodecMimeType](#codecmimetype8)             | 否   | 视频编码格式,选择视频录制时必填。当前支持VIDEO_AVC。|
4430e41f4b71Sopenharmony_ci| videoFrameWidth  | number                                       | 否   | 视频帧的宽,选择视频录制时必填,支持范围[176 - 4096]。         |
4431e41f4b71Sopenharmony_ci| videoFrameHeight | number                                       | 否   | 视频帧的高,选择视频录制时必填,支持范围[144 - 4096]。         |
4432e41f4b71Sopenharmony_ci| videoFrameRate   | number                                       | 否   | 视频帧率,选择视频录制时必填,支持范围[1 - 60]。             |
4433e41f4b71Sopenharmony_ci| isHdr<sup>11+</sup>            | boolean                        | 否   | HDR编码,选择视频录制时选填,isHdr默认为false,对应编码格式没有要求,isHdr为true时,对应的编码格式必须为video/hevc。|
4434e41f4b71Sopenharmony_ci| enableTemporalScale<sup>12+</sup>            | boolean                        | 否   | 视频录制是否支持时域分层编码功能,选择视频录制时选填,enableTemporalScale默认为false。设置为true时,编码输出的码流中部分帧可以支持跳过不编码。|
4435e41f4b71Sopenharmony_ci
4436e41f4b71Sopenharmony_ci## AudioSourceType<sup>9+</sup>
4437e41f4b71Sopenharmony_ci
4438e41f4b71Sopenharmony_ci表示视频录制中音频源类型的枚举。
4439e41f4b71Sopenharmony_ci
4440e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4441e41f4b71Sopenharmony_ci
4442e41f4b71Sopenharmony_ci| 名称                      | 值   | 说明                   |
4443e41f4b71Sopenharmony_ci| ------------------------- | ---- | ---------------------- |
4444e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_DEFAULT | 0    | 默认的音频输入源类型。 |
4445e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_MIC     | 1    | 表示MIC的音频输入源。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4446e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_RECOGNITION<sup>12+</sup> | 2    | 表示语音识别场景的音频源。 |
4447e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_COMMUNICATION<sup>12+</sup>     | 7    | 表示语音通话场景的音频源。 |
4448e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_VOICE_MESSAGE<sup>12+</sup> | 10    | 表示短语音消息的音频源。 |
4449e41f4b71Sopenharmony_ci| AUDIO_SOURCE_TYPE_CAMCORDER<sup>12+</sup>     | 13    | 表示相机录像的音频源。 |
4450e41f4b71Sopenharmony_ci
4451e41f4b71Sopenharmony_ci## VideoSourceType<sup>9+</sup>
4452e41f4b71Sopenharmony_ci
4453e41f4b71Sopenharmony_ci表示视频录制中视频源类型的枚举。
4454e41f4b71Sopenharmony_ci
4455e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4456e41f4b71Sopenharmony_ci
4457e41f4b71Sopenharmony_ci| 名称                          | 值   | 说明                            |
4458e41f4b71Sopenharmony_ci| ----------------------------- | ---- | ------------------------------- |
4459e41f4b71Sopenharmony_ci| VIDEO_SOURCE_TYPE_SURFACE_YUV | 0    | 输入surface中携带的是raw data。 |
4460e41f4b71Sopenharmony_ci| VIDEO_SOURCE_TYPE_SURFACE_ES  | 1    | 输入surface中携带的是ES data。  |
4461e41f4b71Sopenharmony_ci
4462e41f4b71Sopenharmony_ci## ContainerFormatType<sup>8+</sup>
4463e41f4b71Sopenharmony_ci
4464e41f4b71Sopenharmony_ci表示容器格式类型的枚举,缩写为CFT。
4465e41f4b71Sopenharmony_ci
4466e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
4467e41f4b71Sopenharmony_ci
4468e41f4b71Sopenharmony_ci| 名称        | 值    | 说明                  |
4469e41f4b71Sopenharmony_ci| ----------- | ----- | --------------------- |
4470e41f4b71Sopenharmony_ci| CFT_MPEG_4  | 'mp4' | 视频的容器格式,MP4。 |
4471e41f4b71Sopenharmony_ci| CFT_MPEG_4A | 'm4a' | 音频的容器格式,M4A。<br> **原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。 |
4472e41f4b71Sopenharmony_ci| CFT_MP3<sup>12+</sup>  | 'mp3' | 音频的容器格式,MP3。 |
4473e41f4b71Sopenharmony_ci| CFT_WAV<sup>12+</sup>  | 'wav' | 音频的容器格式,WAV。 |
4474e41f4b71Sopenharmony_ci
4475e41f4b71Sopenharmony_ci## Location
4476e41f4b71Sopenharmony_ci
4477e41f4b71Sopenharmony_ci视频录制的地理位置。
4478e41f4b71Sopenharmony_ci
4479e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
4480e41f4b71Sopenharmony_ci
4481e41f4b71Sopenharmony_ci| 名称      | 类型   | 必填 | 说明             |
4482e41f4b71Sopenharmony_ci| --------- | ------ | ---- | ---------------- |
4483e41f4b71Sopenharmony_ci| latitude  | number | 是   | 地理位置的纬度。 |
4484e41f4b71Sopenharmony_ci| longitude | number | 是   | 地理位置的经度。 |
4485e41f4b71Sopenharmony_ci
4486e41f4b71Sopenharmony_ci## EncoderInfo<sup>11+</sup>
4487e41f4b71Sopenharmony_ci
4488e41f4b71Sopenharmony_ci编码器和规格参数
4489e41f4b71Sopenharmony_ci
4490e41f4b71Sopenharmony_ci系统能力:SystemCapability.Multimedia.Media.AVRecorder
4491e41f4b71Sopenharmony_ci
4492e41f4b71Sopenharmony_ci| 名称       | 类型                             | 可读 | 可写 | 说明                                                         |
4493e41f4b71Sopenharmony_ci| ---------- | -------------------------------- | ---- | ---- | ------------------------------------------------------------ |
4494e41f4b71Sopenharmony_ci| mimeType   | [CodecMimeType](#codecmimetype8) | 是   | 否   | 编码器MIME类型名称                                           |
4495e41f4b71Sopenharmony_ci| type       | string                           | 是   | 否   | 编码器类型,audio表示音频编码器,video表示视频编码器         |
4496e41f4b71Sopenharmony_ci| bitRate    | [Range](#range11)                | 是   | 否   | 比特率,包含该编码器的最大和最小值                           |
4497e41f4b71Sopenharmony_ci| frameRate  | [Range](#range11)                | 是   | 否   | 视频帧率,包含帧率的最大和最小值,仅视频编码器拥有           |
4498e41f4b71Sopenharmony_ci| width      | [Range](#range11)                | 是   | 否   | 视频帧的宽度,包含宽度的最大和最小值,仅视频编码器拥有       |
4499e41f4b71Sopenharmony_ci| height     | [Range](#range11)                | 是   | 否   | 视频帧的高度,包含高度的最大和最小值,仅视频编码器拥有       |
4500e41f4b71Sopenharmony_ci| channels   | [Range](#range11)                | 是   | 否   | 音频采集声道数,包含声道数的最大和最小值,仅音频编码器拥有   |
4501e41f4b71Sopenharmony_ci| sampleRate | Array\<number>                    | 是   | 否   | 音频采样率,包含所有可以使用的音频采样率值,仅音频编码器拥有 |
4502e41f4b71Sopenharmony_ci
4503e41f4b71Sopenharmony_ci## Range<sup>11+</sup>
4504e41f4b71Sopenharmony_ci
4505e41f4b71Sopenharmony_ci表示一个类型的范围
4506e41f4b71Sopenharmony_ci
4507e41f4b71Sopenharmony_ci系统能力:SystemCapability.Multimedia.Media.AVRecorder
4508e41f4b71Sopenharmony_ci
4509e41f4b71Sopenharmony_ci| 名称 | 类型   | 可读 | 可写 | 说明         |
4510e41f4b71Sopenharmony_ci| ---- | ------ | ---- | ---- | ------------ |
4511e41f4b71Sopenharmony_ci| min  | number | 是   | 否   | 范围的最小值 |
4512e41f4b71Sopenharmony_ci| max  | number | 是   | 否   | 范围的最大值 |
4513e41f4b71Sopenharmony_ci
4514e41f4b71Sopenharmony_ci## FileGenerationMode<sup>12+</sup>
4515e41f4b71Sopenharmony_ci
4516e41f4b71Sopenharmony_ci表示创建媒体文件模式的枚举。
4517e41f4b71Sopenharmony_ci
4518e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
4519e41f4b71Sopenharmony_ci
4520e41f4b71Sopenharmony_ci| 名称                          | 值   | 说明                            |
4521e41f4b71Sopenharmony_ci| ----------------------------- | ---- | ------------------------------- |
4522e41f4b71Sopenharmony_ci| APP_CREATE  | 0    | 由应用自行在沙箱创建媒体文件。 |
4523e41f4b71Sopenharmony_ci| AUTO_CREATE_CAMERA_SCENE  | 1    | 由系统创建媒体文件,当前仅在相机录制场景下生效,会忽略应用设置的url。 |
4524e41f4b71Sopenharmony_ci
4525e41f4b71Sopenharmony_ci## AVTranscoder<sup>12+</sup>
4526e41f4b71Sopenharmony_ci
4527e41f4b71Sopenharmony_ci视频转码管理类,用于视频转码。在调用AVTranscoder的方法前,需要先通过createAVTranscoder()构建一个AVTranscoder实例。
4528e41f4b71Sopenharmony_ci
4529e41f4b71Sopenharmony_ci视频转码demo可参考:[视频转码开发指导](../../media/media/using-avtranscoder-for-transcodering.md)
4530e41f4b71Sopenharmony_ci
4531e41f4b71Sopenharmony_ci### 属性
4532e41f4b71Sopenharmony_ci
4533e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4534e41f4b71Sopenharmony_ci
4535e41f4b71Sopenharmony_ci| 名称    | 类型                                 | 只读 | 可选 | 说明               |
4536e41f4b71Sopenharmony_ci| ------- | ------------------------------------ | ---- | ---- | ------------------ |
4537e41f4b71Sopenharmony_ci| fdSrc<sup>12+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       |  否  | 否   | 源媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 |
4538e41f4b71Sopenharmony_ci| fdDst<sup>12+</sup>                               | number                 |  否  | 否   | 目标媒体文件描述,通过该属性设置数据输出。在创建AVTranscoder实例后,必须设置fdSrc和fdDst属性。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVTranscoder 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频转码数据获取异常。 |
4539e41f4b71Sopenharmony_ci
4540e41f4b71Sopenharmony_ci### prepare<sup>12+</sup>
4541e41f4b71Sopenharmony_ci
4542e41f4b71Sopenharmony_ciprepare(config: AVTranscoderConfig): Promise\<void>
4543e41f4b71Sopenharmony_ci
4544e41f4b71Sopenharmony_ci异步方式进行视频转码的参数设置。通过Promise获取返回值。
4545e41f4b71Sopenharmony_ci
4546e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4547e41f4b71Sopenharmony_ci
4548e41f4b71Sopenharmony_ci**参数:**
4549e41f4b71Sopenharmony_ci
4550e41f4b71Sopenharmony_ci| 参数名 | 类型                                   | 必填 | 说明                       |
4551e41f4b71Sopenharmony_ci| ------ | -------------------------------------- | ---- | -------------------------- |
4552e41f4b71Sopenharmony_ci| config | [AVTranscoderConfig](#avtranscoderconfig12) | 是   | 配置视频转码的相关参数。 |
4553e41f4b71Sopenharmony_ci
4554e41f4b71Sopenharmony_ci**返回值:**
4555e41f4b71Sopenharmony_ci
4556e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
4557e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
4558e41f4b71Sopenharmony_ci| Promise\<void> | 异步视频转码prepare方法的Promise返回值。 |
4559e41f4b71Sopenharmony_ci
4560e41f4b71Sopenharmony_ci**错误码:**
4561e41f4b71Sopenharmony_ci
4562e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4563e41f4b71Sopenharmony_ci
4564e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
4565e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
4566e41f4b71Sopenharmony_ci| 401  | The parameter check failed. Return by promise. |
4567e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4568e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
4569e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by promise.  |
4570e41f4b71Sopenharmony_ci
4571e41f4b71Sopenharmony_ci**示例:**
4572e41f4b71Sopenharmony_ci
4573e41f4b71Sopenharmony_ci```ts
4574e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4575e41f4b71Sopenharmony_ci
4576e41f4b71Sopenharmony_ci// 配置参数以实际硬件设备支持的范围为准
4577e41f4b71Sopenharmony_cilet avTranscoderConfig: media.AVTranscoderConfig = {
4578e41f4b71Sopenharmony_ci  audioBitrate : 200000,
4579e41f4b71Sopenharmony_ci  audioCodec : media.CodecMimeType.AUDIO_AAC,
4580e41f4b71Sopenharmony_ci  fileFormat : media.ContainerFormatType.CFT_MPEG_4,
4581e41f4b71Sopenharmony_ci  videoBitrate : 3000000,
4582e41f4b71Sopenharmony_ci  videoCodec : media.CodecMimeType.VIDEO_AVC,
4583e41f4b71Sopenharmony_ci  videoFrameWidth : 1280,
4584e41f4b71Sopenharmony_ci  videoFrameHeight : 720,
4585e41f4b71Sopenharmony_ci}
4586e41f4b71Sopenharmony_ci
4587e41f4b71Sopenharmony_ciavTranscoder.prepare(avTranscoderConfig).then(() => {
4588e41f4b71Sopenharmony_ci  console.info('prepare success');
4589e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4590e41f4b71Sopenharmony_ci  console.error('prepare failed and catch error is ' + err.message);
4591e41f4b71Sopenharmony_ci});
4592e41f4b71Sopenharmony_ci```
4593e41f4b71Sopenharmony_ci
4594e41f4b71Sopenharmony_ci### start<sup>12+</sup>
4595e41f4b71Sopenharmony_ci
4596e41f4b71Sopenharmony_cistart(): Promise\<void>
4597e41f4b71Sopenharmony_ci
4598e41f4b71Sopenharmony_ci异步方式开始视频转码。通过Promise获取返回值。
4599e41f4b71Sopenharmony_ci
4600e41f4b71Sopenharmony_ci需要[prepare()](#prepare12)事件成功触发后,才能调用start方法。
4601e41f4b71Sopenharmony_ci
4602e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4603e41f4b71Sopenharmony_ci
4604e41f4b71Sopenharmony_ci**返回值:**
4605e41f4b71Sopenharmony_ci
4606e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
4607e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
4608e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始视频转码方法的Promise返回值。 |
4609e41f4b71Sopenharmony_ci
4610e41f4b71Sopenharmony_ci**错误码:**
4611e41f4b71Sopenharmony_ci
4612e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4613e41f4b71Sopenharmony_ci
4614e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
4615e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
4616e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4617e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
4618e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
4619e41f4b71Sopenharmony_ci
4620e41f4b71Sopenharmony_ci**示例:**
4621e41f4b71Sopenharmony_ci
4622e41f4b71Sopenharmony_ci```ts
4623e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4624e41f4b71Sopenharmony_ci
4625e41f4b71Sopenharmony_ciavTranscoder.start().then(() => {
4626e41f4b71Sopenharmony_ci  console.info('start AVTranscoder success');
4627e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4628e41f4b71Sopenharmony_ci  console.error('start AVTranscoder failed and catch error is ' + err.message);
4629e41f4b71Sopenharmony_ci});
4630e41f4b71Sopenharmony_ci```
4631e41f4b71Sopenharmony_ci
4632e41f4b71Sopenharmony_ci### pause<sup>12+</sup>
4633e41f4b71Sopenharmony_ci
4634e41f4b71Sopenharmony_cipause(): Promise\<void>
4635e41f4b71Sopenharmony_ci
4636e41f4b71Sopenharmony_ci异步方式暂停视频转码。通过Promise获取返回值。
4637e41f4b71Sopenharmony_ci
4638e41f4b71Sopenharmony_ci需要[start()](#start12)事件成功触发后,才能调用pause方法,可以通过调用[resume()](#resume12)接口来恢复转码。
4639e41f4b71Sopenharmony_ci
4640e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4641e41f4b71Sopenharmony_ci
4642e41f4b71Sopenharmony_ci**返回值:**
4643e41f4b71Sopenharmony_ci
4644e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
4645e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
4646e41f4b71Sopenharmony_ci| Promise\<void> | 异步暂停视频转码方法的Promise返回值。 |
4647e41f4b71Sopenharmony_ci
4648e41f4b71Sopenharmony_ci**错误码:**
4649e41f4b71Sopenharmony_ci
4650e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4651e41f4b71Sopenharmony_ci
4652e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
4653e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
4654e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4655e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
4656e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
4657e41f4b71Sopenharmony_ci
4658e41f4b71Sopenharmony_ci**示例:**
4659e41f4b71Sopenharmony_ci
4660e41f4b71Sopenharmony_ci```ts
4661e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4662e41f4b71Sopenharmony_ci
4663e41f4b71Sopenharmony_ciavTranscoder.pause().then(() => {
4664e41f4b71Sopenharmony_ci  console.info('pause AVTranscoder success');
4665e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4666e41f4b71Sopenharmony_ci  console.error('pause AVTranscoder failed and catch error is ' + err.message);
4667e41f4b71Sopenharmony_ci});
4668e41f4b71Sopenharmony_ci```
4669e41f4b71Sopenharmony_ci
4670e41f4b71Sopenharmony_ci### resume<sup>12+</sup>
4671e41f4b71Sopenharmony_ci
4672e41f4b71Sopenharmony_ciresume(): Promise\<void>
4673e41f4b71Sopenharmony_ci
4674e41f4b71Sopenharmony_ci异步方式恢复视频转码。通过Promise获取返回值。
4675e41f4b71Sopenharmony_ci
4676e41f4b71Sopenharmony_ci需要在[pause()](#pause12)事件成功触发后,才能调用resume方法。
4677e41f4b71Sopenharmony_ci
4678e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4679e41f4b71Sopenharmony_ci
4680e41f4b71Sopenharmony_ci**返回值:**
4681e41f4b71Sopenharmony_ci
4682e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
4683e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
4684e41f4b71Sopenharmony_ci| Promise\<void> | 异步恢复视频转码方法的Promise返回值。 |
4685e41f4b71Sopenharmony_ci
4686e41f4b71Sopenharmony_ci**错误码:**
4687e41f4b71Sopenharmony_ci
4688e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4689e41f4b71Sopenharmony_ci
4690e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
4691e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
4692e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4693e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
4694e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
4695e41f4b71Sopenharmony_ci
4696e41f4b71Sopenharmony_ci**示例:**
4697e41f4b71Sopenharmony_ci
4698e41f4b71Sopenharmony_ci```ts
4699e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4700e41f4b71Sopenharmony_ci
4701e41f4b71Sopenharmony_ciavTranscoder.resume().then(() => {
4702e41f4b71Sopenharmony_ci  console.info('resume AVTranscoder success');
4703e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4704e41f4b71Sopenharmony_ci  console.error('resume AVTranscoder failed and catch error is ' + err.message);
4705e41f4b71Sopenharmony_ci});
4706e41f4b71Sopenharmony_ci```
4707e41f4b71Sopenharmony_ci
4708e41f4b71Sopenharmony_ci### cancel<sup>12+</sup>
4709e41f4b71Sopenharmony_ci
4710e41f4b71Sopenharmony_cicancel(): Promise\<void>
4711e41f4b71Sopenharmony_ci
4712e41f4b71Sopenharmony_ci异步方式取消视频转码。通过Promise获取返回值。
4713e41f4b71Sopenharmony_ci
4714e41f4b71Sopenharmony_ci需要在[prepare()](#prepare12)、[start()](#start12)、[pause()](#pause12)或[resume()](#resume12)事件成功触发后,才能调用cancel方法。
4715e41f4b71Sopenharmony_ci
4716e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4717e41f4b71Sopenharmony_ci
4718e41f4b71Sopenharmony_ci**返回值:**
4719e41f4b71Sopenharmony_ci
4720e41f4b71Sopenharmony_ci| 类型           | 说明                                  |
4721e41f4b71Sopenharmony_ci| -------------- | ------------------------------------- |
4722e41f4b71Sopenharmony_ci| Promise\<void> | 异步取消视频转码方法的Promise返回值。 |
4723e41f4b71Sopenharmony_ci
4724e41f4b71Sopenharmony_ci**错误码:**
4725e41f4b71Sopenharmony_ci
4726e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4727e41f4b71Sopenharmony_ci
4728e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                               |
4729e41f4b71Sopenharmony_ci| -------- | -------------------------------------- |
4730e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4731e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.           |
4732e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.       |
4733e41f4b71Sopenharmony_ci
4734e41f4b71Sopenharmony_ci**示例:**
4735e41f4b71Sopenharmony_ci
4736e41f4b71Sopenharmony_ci```ts
4737e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4738e41f4b71Sopenharmony_ci
4739e41f4b71Sopenharmony_ciavTranscoder.cancel().then(() => {
4740e41f4b71Sopenharmony_ci  console.info('cancel AVTranscoder success');
4741e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4742e41f4b71Sopenharmony_ci  console.error('cancel AVTranscoder failed and catch error is ' + err.message);
4743e41f4b71Sopenharmony_ci});
4744e41f4b71Sopenharmony_ci```
4745e41f4b71Sopenharmony_ci
4746e41f4b71Sopenharmony_ci### release<sup>12+</sup>
4747e41f4b71Sopenharmony_ci
4748e41f4b71Sopenharmony_cirelease(): Promise\<void>
4749e41f4b71Sopenharmony_ci
4750e41f4b71Sopenharmony_ci异步方式释放视频转码资源。通过Promise获取返回值。
4751e41f4b71Sopenharmony_ci
4752e41f4b71Sopenharmony_ci释放视频转码资源之后,该AVTranscoder实例不能再进行任何操作。
4753e41f4b71Sopenharmony_ci
4754e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4755e41f4b71Sopenharmony_ci
4756e41f4b71Sopenharmony_ci**返回值:**
4757e41f4b71Sopenharmony_ci
4758e41f4b71Sopenharmony_ci| 类型           | 说明                                        |
4759e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------- |
4760e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放视频转码资源方法的Promise返回值。 |
4761e41f4b71Sopenharmony_ci
4762e41f4b71Sopenharmony_ci**错误码:**
4763e41f4b71Sopenharmony_ci
4764e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4765e41f4b71Sopenharmony_ci
4766e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                          |
4767e41f4b71Sopenharmony_ci| -------- | --------------------------------- |
4768e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by promise. |
4769e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
4770e41f4b71Sopenharmony_ci
4771e41f4b71Sopenharmony_ci**示例:**
4772e41f4b71Sopenharmony_ci
4773e41f4b71Sopenharmony_ci```ts
4774e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4775e41f4b71Sopenharmony_ci
4776e41f4b71Sopenharmony_ciavTranscoder.release().then(() => {
4777e41f4b71Sopenharmony_ci  console.info('release AVTranscoder success');
4778e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
4779e41f4b71Sopenharmony_ci  console.error('release AVTranscoder failed and catch error is ' + err.message);
4780e41f4b71Sopenharmony_ci});
4781e41f4b71Sopenharmony_ci```
4782e41f4b71Sopenharmony_ci
4783e41f4b71Sopenharmony_ci### on('progressUpdate')<sup>12+</sup>
4784e41f4b71Sopenharmony_ci
4785e41f4b71Sopenharmony_cion(type: 'progressUpdate', callback: Callback\<number>): void
4786e41f4b71Sopenharmony_ci
4787e41f4b71Sopenharmony_ci注册转码进度更新事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。
4788e41f4b71Sopenharmony_ci
4789e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4790e41f4b71Sopenharmony_ci
4791e41f4b71Sopenharmony_ci**参数:**
4792e41f4b71Sopenharmony_ci
4793e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
4794e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
4795e41f4b71Sopenharmony_ci| type     | string   | 是   | 进度更新事件回调类型,支持的事件:'progressUpdate',在转码过程中系统会自动触发此事件。 |
4796e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是   | 进度更新事件回调方法,progress: number,表示当前转码进度 |
4797e41f4b71Sopenharmony_ci
4798e41f4b71Sopenharmony_ci**示例:**
4799e41f4b71Sopenharmony_ci
4800e41f4b71Sopenharmony_ci```ts
4801e41f4b71Sopenharmony_ciavTranscoder.on('progressUpdate', (progress: number) => {
4802e41f4b71Sopenharmony_ci  console.info('avTranscoder progressUpdate = ' + progress);
4803e41f4b71Sopenharmony_ci});
4804e41f4b71Sopenharmony_ci```
4805e41f4b71Sopenharmony_ci
4806e41f4b71Sopenharmony_ci### off('progressUpdate')<sup>12+</sup>
4807e41f4b71Sopenharmony_ci
4808e41f4b71Sopenharmony_cioff(type:'progressUpdate', callback?: Callback\<number>): void
4809e41f4b71Sopenharmony_ci
4810e41f4b71Sopenharmony_ci取消注册转码进度更新事件。
4811e41f4b71Sopenharmony_ci
4812e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4813e41f4b71Sopenharmony_ci
4814e41f4b71Sopenharmony_ci**参数:**
4815e41f4b71Sopenharmony_ci
4816e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4817e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4818e41f4b71Sopenharmony_ci| type   | string | 是   | 进度更新事件回调类型,支持的事件:'progressUpdate',用户操作和系统都会触发此事件。 |
4819e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否   | 已注册的进度更新事件回调。由于当前回调注册时,仅会保留最后一次注册的回调,建议此参数缺省。 |
4820e41f4b71Sopenharmony_ci
4821e41f4b71Sopenharmony_ci**示例:**
4822e41f4b71Sopenharmony_ci
4823e41f4b71Sopenharmony_ci```ts
4824e41f4b71Sopenharmony_ciavTranscoder.off('progressUpdate');
4825e41f4b71Sopenharmony_ci```
4826e41f4b71Sopenharmony_ci
4827e41f4b71Sopenharmony_ci### on('error')<sup>12+</sup>
4828e41f4b71Sopenharmony_ci
4829e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
4830e41f4b71Sopenharmony_ci
4831e41f4b71Sopenharmony_ci注册AVtranscoder的错误事件,该事件仅用于错误提示。如果AVTranscoder上报error事件,用户需要通过[release()](#release12)退出转码操作。
4832e41f4b71Sopenharmony_ci
4833e41f4b71Sopenharmony_ci用户只能订阅一个错误事件的回调方法,当用户重复订阅时,以最后一次订阅的回调接口为准。
4834e41f4b71Sopenharmony_ci
4835e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4836e41f4b71Sopenharmony_ci
4837e41f4b71Sopenharmony_ci**参数:**
4838e41f4b71Sopenharmony_ci
4839e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                                         |
4840e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ |
4841e41f4b71Sopenharmony_ci| type     | string        | 是   | 转码错误事件回调类型'error'。 <br>- 'error':录制过程中发生错误,触发该事件。 |
4842e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 转码错误事件回调方法。                                       |
4843e41f4b71Sopenharmony_ci
4844e41f4b71Sopenharmony_ci**错误码:**
4845e41f4b71Sopenharmony_ci
4846e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)。
4847e41f4b71Sopenharmony_ci
4848e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4849e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4850e41f4b71Sopenharmony_ci| 401      | The parameter check failed. |
4851e41f4b71Sopenharmony_ci| 801      | Capability not supported. |
4852e41f4b71Sopenharmony_ci| 5400101  | No memory.            |
4853e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. |
4854e41f4b71Sopenharmony_ci| 5400103  | I/O error.              |
4855e41f4b71Sopenharmony_ci| 5400104  | Time out.            |
4856e41f4b71Sopenharmony_ci| 5400105  | Service died.           |
4857e41f4b71Sopenharmony_ci| 5400106  | Unsupport format.      |
4858e41f4b71Sopenharmony_ci
4859e41f4b71Sopenharmony_ci**示例:**
4860e41f4b71Sopenharmony_ci
4861e41f4b71Sopenharmony_ci```ts
4862e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4863e41f4b71Sopenharmony_ci
4864e41f4b71Sopenharmony_ciavTranscoder.on('error', (err: BusinessError) => {
4865e41f4b71Sopenharmony_ci  console.info('case avTranscoder.on(error) called, errMessage is ' + err.message);
4866e41f4b71Sopenharmony_ci});
4867e41f4b71Sopenharmony_ci```
4868e41f4b71Sopenharmony_ci
4869e41f4b71Sopenharmony_ci### off('error')<sup>12+</sup>
4870e41f4b71Sopenharmony_ci
4871e41f4b71Sopenharmony_cioff(type:'error', callback?: ErrorCallback): void
4872e41f4b71Sopenharmony_ci
4873e41f4b71Sopenharmony_ci取消注册转码错误事件,取消后不再接收到AVTranscoder的错误事件。
4874e41f4b71Sopenharmony_ci
4875e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4876e41f4b71Sopenharmony_ci
4877e41f4b71Sopenharmony_ci**参数:**
4878e41f4b71Sopenharmony_ci
4879e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4880e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4881e41f4b71Sopenharmony_ci| type   | string | 是   | 转码错误事件回调类型'error'。 <br>- 'error':转码过程中发生错误,触发该事件。 |
4882e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 错误事件回调方法 |
4883e41f4b71Sopenharmony_ci
4884e41f4b71Sopenharmony_ci**示例:**
4885e41f4b71Sopenharmony_ci
4886e41f4b71Sopenharmony_ci```ts
4887e41f4b71Sopenharmony_ciavTranscoder.off('error');
4888e41f4b71Sopenharmony_ci```
4889e41f4b71Sopenharmony_ci
4890e41f4b71Sopenharmony_ci### on('complete')<sup>12+</sup>
4891e41f4b71Sopenharmony_ci
4892e41f4b71Sopenharmony_cion(type: 'complete', callback: Callback\<void>): void
4893e41f4b71Sopenharmony_ci
4894e41f4b71Sopenharmony_ci注册转码完成事件,并通过注册的回调方法通知用户。用户只能注册一个进度更新事件的回调方法,当用户重复注册时,以最后一次注册的回调接口为准。
4895e41f4b71Sopenharmony_ci
4896e41f4b71Sopenharmony_ci当AVTranscoder上报complete事件时,当前转码操作已完成,用户可通过[release()](#release12)退出转码操作。
4897e41f4b71Sopenharmony_ci
4898e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4899e41f4b71Sopenharmony_ci
4900e41f4b71Sopenharmony_ci**参数:**
4901e41f4b71Sopenharmony_ci
4902e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
4903e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
4904e41f4b71Sopenharmony_ci| type     | string   | 是   | 完成事件回调类型,支持的事件:'complete',在转码过程中系统会自动触发此事件。 |
4905e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 是   | 完成事件回调方法 |
4906e41f4b71Sopenharmony_ci
4907e41f4b71Sopenharmony_ci**示例:**
4908e41f4b71Sopenharmony_ci
4909e41f4b71Sopenharmony_ci```ts
4910e41f4b71Sopenharmony_ciavTranscoder.on('complete', () => {
4911e41f4b71Sopenharmony_ci  console.info('avTranscoder complete');
4912e41f4b71Sopenharmony_ci});
4913e41f4b71Sopenharmony_ci```
4914e41f4b71Sopenharmony_ci
4915e41f4b71Sopenharmony_ci### off('complete')<sup>12+</sup>
4916e41f4b71Sopenharmony_ci
4917e41f4b71Sopenharmony_cioff(type:'complete', callback?: Callback\<void>): void
4918e41f4b71Sopenharmony_ci
4919e41f4b71Sopenharmony_ci取消注册转码完成事件。
4920e41f4b71Sopenharmony_ci
4921e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4922e41f4b71Sopenharmony_ci
4923e41f4b71Sopenharmony_ci**参数:**
4924e41f4b71Sopenharmony_ci
4925e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
4926e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
4927e41f4b71Sopenharmony_ci| type   | string | 是   | 转码完成事件回调类型,支持的事件:'complete',用户操作和系统都会触发此事件。 |
4928e41f4b71Sopenharmony_ci| callback | [Callback](../apis-basic-services-kit/js-apis-base.md#callback) | 否   | 完成事件回调方法 |
4929e41f4b71Sopenharmony_ci
4930e41f4b71Sopenharmony_ci**示例:**
4931e41f4b71Sopenharmony_ci
4932e41f4b71Sopenharmony_ci```ts
4933e41f4b71Sopenharmony_ciavTranscoder.off('complete');
4934e41f4b71Sopenharmony_ci```
4935e41f4b71Sopenharmony_ci
4936e41f4b71Sopenharmony_ci## AVTranscoderConfig<sup>12+</sup>
4937e41f4b71Sopenharmony_ci
4938e41f4b71Sopenharmony_ci表示视频转码的参数设置。
4939e41f4b71Sopenharmony_ci
4940e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVTranscoder
4941e41f4b71Sopenharmony_ci
4942e41f4b71Sopenharmony_ci| 名称            | 类型                                    | 只读 | 可选 | 说明                                                         |
4943e41f4b71Sopenharmony_ci| --------------- | ---------------------------------------- |---- | ---- | ------------------------------------------------------------ |
4944e41f4b71Sopenharmony_ci| audioBitrate | number     | 否 | 是 | 输出音频的码率,单位为比特率(bps)。用户不设置,则默认设置为48Kbps|
4945e41f4b71Sopenharmony_ci| audioCodec | [CodecMimeType](#codecmimetype8)     | 否 | 是  | 输出音频的编码格式,当前仅支持AAC。                   |
4946e41f4b71Sopenharmony_ci| fileFormat         | [ContainerFormatType](#containerformattype8) | 否 | 否   | 输出视频文件的封装格式,当前视频文件仅支持MP4。|
4947e41f4b71Sopenharmony_ci| videoBitrate         | number | 否 |  是  | 输出视频的码率,单位为比特率(bps)。用户不设置,则默认码率按输出视频的分辨率设置,[240p,480P]默认码率值为1Mbps,(480P,720P]默认码率值为2Mbps,(720P,1080P]默认码率值为4Mbps,1080P及以上默认值为8Mbps。|
4948e41f4b71Sopenharmony_ci| videoCodec        | [CodecMimeType](#codecmimetype8) | 否 | 是   | 输出视频的编码格式,当前仅支持AVC和HEVC。|
4949e41f4b71Sopenharmony_ci| videoFrameWidth        | number | 否 |  是   | 输出视频帧的宽,单位为像素(px)。用户不设置,则默认设置为源视频帧的宽|
4950e41f4b71Sopenharmony_ci| videoFrameHeight        | number | 否 |  是   | 输出视频帧的高,单位为像素(px)。用户不设置,则默认设置为源视频帧的高|
4951e41f4b71Sopenharmony_ci
4952e41f4b71Sopenharmony_ci
4953e41f4b71Sopenharmony_ci
4954e41f4b71Sopenharmony_ci## AVMetadataExtractor<sup>11+</sup>
4955e41f4b71Sopenharmony_ci
4956e41f4b71Sopenharmony_ci元数据获取类,用于从媒体资源中获取元数据。在调用AVMetadataExtractor的方法前,需要先通过[createAVMetadataExtractor()](#mediacreateavmetadataextractor11)构建一个AVMetadataExtractor实例。
4957e41f4b71Sopenharmony_ci
4958e41f4b71Sopenharmony_ci获取音频或视频元数据的demo可参考:[获取音视频元数据开发指导](../../media/media/avmetadataextractor.md)。
4959e41f4b71Sopenharmony_ci
4960e41f4b71Sopenharmony_ci### 属性
4961e41f4b71Sopenharmony_ci
4962e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
4963e41f4b71Sopenharmony_ci
4964e41f4b71Sopenharmony_ci| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
4965e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
4966e41f4b71Sopenharmony_ci| fdSrc<sup>11+</sup>                                  | [AVFileDescriptor](#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVMetadataExtractor 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致音视频元数据获取异常。 |
4967e41f4b71Sopenharmony_ci| dataSrc<sup>11+</sup>                               | [AVDataSrcDescriptor](#avdatasrcdescriptor10)                | 是   | 是   | 流式媒体资源描述,通过该属性设置数据源。在获取元数据之前,必须设置数据源属性,只能设置fdSrc和dataSrc的其中一个。<br/> 当应用从远端获取音视频媒体文件,在应用未下载完整音视频资源时,可以设置dataSrc提前获取该资源的元数据。|
4968e41f4b71Sopenharmony_ci
4969e41f4b71Sopenharmony_ci### fetchMetadata<sup>11+</sup>
4970e41f4b71Sopenharmony_ci
4971e41f4b71Sopenharmony_cifetchMetadata(callback: AsyncCallback\<AVMetadata>): void
4972e41f4b71Sopenharmony_ci
4973e41f4b71Sopenharmony_ci异步方式获取媒体元数据。通过注册回调函数获取返回值。
4974e41f4b71Sopenharmony_ci
4975e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
4976e41f4b71Sopenharmony_ci
4977e41f4b71Sopenharmony_ci**参数:**
4978e41f4b71Sopenharmony_ci
4979e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
4980e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
4981e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVMetadata](#avmetadata11)>       | 是   | 回调函数。异步返回音视频元数据对象(AVMetadata)。|
4982e41f4b71Sopenharmony_ci
4983e41f4b71Sopenharmony_ci**错误码:**
4984e41f4b71Sopenharmony_ci
4985e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
4986e41f4b71Sopenharmony_ci
4987e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
4988e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
4989e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by callback. |
4990e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by callback.  |
4991e41f4b71Sopenharmony_ci
4992e41f4b71Sopenharmony_ci**示例:**
4993e41f4b71Sopenharmony_ci
4994e41f4b71Sopenharmony_ci```ts
4995e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
4996e41f4b71Sopenharmony_ci
4997e41f4b71Sopenharmony_ciavMetadataExtractor.fetchMetadata((error: BusinessError, metadata: media.AVMetadata) => {
4998e41f4b71Sopenharmony_ci  if (error) {
4999e41f4b71Sopenharmony_ci    console.error(`Failed to fetch Metadata, err = ${JSON.stringify(error)}`);
5000e41f4b71Sopenharmony_ci    return;
5001e41f4b71Sopenharmony_ci  }
5002e41f4b71Sopenharmony_ci  console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`);
5003e41f4b71Sopenharmony_ci});
5004e41f4b71Sopenharmony_ci```
5005e41f4b71Sopenharmony_ci
5006e41f4b71Sopenharmony_ci### fetchMetadata<sup>11+</sup>
5007e41f4b71Sopenharmony_ci
5008e41f4b71Sopenharmony_cifetchMetadata(): Promise\<AVMetadata>
5009e41f4b71Sopenharmony_ci
5010e41f4b71Sopenharmony_ci异步方式获取媒体元数据。通过Promise获取返回值。
5011e41f4b71Sopenharmony_ci
5012e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5013e41f4b71Sopenharmony_ci
5014e41f4b71Sopenharmony_ci**返回值:**
5015e41f4b71Sopenharmony_ci
5016e41f4b71Sopenharmony_ci| 类型           | 说明                                     |
5017e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- |
5018e41f4b71Sopenharmony_ci| Promise\<[AVMetadata](#avmetadata11)>  | Promise对象。异步返回音视频元数据对象(AVMetadata)。 |
5019e41f4b71Sopenharmony_ci
5020e41f4b71Sopenharmony_ci**错误码:**
5021e41f4b71Sopenharmony_ci
5022e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5023e41f4b71Sopenharmony_ci
5024e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
5025e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
5026e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by promise. |
5027e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by promise.  |
5028e41f4b71Sopenharmony_ci
5029e41f4b71Sopenharmony_ci**示例:**
5030e41f4b71Sopenharmony_ci
5031e41f4b71Sopenharmony_ci```ts
5032e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5033e41f4b71Sopenharmony_ci
5034e41f4b71Sopenharmony_ciavMetadataExtractor.fetchMetadata().then((metadata: media.AVMetadata) => {
5035e41f4b71Sopenharmony_ci  console.info(`Succeeded in fetching Metadata, genre: ${metadata.genre}`)
5036e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5037e41f4b71Sopenharmony_ci  console.error(`Failed to fetch Metadata, error message:${error.message}`);
5038e41f4b71Sopenharmony_ci});
5039e41f4b71Sopenharmony_ci```
5040e41f4b71Sopenharmony_ci
5041e41f4b71Sopenharmony_ci### fetchAlbumCover<sup>11+</sup>
5042e41f4b71Sopenharmony_ci
5043e41f4b71Sopenharmony_cifetchAlbumCover(callback: AsyncCallback\<image.PixelMap>): void
5044e41f4b71Sopenharmony_ci
5045e41f4b71Sopenharmony_ci异步方式获取音频专辑封面。通过注册回调函数获取返回值。
5046e41f4b71Sopenharmony_ci
5047e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5048e41f4b71Sopenharmony_ci
5049e41f4b71Sopenharmony_ci**参数:**
5050e41f4b71Sopenharmony_ci
5051e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
5052e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
5053e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)>    | 是   | 回调函数。异步返回专辑封面。 |
5054e41f4b71Sopenharmony_ci
5055e41f4b71Sopenharmony_ci**错误码:**
5056e41f4b71Sopenharmony_ci
5057e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5058e41f4b71Sopenharmony_ci
5059e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
5060e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
5061e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Return by callback. |
5062e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by callback.  |
5063e41f4b71Sopenharmony_ci
5064e41f4b71Sopenharmony_ci**示例:**
5065e41f4b71Sopenharmony_ci
5066e41f4b71Sopenharmony_ci```ts
5067e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5068e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit';
5069e41f4b71Sopenharmony_ci
5070e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined;
5071e41f4b71Sopenharmony_ci
5072e41f4b71Sopenharmony_ciavMetadataExtractor.fetchAlbumCover((error: BusinessError, pixelMap: image.PixelMap) => {
5073e41f4b71Sopenharmony_ci  if (error) {
5074e41f4b71Sopenharmony_ci    console.error(`Failed to fetch AlbumCover, error = ${JSON.stringify(error)}`);
5075e41f4b71Sopenharmony_ci    return;
5076e41f4b71Sopenharmony_ci  }
5077e41f4b71Sopenharmony_ci  pixel_map = pixelMap;
5078e41f4b71Sopenharmony_ci});
5079e41f4b71Sopenharmony_ci```
5080e41f4b71Sopenharmony_ci
5081e41f4b71Sopenharmony_ci### fetchAlbumCover<sup>11+</sup>
5082e41f4b71Sopenharmony_ci
5083e41f4b71Sopenharmony_cifetchAlbumCover(): Promise\<image.PixelMap>
5084e41f4b71Sopenharmony_ci
5085e41f4b71Sopenharmony_ci异步方式获取专辑封面。通过Promise获取返回值。
5086e41f4b71Sopenharmony_ci
5087e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5088e41f4b71Sopenharmony_ci
5089e41f4b71Sopenharmony_ci**返回值:**
5090e41f4b71Sopenharmony_ci
5091e41f4b71Sopenharmony_ci| 类型           | 说明                                     |
5092e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- |
5093e41f4b71Sopenharmony_ci| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> |  Promise对象。异步返回专辑封面。 |
5094e41f4b71Sopenharmony_ci
5095e41f4b71Sopenharmony_ci**错误码:**
5096e41f4b71Sopenharmony_ci
5097e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5098e41f4b71Sopenharmony_ci
5099e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
5100e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
5101e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by promise. |
5102e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by promise.  |
5103e41f4b71Sopenharmony_ci
5104e41f4b71Sopenharmony_ci**示例:**
5105e41f4b71Sopenharmony_ci
5106e41f4b71Sopenharmony_ci```ts
5107e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5108e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit';
5109e41f4b71Sopenharmony_ci
5110e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined;
5111e41f4b71Sopenharmony_ci
5112e41f4b71Sopenharmony_ciavMetadataExtractor.fetchAlbumCover().then((pixelMap: image.PixelMap) => {
5113e41f4b71Sopenharmony_ci  pixel_map = pixelMap;
5114e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5115e41f4b71Sopenharmony_ci  console.error(`Failed to fetch AlbumCover, error message:${error.message}`);
5116e41f4b71Sopenharmony_ci});
5117e41f4b71Sopenharmony_ci```
5118e41f4b71Sopenharmony_ci
5119e41f4b71Sopenharmony_ci### release<sup>11+</sup>
5120e41f4b71Sopenharmony_ci
5121e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void
5122e41f4b71Sopenharmony_ci
5123e41f4b71Sopenharmony_ci异步方式释放资源。通过注册回调函数获取返回值。
5124e41f4b71Sopenharmony_ci
5125e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5126e41f4b71Sopenharmony_ci
5127e41f4b71Sopenharmony_ci**参数:**
5128e41f4b71Sopenharmony_ci
5129e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
5130e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
5131e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void>                   | 是   |回调函数。当释放资源成功,err为undefined,否则为错误对象。 |
5132e41f4b71Sopenharmony_ci
5133e41f4b71Sopenharmony_ci**错误码:**
5134e41f4b71Sopenharmony_ci
5135e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5136e41f4b71Sopenharmony_ci
5137e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
5138e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
5139e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by callback. |
5140e41f4b71Sopenharmony_ci
5141e41f4b71Sopenharmony_ci**示例:**
5142e41f4b71Sopenharmony_ci
5143e41f4b71Sopenharmony_ci```ts
5144e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5145e41f4b71Sopenharmony_ci
5146e41f4b71Sopenharmony_ciavMetadataExtractor.release((error: BusinessError) => {
5147e41f4b71Sopenharmony_ci  if (error) {
5148e41f4b71Sopenharmony_ci    console.error(`Failed to release, err = ${JSON.stringify(error)}`);
5149e41f4b71Sopenharmony_ci    return;
5150e41f4b71Sopenharmony_ci  }
5151e41f4b71Sopenharmony_ci  console.info(`Succeeded in releasing.`);
5152e41f4b71Sopenharmony_ci});
5153e41f4b71Sopenharmony_ci```
5154e41f4b71Sopenharmony_ci
5155e41f4b71Sopenharmony_ci### release<sup>11+</sup>
5156e41f4b71Sopenharmony_ci
5157e41f4b71Sopenharmony_cirelease(): Promise\<void>
5158e41f4b71Sopenharmony_ci
5159e41f4b71Sopenharmony_ci异步方式释放资源。通过Promise获取返回值。
5160e41f4b71Sopenharmony_ci
5161e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5162e41f4b71Sopenharmony_ci
5163e41f4b71Sopenharmony_ci**返回值:**
5164e41f4b71Sopenharmony_ci
5165e41f4b71Sopenharmony_ci| 类型           | 说明                                     |
5166e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- |
5167e41f4b71Sopenharmony_ci| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 |
5168e41f4b71Sopenharmony_ci
5169e41f4b71Sopenharmony_ci**错误码:**
5170e41f4b71Sopenharmony_ci
5171e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
5172e41f4b71Sopenharmony_ci
5173e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
5174e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
5175e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by promise. |
5176e41f4b71Sopenharmony_ci
5177e41f4b71Sopenharmony_ci**示例:**
5178e41f4b71Sopenharmony_ci
5179e41f4b71Sopenharmony_ci```ts
5180e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5181e41f4b71Sopenharmony_ci
5182e41f4b71Sopenharmony_ciavMetadataExtractor.release().then(() => {
5183e41f4b71Sopenharmony_ci  console.info(`Succeeded in releasing.`);
5184e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5185e41f4b71Sopenharmony_ci  console.error(`Failed to release, error message:${error.message}`);
5186e41f4b71Sopenharmony_ci});
5187e41f4b71Sopenharmony_ci```
5188e41f4b71Sopenharmony_ci
5189e41f4b71Sopenharmony_ci## AVMetadata<sup>11+</sup>
5190e41f4b71Sopenharmony_ci
5191e41f4b71Sopenharmony_ci音视频元数据,包含各个元数据字段。在[AVRecorderConfig](#avrecorderconfig9)中使用时未声明为当前版本只读的参数可以作为使用[AVRecorder](#avrecorder9)录制时的入参。
5192e41f4b71Sopenharmony_ci
5193e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVMetadataExtractor
5194e41f4b71Sopenharmony_ci
5195e41f4b71Sopenharmony_ci| 名称   | 类型   | 必填 | 说明                                                         |
5196e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
5197e41f4b71Sopenharmony_ci| album     | string | 否   | 专辑的标题。当前版本为只读参数。     |
5198e41f4b71Sopenharmony_ci| albumArtist | string | 否   | 专辑的艺术家。当前版本为只读参数。 |
5199e41f4b71Sopenharmony_ci| artist | string | 否   | 媒体资源的艺术家。当前版本为只读参数。 |
5200e41f4b71Sopenharmony_ci| author | string | 否   | 媒体资源的作者。当前版本为只读参数。 |
5201e41f4b71Sopenharmony_ci| dateTime | string | 否   | 媒体资源的创建时间。当前版本为只读参数。 |
5202e41f4b71Sopenharmony_ci| dateTimeFormat | string | 否   | 媒体资源的创建时间,按YYYY-MM-DD HH:mm:ss格式输出。当前版本为只读参数。 |
5203e41f4b71Sopenharmony_ci| composer | string | 否   | 媒体资源的作曲家。当前版本为只读参数。 |
5204e41f4b71Sopenharmony_ci| duration | string | 否   | 媒体资源的时长。当前版本为只读参数。 |
5205e41f4b71Sopenharmony_ci| genre | string | 否   | 媒体资源的类型或体裁。|
5206e41f4b71Sopenharmony_ci| hasAudio | string | 否   | 媒体资源是否包含音频。当前版本为只读参数。 |
5207e41f4b71Sopenharmony_ci| hasVideo | string | 否   | 媒体资源是否包含视频。当前版本为只读参数。 |
5208e41f4b71Sopenharmony_ci| mimeType | string | 否   | 媒体资源的mime类型。当前版本为只读参数。 |
5209e41f4b71Sopenharmony_ci| trackCount | string | 否   | 媒体资源的轨道数量。当前版本为只读参数。 |
5210e41f4b71Sopenharmony_ci| sampleRate | string | 否   | 音频的采样率,单位为赫兹(Hz)。当前版本为只读参数。 |
5211e41f4b71Sopenharmony_ci| title | string | 否   | 媒体资源的标题。当前版本为只读参数。当前版本为只读参数。 |
5212e41f4b71Sopenharmony_ci| videoHeight | string | 否   | 视频的高度,单位为像素。当前版本为只读参数。 |
5213e41f4b71Sopenharmony_ci| videoWidth | string | 否   | 视频的宽度,单位为像素。当前版本为只读参数。 |
5214e41f4b71Sopenharmony_ci| videoOrientation | string | 否   | 视频的旋转方向,单位为度(°)。|
5215e41f4b71Sopenharmony_ci| hdrType<sup>12+</sup> | [HdrType](#hdrtype12) | 否   | 媒体资源的HDR类型。当前版本为只读参数。 |
5216e41f4b71Sopenharmony_ci| location<sup>12+</sup> | [Location](#location) | 否 | 视频的地理位置信息。 |
5217e41f4b71Sopenharmony_ci| customInfo<sup>12+</sup> | Record<string, string> | 否 | 从moov.meta.list 获取的自定义参数键值映射。|
5218e41f4b71Sopenharmony_ci
5219e41f4b71Sopenharmony_ci## HdrType<sup>12+</sup>
5220e41f4b71Sopenharmony_ci
5221e41f4b71Sopenharmony_ci表示视频HDR类型的枚举。
5222e41f4b71Sopenharmony_ci
5223e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
5224e41f4b71Sopenharmony_ci
5225e41f4b71Sopenharmony_ci| 名称                      | 值   | 说明                   |
5226e41f4b71Sopenharmony_ci| ------------------------- | ---- | ---------------------- |
5227e41f4b71Sopenharmony_ci| AV_HDR_TYPE_NONE          | 0    | 表示无HDR类型。 |
5228e41f4b71Sopenharmony_ci| AV_HDR_TYPE_VIVID         | 1    | 表示为HDR VIVID类型。 |
5229e41f4b71Sopenharmony_ci
5230e41f4b71Sopenharmony_ci## media.createAudioPlayer<sup>(deprecated)</sup>
5231e41f4b71Sopenharmony_ci
5232e41f4b71Sopenharmony_cicreateAudioPlayer(): AudioPlayer
5233e41f4b71Sopenharmony_ci
5234e41f4b71Sopenharmony_ci同步方式创建音频播放实例。
5235e41f4b71Sopenharmony_ci
5236e41f4b71Sopenharmony_ci> **说明:**
5237e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
5238e41f4b71Sopenharmony_ci
5239e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5240e41f4b71Sopenharmony_ci
5241e41f4b71Sopenharmony_ci**返回值:**
5242e41f4b71Sopenharmony_ci
5243e41f4b71Sopenharmony_ci| 类型                        | 说明                                                         |
5244e41f4b71Sopenharmony_ci| --------------------------- | ------------------------------------------------------------ |
5245e41f4b71Sopenharmony_ci| [AudioPlayer](#audioplayerdeprecated) | 返回AudioPlayer类实例,失败时返回null。可用于音频播放、暂停、停止等操作。 |
5246e41f4b71Sopenharmony_ci
5247e41f4b71Sopenharmony_ci**示例:**
5248e41f4b71Sopenharmony_ci
5249e41f4b71Sopenharmony_ci```ts
5250e41f4b71Sopenharmony_cilet audioPlayer: media.AudioPlayer = media.createAudioPlayer();
5251e41f4b71Sopenharmony_ci```
5252e41f4b71Sopenharmony_ci
5253e41f4b71Sopenharmony_ci## media.createVideoPlayer<sup>(deprecated)</sup>
5254e41f4b71Sopenharmony_ci
5255e41f4b71Sopenharmony_cicreateVideoPlayer(callback: AsyncCallback\<VideoPlayer>): void
5256e41f4b71Sopenharmony_ci
5257e41f4b71Sopenharmony_ci异步方式创建视频播放实例,通过注册回调函数获取返回值。
5258e41f4b71Sopenharmony_ci
5259e41f4b71Sopenharmony_ci> **说明:**
5260e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9)替代。
5261e41f4b71Sopenharmony_ci
5262e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5263e41f4b71Sopenharmony_ci
5264e41f4b71Sopenharmony_ci**参数:**
5265e41f4b71Sopenharmony_ci
5266e41f4b71Sopenharmony_ci| 参数名   | 类型                                       | 必填 | 说明                                                         |
5267e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ | ---- | ------------------------------------------------------------ |
5268e41f4b71Sopenharmony_ci| callback | AsyncCallback<[VideoPlayer](#videoplayerdeprecated)> | 是   | 回调函数。创建VideoPlayer实例成功时,err为undefined,data为获取到的VideoPlayer实例,否则为错误对象。 |
5269e41f4b71Sopenharmony_ci
5270e41f4b71Sopenharmony_ci**示例:**
5271e41f4b71Sopenharmony_ci
5272e41f4b71Sopenharmony_ci```ts
5273e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5274e41f4b71Sopenharmony_ci
5275e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer;
5276e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
5277e41f4b71Sopenharmony_ci  if (video != null) {
5278e41f4b71Sopenharmony_ci    videoPlayer = video;
5279e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
5280e41f4b71Sopenharmony_ci  } else {
5281e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
5282e41f4b71Sopenharmony_ci  }
5283e41f4b71Sopenharmony_ci});
5284e41f4b71Sopenharmony_ci```
5285e41f4b71Sopenharmony_ci
5286e41f4b71Sopenharmony_ci## media.createVideoPlayer<sup>(deprecated)</sup>
5287e41f4b71Sopenharmony_ci
5288e41f4b71Sopenharmony_cicreateVideoPlayer(): Promise\<VideoPlayer>
5289e41f4b71Sopenharmony_ci
5290e41f4b71Sopenharmony_ci异步方式创建视频播放实例,通过Promise获取返回值。
5291e41f4b71Sopenharmony_ci
5292e41f4b71Sopenharmony_ci> **说明:**
5293e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[createAVPlayer](#mediacreateavplayer9-1)替代。
5294e41f4b71Sopenharmony_ci
5295e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5296e41f4b71Sopenharmony_ci
5297e41f4b71Sopenharmony_ci**返回值:**
5298e41f4b71Sopenharmony_ci
5299e41f4b71Sopenharmony_ci| 类型                                 | 说明                                                         |
5300e41f4b71Sopenharmony_ci| ------------------------------------ | ------------------------------------------------------------ |
5301e41f4b71Sopenharmony_ci| Promise<[VideoPlayer](#videoplayerdeprecated)> | Promise对象。异步返回VideoPlayer实例,失败时返回null。可用于管理和播放视频媒体。 |
5302e41f4b71Sopenharmony_ci
5303e41f4b71Sopenharmony_ci**示例:**
5304e41f4b71Sopenharmony_ci
5305e41f4b71Sopenharmony_ci```ts
5306e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5307e41f4b71Sopenharmony_ci
5308e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer;
5309e41f4b71Sopenharmony_cimedia.createVideoPlayer().then((video: media.VideoPlayer) => {
5310e41f4b71Sopenharmony_ci  if (video != null) {
5311e41f4b71Sopenharmony_ci    videoPlayer = video;
5312e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
5313e41f4b71Sopenharmony_ci  } else {
5314e41f4b71Sopenharmony_ci    console.error('Failed to create VideoPlayer');
5315e41f4b71Sopenharmony_ci  }
5316e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5317e41f4b71Sopenharmony_ci  console.error(`Failed to create VideoPlayer, error:${error}`);
5318e41f4b71Sopenharmony_ci});
5319e41f4b71Sopenharmony_ci```
5320e41f4b71Sopenharmony_ci
5321e41f4b71Sopenharmony_ci## media.createAudioRecorder<sup>(deprecated)</sup>
5322e41f4b71Sopenharmony_ci
5323e41f4b71Sopenharmony_cicreateAudioRecorder(): AudioRecorder
5324e41f4b71Sopenharmony_ci
5325e41f4b71Sopenharmony_ci创建音频录制的实例来控制音频的录制。
5326e41f4b71Sopenharmony_ci一台设备只允许创建一个录制实例。
5327e41f4b71Sopenharmony_ci
5328e41f4b71Sopenharmony_ci> **说明:**
5329e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[createAVRecorder](#mediacreateavrecorder9)替代。
5330e41f4b71Sopenharmony_ci
5331e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
5332e41f4b71Sopenharmony_ci
5333e41f4b71Sopenharmony_ci**返回值:**
5334e41f4b71Sopenharmony_ci
5335e41f4b71Sopenharmony_ci| 类型                            | 说明                                                         |
5336e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ |
5337e41f4b71Sopenharmony_ci| [AudioRecorder](#audiorecorderdeprecated) | 返回AudioRecorder类实例,失败时返回null。可用于录制音频媒体。 |
5338e41f4b71Sopenharmony_ci
5339e41f4b71Sopenharmony_ci**示例:**
5340e41f4b71Sopenharmony_ci
5341e41f4b71Sopenharmony_ci```ts
5342e41f4b71Sopenharmony_cilet audioRecorder: media.AudioRecorder = media.createAudioRecorder();
5343e41f4b71Sopenharmony_ci```
5344e41f4b71Sopenharmony_ci
5345e41f4b71Sopenharmony_ci## MediaErrorCode<sup>(deprecated)</sup>
5346e41f4b71Sopenharmony_ci
5347e41f4b71Sopenharmony_ci媒体服务错误类型枚举。
5348e41f4b71Sopenharmony_ci
5349e41f4b71Sopenharmony_ci> **说明:**
5350e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 11开始废弃,建议使用[媒体错误码](#averrorcode9)替代。
5351e41f4b71Sopenharmony_ci
5352e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
5353e41f4b71Sopenharmony_ci
5354e41f4b71Sopenharmony_ci| 名称                       | 值   | 说明                                   |
5355e41f4b71Sopenharmony_ci| -------------------------- | ---- | -------------------------------------- |
5356e41f4b71Sopenharmony_ci| MSERR_OK                   | 0    | 表示操作成功。                         |
5357e41f4b71Sopenharmony_ci| MSERR_NO_MEMORY            | 1    | 表示申请内存失败,系统可能无可用内存。 |
5358e41f4b71Sopenharmony_ci| MSERR_OPERATION_NOT_PERMIT | 2    | 表示无权限执行此操作。                 |
5359e41f4b71Sopenharmony_ci| MSERR_INVALID_VAL          | 3    | 表示传入入参无效。                     |
5360e41f4b71Sopenharmony_ci| MSERR_IO                   | 4    | 表示发生IO错误。                       |
5361e41f4b71Sopenharmony_ci| MSERR_TIMEOUT              | 5    | 表示操作超时。                         |
5362e41f4b71Sopenharmony_ci| MSERR_UNKNOWN              | 6    | 表示未知错误。                         |
5363e41f4b71Sopenharmony_ci| MSERR_SERVICE_DIED         | 7    | 表示服务端失效。                       |
5364e41f4b71Sopenharmony_ci| MSERR_INVALID_STATE        | 8    | 表示在当前状态下,不允许执行此操作。   |
5365e41f4b71Sopenharmony_ci| MSERR_UNSUPPORTED          | 9    | 表示在当前版本下,不支持此操作。       |
5366e41f4b71Sopenharmony_ci
5367e41f4b71Sopenharmony_ci## AudioPlayer<sup>(deprecated)</sup>
5368e41f4b71Sopenharmony_ci
5369e41f4b71Sopenharmony_ci> **说明:**
5370e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
5371e41f4b71Sopenharmony_ci
5372e41f4b71Sopenharmony_ci音频播放管理类,用于管理和播放音频媒体。在调用AudioPlayer的方法前,需要先通过[createAudioPlayer()](#mediacreateaudioplayerdeprecated)构建一个AudioPlayer实例。
5373e41f4b71Sopenharmony_ci
5374e41f4b71Sopenharmony_ci### 属性<sup>(deprecated)</sup>
5375e41f4b71Sopenharmony_ci
5376e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5377e41f4b71Sopenharmony_ci
5378e41f4b71Sopenharmony_ci| 名称                            | 类型                                                   | 只读 | 可选 | 说明                                                         |
5379e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
5380e41f4b71Sopenharmony_ci| src                             | string                                                 | 否   | 否   | 音频媒体URI,支持当前主流的音频格式(m4a、aac、mp3、ogg、wav、amr)。<br>**支持路径示例**:<br>1. fd类型播放:fd://xx<br>![](figures/zh-cn_image_url.png)<br>2. http网络播放: http\://xx<br/>3. https网络播放: https\://xx<br/>4. hls网络播放路径:http\://xx或者https\://xx <br/>**需要权限:** ohos.permission.READ_MEDIAohos.permission.INTERNET。 |
5381e41f4b71Sopenharmony_ci| fdSrc<sup>9+</sup>              | [AVFileDescriptor](#avfiledescriptor9)                 | 否   | 否   | 音频媒体文件描述,使用场景:应用中的音频资源被连续存储在同一个文件中。<br/>**使用示例**:<br/>假设一个连续存储的音乐文件: <br/>音乐1(地址偏移:0,字节长度:100)<br/>音乐2(地址偏移:101,字节长度:50)<br/>音乐3(地址偏移:151,字节长度:150)<br/>1. 播放音乐1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }<br/>2. 播放音乐2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }<br/>3. 播放音乐3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }<br/>假设是一个独立的音乐文件: 请使用src=fd://xx <br/> |
5382e41f4b71Sopenharmony_ci| loop                            | boolean                                                | 否   | 否  | 音频循环播放属性,设置为'true'表示循环播放。                 |
5383e41f4b71Sopenharmony_ci| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 是   | 是   | 音频焦点模型。                                               |
5384e41f4b71Sopenharmony_ci| currentTime                     | number                                                 | 是   | 否   | 音频的当前播放位置,单位为毫秒(ms)。                       |
5385e41f4b71Sopenharmony_ci| duration                        | number                                                 | 是   | 否   | 音频时长,单位为毫秒(ms)。                                 |
5386e41f4b71Sopenharmony_ci| state                           | [AudioState](#audiostatedeprecated)                              | 是   | 否   | 可以查询音频播放的状态,该状态不可作为调用play/pause/stop等状态切换的触发条件。 |
5387e41f4b71Sopenharmony_ci
5388e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup>
5389e41f4b71Sopenharmony_ci
5390e41f4b71Sopenharmony_ciplay(): void
5391e41f4b71Sopenharmony_ci
5392e41f4b71Sopenharmony_ci开始播放音频资源,需在'dataLoad'事件成功触发后,才能调用。
5393e41f4b71Sopenharmony_ci
5394e41f4b71Sopenharmony_ci> **说明:**
5395e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
5396e41f4b71Sopenharmony_ci
5397e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5398e41f4b71Sopenharmony_ci
5399e41f4b71Sopenharmony_ci**示例:**
5400e41f4b71Sopenharmony_ci
5401e41f4b71Sopenharmony_ci```ts
5402e41f4b71Sopenharmony_ciaudioPlayer.on('play', () => {    //设置'play'事件回调
5403e41f4b71Sopenharmony_ci  console.info('audio play called');
5404e41f4b71Sopenharmony_ci});
5405e41f4b71Sopenharmony_ciaudioPlayer.play();
5406e41f4b71Sopenharmony_ci```
5407e41f4b71Sopenharmony_ci
5408e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
5409e41f4b71Sopenharmony_ci
5410e41f4b71Sopenharmony_cipause(): void
5411e41f4b71Sopenharmony_ci
5412e41f4b71Sopenharmony_ci暂停播放音频资源。
5413e41f4b71Sopenharmony_ci
5414e41f4b71Sopenharmony_ci> **说明:**
5415e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
5416e41f4b71Sopenharmony_ci
5417e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5418e41f4b71Sopenharmony_ci
5419e41f4b71Sopenharmony_ci**示例:**
5420e41f4b71Sopenharmony_ci
5421e41f4b71Sopenharmony_ci```ts
5422e41f4b71Sopenharmony_ciaudioPlayer.on('pause', () => {    //设置'pause'事件回调
5423e41f4b71Sopenharmony_ci  console.info('audio pause called');
5424e41f4b71Sopenharmony_ci});
5425e41f4b71Sopenharmony_ciaudioPlayer.pause();
5426e41f4b71Sopenharmony_ci```
5427e41f4b71Sopenharmony_ci
5428e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup>
5429e41f4b71Sopenharmony_ci
5430e41f4b71Sopenharmony_cistop(): void
5431e41f4b71Sopenharmony_ci
5432e41f4b71Sopenharmony_ci停止播放音频资源。
5433e41f4b71Sopenharmony_ci
5434e41f4b71Sopenharmony_ci> **说明:**
5435e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
5436e41f4b71Sopenharmony_ci
5437e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5438e41f4b71Sopenharmony_ci
5439e41f4b71Sopenharmony_ci**示例:**
5440e41f4b71Sopenharmony_ci
5441e41f4b71Sopenharmony_ci```ts
5442e41f4b71Sopenharmony_ciaudioPlayer.on('stop', () => {    //设置'stop'事件回调
5443e41f4b71Sopenharmony_ci  console.info('audio stop called');
5444e41f4b71Sopenharmony_ci});
5445e41f4b71Sopenharmony_ciaudioPlayer.stop();
5446e41f4b71Sopenharmony_ci```
5447e41f4b71Sopenharmony_ci
5448e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup>
5449e41f4b71Sopenharmony_ci
5450e41f4b71Sopenharmony_cireset(): void
5451e41f4b71Sopenharmony_ci
5452e41f4b71Sopenharmony_ci重置播放音频资源。
5453e41f4b71Sopenharmony_ci
5454e41f4b71Sopenharmony_ci> **说明:**
5455e41f4b71Sopenharmony_ci> 从API version 7开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
5456e41f4b71Sopenharmony_ci
5457e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5458e41f4b71Sopenharmony_ci
5459e41f4b71Sopenharmony_ci**示例:**
5460e41f4b71Sopenharmony_ci
5461e41f4b71Sopenharmony_ci```ts
5462e41f4b71Sopenharmony_ciaudioPlayer.on('reset', () => {    //设置'reset'事件回调
5463e41f4b71Sopenharmony_ci  console.info('audio reset called');
5464e41f4b71Sopenharmony_ci});
5465e41f4b71Sopenharmony_ciaudioPlayer.reset();
5466e41f4b71Sopenharmony_ci```
5467e41f4b71Sopenharmony_ci
5468e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup>
5469e41f4b71Sopenharmony_ci
5470e41f4b71Sopenharmony_ciseek(timeMs: number): void
5471e41f4b71Sopenharmony_ci
5472e41f4b71Sopenharmony_ci跳转到指定播放位置。
5473e41f4b71Sopenharmony_ci
5474e41f4b71Sopenharmony_ci> **说明:**
5475e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
5476e41f4b71Sopenharmony_ci
5477e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5478e41f4b71Sopenharmony_ci
5479e41f4b71Sopenharmony_ci**参数:**
5480e41f4b71Sopenharmony_ci
5481e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                        |
5482e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ----------------------------------------------------------- |
5483e41f4b71Sopenharmony_ci| timeMs | number | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围[0, duration]。 |
5484e41f4b71Sopenharmony_ci
5485e41f4b71Sopenharmony_ci**示例:**
5486e41f4b71Sopenharmony_ci
5487e41f4b71Sopenharmony_ci```ts
5488e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (seekDoneTime: number) => {    //设置'timeUpdate'事件回调
5489e41f4b71Sopenharmony_ci  if (seekDoneTime == null) {
5490e41f4b71Sopenharmony_ci    console.error('Failed to seek');
5491e41f4b71Sopenharmony_ci    return;
5492e41f4b71Sopenharmony_ci  }
5493e41f4b71Sopenharmony_ci  console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime);
5494e41f4b71Sopenharmony_ci});
5495e41f4b71Sopenharmony_ciaudioPlayer.seek(30000);    //seek到30000ms的位置
5496e41f4b71Sopenharmony_ci```
5497e41f4b71Sopenharmony_ci
5498e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup>
5499e41f4b71Sopenharmony_ci
5500e41f4b71Sopenharmony_cisetVolume(vol: number): void
5501e41f4b71Sopenharmony_ci
5502e41f4b71Sopenharmony_ci设置音量。
5503e41f4b71Sopenharmony_ci
5504e41f4b71Sopenharmony_ci> **说明:**
5505e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
5506e41f4b71Sopenharmony_ci
5507e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5508e41f4b71Sopenharmony_ci
5509e41f4b71Sopenharmony_ci**参数:**
5510e41f4b71Sopenharmony_ci
5511e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
5512e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
5513e41f4b71Sopenharmony_ci| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
5514e41f4b71Sopenharmony_ci
5515e41f4b71Sopenharmony_ci**示例:**
5516e41f4b71Sopenharmony_ci
5517e41f4b71Sopenharmony_ci```ts
5518e41f4b71Sopenharmony_ciaudioPlayer.on('volumeChange', () => {    //设置'volumeChange'事件回调
5519e41f4b71Sopenharmony_ci  console.info('audio volumeChange called');
5520e41f4b71Sopenharmony_ci});
5521e41f4b71Sopenharmony_ciaudioPlayer.setVolume(1);    //设置音量到100%
5522e41f4b71Sopenharmony_ci```
5523e41f4b71Sopenharmony_ci
5524e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup>
5525e41f4b71Sopenharmony_ci
5526e41f4b71Sopenharmony_cirelease(): void
5527e41f4b71Sopenharmony_ci
5528e41f4b71Sopenharmony_ci释放音频资源。
5529e41f4b71Sopenharmony_ci
5530e41f4b71Sopenharmony_ci> **说明:**
5531e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
5532e41f4b71Sopenharmony_ci
5533e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5534e41f4b71Sopenharmony_ci
5535e41f4b71Sopenharmony_ci**示例:**
5536e41f4b71Sopenharmony_ci
5537e41f4b71Sopenharmony_ci```ts
5538e41f4b71Sopenharmony_ciaudioPlayer.release();
5539e41f4b71Sopenharmony_ciaudioPlayer = undefined;
5540e41f4b71Sopenharmony_ci```
5541e41f4b71Sopenharmony_ci
5542e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup>
5543e41f4b71Sopenharmony_ci
5544e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
5545e41f4b71Sopenharmony_ci
5546e41f4b71Sopenharmony_ci获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过回调函数获取返回值。
5547e41f4b71Sopenharmony_ci
5548e41f4b71Sopenharmony_ci> **说明:**
5549e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
5550e41f4b71Sopenharmony_ci
5551e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5552e41f4b71Sopenharmony_ci
5553e41f4b71Sopenharmony_ci**参数:**
5554e41f4b71Sopenharmony_ci
5555e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                       |
5556e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
5557e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 回调函数。获取音频轨道信息成功时,err为undefined,data为获取到的MediaDescription数组,否则为错误对象。 |
5558e41f4b71Sopenharmony_ci
5559e41f4b71Sopenharmony_ci**示例:**
5560e41f4b71Sopenharmony_ci
5561e41f4b71Sopenharmony_ci```ts
5562e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5563e41f4b71Sopenharmony_ci
5564e41f4b71Sopenharmony_ciaudioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
5565e41f4b71Sopenharmony_ci  if (arrList != null) {
5566e41f4b71Sopenharmony_ci    console.info('Succeeded in getting TrackDescription');
5567e41f4b71Sopenharmony_ci  } else {
5568e41f4b71Sopenharmony_ci    console.error(`Failed to get TrackDescription, error:${error}`);
5569e41f4b71Sopenharmony_ci  }
5570e41f4b71Sopenharmony_ci});
5571e41f4b71Sopenharmony_ci```
5572e41f4b71Sopenharmony_ci
5573e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup>
5574e41f4b71Sopenharmony_ci
5575e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>>
5576e41f4b71Sopenharmony_ci
5577e41f4b71Sopenharmony_ci获取音频轨道信息。需在'dataLoad'事件成功触发后,才能调用。通过Promise获取返回值。
5578e41f4b71Sopenharmony_ci
5579e41f4b71Sopenharmony_ci> **说明:**
5580e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
5581e41f4b71Sopenharmony_ci
5582e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5583e41f4b71Sopenharmony_ci
5584e41f4b71Sopenharmony_ci**返回值:**
5585e41f4b71Sopenharmony_ci
5586e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                            |
5587e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ----------------------------------------------- |
5588e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | 音频轨道信息MediaDescription数组Promise返回值。 |
5589e41f4b71Sopenharmony_ci
5590e41f4b71Sopenharmony_ci**示例:**
5591e41f4b71Sopenharmony_ci
5592e41f4b71Sopenharmony_ci```ts
5593e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5594e41f4b71Sopenharmony_ci
5595e41f4b71Sopenharmony_ciaudioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
5596e41f4b71Sopenharmony_ci  console.info('Succeeded in getting TrackDescription');
5597e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5598e41f4b71Sopenharmony_ci  console.error(`Failed to get TrackDescription, error:${error}`);
5599e41f4b71Sopenharmony_ci});
5600e41f4b71Sopenharmony_ci```
5601e41f4b71Sopenharmony_ci
5602e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>(deprecated)</sup>
5603e41f4b71Sopenharmony_ci
5604e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
5605e41f4b71Sopenharmony_ci
5606e41f4b71Sopenharmony_ci开始订阅音频缓存更新事件。仅网络播放支持该订阅事件。
5607e41f4b71Sopenharmony_ci
5608e41f4b71Sopenharmony_ci> **说明:**
5609e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
5610e41f4b71Sopenharmony_ci
5611e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5612e41f4b71Sopenharmony_ci
5613e41f4b71Sopenharmony_ci**参数:**
5614e41f4b71Sopenharmony_ci
5615e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
5616e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
5617e41f4b71Sopenharmony_ci| type     | string   | 是   | 音频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
5618e41f4b71Sopenharmony_ci| callback | function | 是   | 音频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 |
5619e41f4b71Sopenharmony_ci
5620e41f4b71Sopenharmony_ci**示例:**
5621e41f4b71Sopenharmony_ci
5622e41f4b71Sopenharmony_ci```ts
5623e41f4b71Sopenharmony_ciaudioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
5624e41f4b71Sopenharmony_ci  console.info('audio bufferingInfo type: ' + infoType);
5625e41f4b71Sopenharmony_ci  console.info('audio bufferingInfo value: ' + value);
5626e41f4b71Sopenharmony_ci});
5627e41f4b71Sopenharmony_ci```
5628e41f4b71Sopenharmony_ci
5629e41f4b71Sopenharmony_ci### on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup>
5630e41f4b71Sopenharmony_ci
5631e41f4b71Sopenharmony_cion(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void
5632e41f4b71Sopenharmony_ci
5633e41f4b71Sopenharmony_ci开始订阅音频播放事件。
5634e41f4b71Sopenharmony_ci
5635e41f4b71Sopenharmony_ci> **说明:**
5636e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
5637e41f4b71Sopenharmony_ci
5638e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5639e41f4b71Sopenharmony_ci
5640e41f4b71Sopenharmony_ci**参数:**
5641e41f4b71Sopenharmony_ci
5642e41f4b71Sopenharmony_ci| 参数名   | 类型       | 必填 | 说明                                                         |
5643e41f4b71Sopenharmony_ci| -------- | ---------- | ---- | ------------------------------------------------------------ |
5644e41f4b71Sopenharmony_ci| type     | string     | 是   | 播放事件回调类型,支持的事件包括:'play' \| 'pause' \| 'stop' \| 'reset' \| 'dataLoad' \| 'finish' \| 'volumeChange'。<br>- 'play':完成[play()](#playdeprecated)调用,音频开始播放,触发该事件。<br>- 'pause':完成[pause()](#pausedeprecated)调用,音频暂停播放,触发该事件。<br>- 'stop':完成[stop()](#stopdeprecated)调用,音频停止播放,触发该事件。<br>- 'reset':完成[reset()](#resetdeprecated)调用,播放器重置,触发该事件。<br>- 'dataLoad':完成音频数据加载后触发该事件,即src属性设置完成后触发该事件。<br>- 'finish':完成音频播放后触发该事件。<br>- 'volumeChange':完成[setVolume()](#setvolumedeprecated)调用,播放音量改变后触发该事件。 |
5645e41f4b71Sopenharmony_ci| callback | () => void | 是   | 播放事件回调方法。                                           |
5646e41f4b71Sopenharmony_ci
5647e41f4b71Sopenharmony_ci**示例:**
5648e41f4b71Sopenharmony_ci
5649e41f4b71Sopenharmony_ci```ts
5650e41f4b71Sopenharmony_ciimport { fileIo as fs } from '@kit.CoreFileKit';
5651e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5652e41f4b71Sopenharmony_ci
5653e41f4b71Sopenharmony_cilet audioPlayer: media.AudioPlayer = media.createAudioPlayer();  //创建一个音频播放实例
5654e41f4b71Sopenharmony_ciaudioPlayer.on('dataLoad', () => {            //设置'dataLoad'事件回调,src属性设置成功后,触发此回调
5655e41f4b71Sopenharmony_ci  console.info('audio set source called');
5656e41f4b71Sopenharmony_ci  audioPlayer.play();                       //开始播放,并触发'play'事件回调
5657e41f4b71Sopenharmony_ci});
5658e41f4b71Sopenharmony_ciaudioPlayer.on('play', () => {                //设置'play'事件回调
5659e41f4b71Sopenharmony_ci  console.info('audio play called');
5660e41f4b71Sopenharmony_ci  audioPlayer.seek(30000);                  //调用seek方法,并触发'timeUpdate'事件回调
5661e41f4b71Sopenharmony_ci});
5662e41f4b71Sopenharmony_ciaudioPlayer.on('pause', () => {               //设置'pause'事件回调
5663e41f4b71Sopenharmony_ci  console.info('audio pause called');
5664e41f4b71Sopenharmony_ci  audioPlayer.stop();                       //停止播放,并触发'stop'事件回调
5665e41f4b71Sopenharmony_ci});
5666e41f4b71Sopenharmony_ciaudioPlayer.on('reset', () => {               //设置'reset'事件回调
5667e41f4b71Sopenharmony_ci  console.info('audio reset called');
5668e41f4b71Sopenharmony_ci  audioPlayer.release();                    //释放播放实例资源
5669e41f4b71Sopenharmony_ci  audioPlayer = undefined;
5670e41f4b71Sopenharmony_ci});
5671e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (seekDoneTime: number) => {  //设置'timeUpdate'事件回调
5672e41f4b71Sopenharmony_ci  if (seekDoneTime == null) {
5673e41f4b71Sopenharmony_ci    console.error('Failed to seek');
5674e41f4b71Sopenharmony_ci    return;
5675e41f4b71Sopenharmony_ci  }
5676e41f4b71Sopenharmony_ci  console.info('Succeeded in seek, and seek time is ' + seekDoneTime);
5677e41f4b71Sopenharmony_ci  audioPlayer.setVolume(0.5);                //设置音量为50%,并触发'volumeChange'事件回调
5678e41f4b71Sopenharmony_ci});
5679e41f4b71Sopenharmony_ciaudioPlayer.on('volumeChange', () => {         //设置'volumeChange'事件回调
5680e41f4b71Sopenharmony_ci  console.info('audio volumeChange called');
5681e41f4b71Sopenharmony_ci  audioPlayer.pause();                       //暂停播放,并触发'pause'事件回调
5682e41f4b71Sopenharmony_ci});
5683e41f4b71Sopenharmony_ciaudioPlayer.on('finish', () => {               //设置'finish'事件回调
5684e41f4b71Sopenharmony_ci  console.info('audio play finish');
5685e41f4b71Sopenharmony_ci  audioPlayer.stop();                        //停止播放,并触发'stop'事件回调
5686e41f4b71Sopenharmony_ci});
5687e41f4b71Sopenharmony_ciaudioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
5688e41f4b71Sopenharmony_ci  console.error(`audio error called, error: ${error}`);
5689e41f4b71Sopenharmony_ci});
5690e41f4b71Sopenharmony_ci
5691e41f4b71Sopenharmony_ci// 用户选择音频设置fd(本地播放)
5692e41f4b71Sopenharmony_cilet fdPath = 'fd://';
5693e41f4b71Sopenharmony_ci// path路径的码流可通过"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,将其推送到设备上
5694e41f4b71Sopenharmony_cilet path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
5695e41f4b71Sopenharmony_cifs.open(path).then((file) => {
5696e41f4b71Sopenharmony_ci  fdPath = fdPath + '' + file.fd;
5697e41f4b71Sopenharmony_ci  console.info('Succeeded in opening fd, fd is' + fdPath);
5698e41f4b71Sopenharmony_ci  audioPlayer.src = fdPath;  //设置src属性,并触发'dataLoad'事件回调
5699e41f4b71Sopenharmony_ci}, (err: BusinessError) => {
5700e41f4b71Sopenharmony_ci  console.error('Failed to open fd, err is' + err);
5701e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
5702e41f4b71Sopenharmony_ci  console.error('Failed to open fd, err is' + err);
5703e41f4b71Sopenharmony_ci});
5704e41f4b71Sopenharmony_ci```
5705e41f4b71Sopenharmony_ci
5706e41f4b71Sopenharmony_ci### on('timeUpdate')<sup>(deprecated)</sup>
5707e41f4b71Sopenharmony_ci
5708e41f4b71Sopenharmony_cion(type: 'timeUpdate', callback: Callback\<number>): void
5709e41f4b71Sopenharmony_ci
5710e41f4b71Sopenharmony_ci开始订阅音频播放时间更新事件。处于播放状态时,每隔1s上报一次该事件。
5711e41f4b71Sopenharmony_ci
5712e41f4b71Sopenharmony_ci> **说明:**
5713e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('timeUpdate')](#ontimeupdate9)替代。
5714e41f4b71Sopenharmony_ci
5715e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5716e41f4b71Sopenharmony_ci
5717e41f4b71Sopenharmony_ci**参数:**
5718e41f4b71Sopenharmony_ci
5719e41f4b71Sopenharmony_ci| 参数名   | 类型              | 必填 | 说明                                                         |
5720e41f4b71Sopenharmony_ci| -------- | ----------------- | ---- | ------------------------------------------------------------ |
5721e41f4b71Sopenharmony_ci| type     | string            | 是   | 播放事件回调类型,支持的事件包括:'timeUpdate'。<br>- 'timeUpdate':音频播放时间戳更新,开始播放后自动触发该事件。 |
5722e41f4b71Sopenharmony_ci| callback | Callback\<number> | 是   | 播放事件回调方法。回调方法入参为更新后的时间戳。             |
5723e41f4b71Sopenharmony_ci
5724e41f4b71Sopenharmony_ci**示例:**
5725e41f4b71Sopenharmony_ci
5726e41f4b71Sopenharmony_ci```ts
5727e41f4b71Sopenharmony_ciaudioPlayer.on('timeUpdate', (newTime: number) => {    //设置'timeUpdate'事件回调
5728e41f4b71Sopenharmony_ci  if (newTime == null) {
5729e41f4b71Sopenharmony_ci    console.error('Failed to do timeUpadate');
5730e41f4b71Sopenharmony_ci    return;
5731e41f4b71Sopenharmony_ci  }
5732e41f4b71Sopenharmony_ci  console.info('Succeeded in doing timeUpadate. seekDoneTime: ' + newTime);
5733e41f4b71Sopenharmony_ci});
5734e41f4b71Sopenharmony_ciaudioPlayer.play();    //开始播放后,自动触发时间戳更新事件
5735e41f4b71Sopenharmony_ci```
5736e41f4b71Sopenharmony_ci
5737e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>(deprecated)</sup>
5738e41f4b71Sopenharmony_ci
5739e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
5740e41f4b71Sopenharmony_ci
5741e41f4b71Sopenharmony_ci监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
5742e41f4b71Sopenharmony_ci
5743e41f4b71Sopenharmony_ci> **说明:**
5744e41f4b71Sopenharmony_ci> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
5745e41f4b71Sopenharmony_ci
5746e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5747e41f4b71Sopenharmony_ci
5748e41f4b71Sopenharmony_ci**参数:**
5749e41f4b71Sopenharmony_ci
5750e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                                     |
5751e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
5752e41f4b71Sopenharmony_ci| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
5753e41f4b71Sopenharmony_ci| callback | function  | 是   | 音频焦点变化事件回调方法。                               |
5754e41f4b71Sopenharmony_ci
5755e41f4b71Sopenharmony_ci**示例:**
5756e41f4b71Sopenharmony_ci
5757e41f4b71Sopenharmony_ci```ts
5758e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
5759e41f4b71Sopenharmony_ci
5760e41f4b71Sopenharmony_ciaudioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
5761e41f4b71Sopenharmony_ci  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
5762e41f4b71Sopenharmony_ci})
5763e41f4b71Sopenharmony_ci```
5764e41f4b71Sopenharmony_ci
5765e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup>
5766e41f4b71Sopenharmony_ci
5767e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
5768e41f4b71Sopenharmony_ci
5769e41f4b71Sopenharmony_ci开始订阅音频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
5770e41f4b71Sopenharmony_ci
5771e41f4b71Sopenharmony_ci> **说明:**
5772e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
5773e41f4b71Sopenharmony_ci
5774e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5775e41f4b71Sopenharmony_ci
5776e41f4b71Sopenharmony_ci**参数:**
5777e41f4b71Sopenharmony_ci
5778e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                                         |
5779e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ |
5780e41f4b71Sopenharmony_ci| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':音频播放中发生错误,触发该事件。 |
5781e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
5782e41f4b71Sopenharmony_ci
5783e41f4b71Sopenharmony_ci**示例:**
5784e41f4b71Sopenharmony_ci
5785e41f4b71Sopenharmony_ci```ts
5786e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5787e41f4b71Sopenharmony_ci
5788e41f4b71Sopenharmony_ciaudioPlayer.on('error', (error: BusinessError) => {  //设置'error'事件回调
5789e41f4b71Sopenharmony_ci  console.error(`audio error called, error: ${error}`);
5790e41f4b71Sopenharmony_ci});
5791e41f4b71Sopenharmony_ciaudioPlayer.setVolume(3);  //设置volume为无效值,触发'error'事件
5792e41f4b71Sopenharmony_ci```
5793e41f4b71Sopenharmony_ci
5794e41f4b71Sopenharmony_ci## AudioState<sup>(deprecated)</sup>
5795e41f4b71Sopenharmony_ci
5796e41f4b71Sopenharmony_citype AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error'
5797e41f4b71Sopenharmony_ci
5798e41f4b71Sopenharmony_ci音频播放的状态机。可通过state属性获取当前状态。
5799e41f4b71Sopenharmony_ci
5800e41f4b71Sopenharmony_ci> **说明:**
5801e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
5802e41f4b71Sopenharmony_ci
5803e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
5804e41f4b71Sopenharmony_ci
5805e41f4b71Sopenharmony_ci| 类型    | 说明                                           |
5806e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------- |
5807e41f4b71Sopenharmony_ci| 'idle'    | 音频播放空闲,dataload/reset成功后处于此状态。 |
5808e41f4b71Sopenharmony_ci| 'playing' | 音频正在播放,play成功后处于此状态。           |
5809e41f4b71Sopenharmony_ci| 'paused'  | 音频暂停播放,pause成功后处于此状态。          |
5810e41f4b71Sopenharmony_ci| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。      |
5811e41f4b71Sopenharmony_ci| 'error'   | 错误状态。                                     |
5812e41f4b71Sopenharmony_ci
5813e41f4b71Sopenharmony_ci## VideoPlayer<sup>(deprecated)</sup>
5814e41f4b71Sopenharmony_ci
5815e41f4b71Sopenharmony_ci> **说明:**
5816e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer](#avplayer9)替代。
5817e41f4b71Sopenharmony_ci
5818e41f4b71Sopenharmony_ci视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过[createVideoPlayer()](#mediacreatevideoplayerdeprecated)构建一个VideoPlayer实例。
5819e41f4b71Sopenharmony_ci
5820e41f4b71Sopenharmony_ci### 属性
5821e41f4b71Sopenharmony_ci
5822e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5823e41f4b71Sopenharmony_ci
5824e41f4b71Sopenharmony_ci| 名称                            | 类型                                                   | 只读 | 可选 | 说明                                                         |
5825e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
5826e41f4b71Sopenharmony_ci| url<sup>8+</sup>                | string                                                 | 否   | 否   | 视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、mkv)。<br>**支持路径示例**:<br>1. fd类型播放:fd://xx<br>![](figures/zh-cn_image_url.png)<br>2. http网络播放: http\://xx<br/>3. https网络播放: https\://xx<br/>4. hls网络播放路径:http\://xx或者https\://xx<br>5. file类型: file\://xx<br/>**说明:**<br>从API version 11开始不支持webm。 |
5827e41f4b71Sopenharmony_ci| fdSrc<sup>9+</sup>              | [AVFileDescriptor](#avfiledescriptor9)                 | 否   | 否   | 视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。<br/>**使用示例**:<br/>假设一个连续存储的音乐文件: <br/>视频1(地址偏移:0,字节长度:100)<br/>视频2(地址偏移:101,字节长度:50)<br/>视频3(地址偏移:151,字节长度:150)<br/>1. 播放视频1:AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }<br/>2. 播放视频2:AVFileDescriptor { fd = 资源句柄; offset = 101; length = 50; }<br/>3. 播放视频3:AVFileDescriptor { fd = 资源句柄; offset = 151; length = 150; }<br/>假设是一个独立的视频文件: 请使用src=fd://xx <br/> |
5828e41f4b71Sopenharmony_ci| loop<sup>8+</sup>               | boolean                                                | 否   | 否   | 视频循环播放属性,设置为'true'表示循环播放。                 |
5829e41f4b71Sopenharmony_ci| videoScaleType<sup>9+</sup>     | [VideoScaleType](#videoscaletype9)                     | 否   | 是   | 视频缩放模式。默认值为VIDEO_SCALE_TYPE_FIT。                                               |
5830e41f4b71Sopenharmony_ci| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/js-apis-audio.md#interruptmode9) | 否   | 是   | 音频焦点模型。                                               |
5831e41f4b71Sopenharmony_ci| currentTime<sup>8+</sup>        | number                                                 | 是   | 否   | 视频的当前播放位置,单位为毫秒(ms)。                       |
5832e41f4b71Sopenharmony_ci| duration<sup>8+</sup>           | number                                                 | 是   | 否   | 视频时长,单位为毫秒(ms),返回-1表示直播模式。             |
5833e41f4b71Sopenharmony_ci| state<sup>8+</sup>              | [VideoPlayState](#videoplaystatedeprecated)                    | 是   | 否   | 视频播放的状态。                                             |
5834e41f4b71Sopenharmony_ci| width<sup>8+</sup>              | number                                                 | 是   | 否   | 视频宽,单位为像素(px)。                                   |
5835e41f4b71Sopenharmony_ci| height<sup>8+</sup>             | number                                                 | 是   | 否   | 视频高,单位为像素(px)。                                   |
5836e41f4b71Sopenharmony_ci
5837e41f4b71Sopenharmony_ci### setDisplaySurface<sup>(deprecated)</sup>
5838e41f4b71Sopenharmony_ci
5839e41f4b71Sopenharmony_cisetDisplaySurface(surfaceId: string, callback: AsyncCallback\<void>): void
5840e41f4b71Sopenharmony_ci
5841e41f4b71Sopenharmony_ci设置SurfaceId。通过回调函数获取返回值。
5842e41f4b71Sopenharmony_ci
5843e41f4b71Sopenharmony_ci*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
5844e41f4b71Sopenharmony_ci
5845e41f4b71Sopenharmony_ci> **说明:**
5846e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
5847e41f4b71Sopenharmony_ci
5848e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5849e41f4b71Sopenharmony_ci
5850e41f4b71Sopenharmony_ci**参数:**
5851e41f4b71Sopenharmony_ci
5852e41f4b71Sopenharmony_ci| 参数名    | 类型                 | 必填 | 说明                      |
5853e41f4b71Sopenharmony_ci| --------- | -------------------- | ---- | ------------------------- |
5854e41f4b71Sopenharmony_ci| surfaceId | string               | 是   | SurfaceId                 |
5855e41f4b71Sopenharmony_ci| callback  | AsyncCallback\<void> | 是   | 回调函数。当设置SurfaceId成功,err为undefined,否则为错误对象。 |
5856e41f4b71Sopenharmony_ci
5857e41f4b71Sopenharmony_ci**示例:**
5858e41f4b71Sopenharmony_ci
5859e41f4b71Sopenharmony_ci```ts
5860e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5861e41f4b71Sopenharmony_ci
5862e41f4b71Sopenharmony_cilet surfaceId: string = '';
5863e41f4b71Sopenharmony_civideoPlayer.setDisplaySurface(surfaceId, (err: BusinessError) => {
5864e41f4b71Sopenharmony_ci  if (err) {
5865e41f4b71Sopenharmony_ci    console.error('Failed to set DisplaySurface!');
5866e41f4b71Sopenharmony_ci  } else {
5867e41f4b71Sopenharmony_ci    console.info('Succeeded in setting DisplaySurface!');
5868e41f4b71Sopenharmony_ci  }
5869e41f4b71Sopenharmony_ci});
5870e41f4b71Sopenharmony_ci```
5871e41f4b71Sopenharmony_ci
5872e41f4b71Sopenharmony_ci### setDisplaySurface<sup>(deprecated)</sup>
5873e41f4b71Sopenharmony_ci
5874e41f4b71Sopenharmony_cisetDisplaySurface(surfaceId: string): Promise\<void>
5875e41f4b71Sopenharmony_ci
5876e41f4b71Sopenharmony_ci设置SurfaceId。通过Promise获取返回值。
5877e41f4b71Sopenharmony_ci
5878e41f4b71Sopenharmony_ci*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。
5879e41f4b71Sopenharmony_ci
5880e41f4b71Sopenharmony_ci> **说明:**
5881e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.surfaceId](#属性)替代。
5882e41f4b71Sopenharmony_ci
5883e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5884e41f4b71Sopenharmony_ci
5885e41f4b71Sopenharmony_ci**参数:**
5886e41f4b71Sopenharmony_ci
5887e41f4b71Sopenharmony_ci| 参数名    | 类型   | 必填 | 说明      |
5888e41f4b71Sopenharmony_ci| --------- | ------ | ---- | --------- |
5889e41f4b71Sopenharmony_ci| surfaceId | string | 是   | SurfaceId |
5890e41f4b71Sopenharmony_ci
5891e41f4b71Sopenharmony_ci**返回值:**
5892e41f4b71Sopenharmony_ci
5893e41f4b71Sopenharmony_ci| 类型           | 说明                           |
5894e41f4b71Sopenharmony_ci| -------------- | ------------------------------ |
5895e41f4b71Sopenharmony_ci| Promise\<void> | 设置SurfaceId的Promise返回值。 |
5896e41f4b71Sopenharmony_ci
5897e41f4b71Sopenharmony_ci**示例:**
5898e41f4b71Sopenharmony_ci
5899e41f4b71Sopenharmony_ci```ts
5900e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5901e41f4b71Sopenharmony_ci
5902e41f4b71Sopenharmony_cilet surfaceId: string = '';
5903e41f4b71Sopenharmony_civideoPlayer.setDisplaySurface(surfaceId).then(() => {
5904e41f4b71Sopenharmony_ci  console.info('Succeeded in setting DisplaySurface');
5905e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5906e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
5907e41f4b71Sopenharmony_ci});
5908e41f4b71Sopenharmony_ci```
5909e41f4b71Sopenharmony_ci
5910e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup>
5911e41f4b71Sopenharmony_ci
5912e41f4b71Sopenharmony_ciprepare(callback: AsyncCallback\<void>): void
5913e41f4b71Sopenharmony_ci
5914e41f4b71Sopenharmony_ci准备播放视频。通过回调函数获取返回值。
5915e41f4b71Sopenharmony_ci
5916e41f4b71Sopenharmony_ci> **说明:**
5917e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9)替代。
5918e41f4b71Sopenharmony_ci
5919e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5920e41f4b71Sopenharmony_ci
5921e41f4b71Sopenharmony_ci**参数:**
5922e41f4b71Sopenharmony_ci
5923e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
5924e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
5925e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当准备播放视频成功,err为undefined,否则为错误对象。|
5926e41f4b71Sopenharmony_ci
5927e41f4b71Sopenharmony_ci**示例:**
5928e41f4b71Sopenharmony_ci
5929e41f4b71Sopenharmony_ci```ts
5930e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5931e41f4b71Sopenharmony_ci
5932e41f4b71Sopenharmony_civideoPlayer.prepare((err: BusinessError) => {
5933e41f4b71Sopenharmony_ci  if (err) {
5934e41f4b71Sopenharmony_ci    console.error('Failed to prepare!');
5935e41f4b71Sopenharmony_ci  } else {
5936e41f4b71Sopenharmony_ci    console.info('Succeeded in preparing!');
5937e41f4b71Sopenharmony_ci  }
5938e41f4b71Sopenharmony_ci});
5939e41f4b71Sopenharmony_ci```
5940e41f4b71Sopenharmony_ci
5941e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup>
5942e41f4b71Sopenharmony_ci
5943e41f4b71Sopenharmony_ciprepare(): Promise\<void>
5944e41f4b71Sopenharmony_ci
5945e41f4b71Sopenharmony_ci准备播放视频。通过Promise获取返回值。
5946e41f4b71Sopenharmony_ci
5947e41f4b71Sopenharmony_ci> **说明:**
5948e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.prepare](#prepare9-1)替代。
5949e41f4b71Sopenharmony_ci
5950e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5951e41f4b71Sopenharmony_ci
5952e41f4b71Sopenharmony_ci**返回值:**
5953e41f4b71Sopenharmony_ci
5954e41f4b71Sopenharmony_ci| 类型           | 说明                          |
5955e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
5956e41f4b71Sopenharmony_ci| Promise\<void> | 准备播放视频的Promise返回值。 |
5957e41f4b71Sopenharmony_ci
5958e41f4b71Sopenharmony_ci**示例:**
5959e41f4b71Sopenharmony_ci
5960e41f4b71Sopenharmony_ci```ts
5961e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5962e41f4b71Sopenharmony_ci
5963e41f4b71Sopenharmony_civideoPlayer.prepare().then(() => {
5964e41f4b71Sopenharmony_ci  console.info('Succeeded in preparing');
5965e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
5966e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
5967e41f4b71Sopenharmony_ci});
5968e41f4b71Sopenharmony_ci```
5969e41f4b71Sopenharmony_ci
5970e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup>
5971e41f4b71Sopenharmony_ci
5972e41f4b71Sopenharmony_ciplay(callback: AsyncCallback\<void>): void
5973e41f4b71Sopenharmony_ci
5974e41f4b71Sopenharmony_ci开始播放视频。通过回调函数获取返回值。
5975e41f4b71Sopenharmony_ci
5976e41f4b71Sopenharmony_ci> **说明:**
5977e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9)替代。
5978e41f4b71Sopenharmony_ci
5979e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
5980e41f4b71Sopenharmony_ci
5981e41f4b71Sopenharmony_ci**参数:**
5982e41f4b71Sopenharmony_ci
5983e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
5984e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
5985e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当开始播放视频成功,err为undefined,否则为错误对象。 |
5986e41f4b71Sopenharmony_ci
5987e41f4b71Sopenharmony_ci**示例:**
5988e41f4b71Sopenharmony_ci
5989e41f4b71Sopenharmony_ci```ts
5990e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
5991e41f4b71Sopenharmony_ci
5992e41f4b71Sopenharmony_civideoPlayer.play((err: BusinessError) => {
5993e41f4b71Sopenharmony_ci  if (err) {
5994e41f4b71Sopenharmony_ci    console.error('Failed to play!');
5995e41f4b71Sopenharmony_ci  } else {
5996e41f4b71Sopenharmony_ci    console.info('Succeeded in playing!');
5997e41f4b71Sopenharmony_ci  }
5998e41f4b71Sopenharmony_ci});
5999e41f4b71Sopenharmony_ci```
6000e41f4b71Sopenharmony_ci
6001e41f4b71Sopenharmony_ci### play<sup>(deprecated)</sup>
6002e41f4b71Sopenharmony_ci
6003e41f4b71Sopenharmony_ciplay(): Promise\<void>
6004e41f4b71Sopenharmony_ci
6005e41f4b71Sopenharmony_ci开始播放视频。通过Promise获取返回值。
6006e41f4b71Sopenharmony_ci
6007e41f4b71Sopenharmony_ci> **说明:**
6008e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.play](#play9-1)替代。
6009e41f4b71Sopenharmony_ci
6010e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6011e41f4b71Sopenharmony_ci
6012e41f4b71Sopenharmony_ci**返回值:**
6013e41f4b71Sopenharmony_ci
6014e41f4b71Sopenharmony_ci| 类型           | 说明                          |
6015e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
6016e41f4b71Sopenharmony_ci| Promise\<void> | 开始播放视频的Promise返回值。 |
6017e41f4b71Sopenharmony_ci
6018e41f4b71Sopenharmony_ci**示例:**
6019e41f4b71Sopenharmony_ci
6020e41f4b71Sopenharmony_ci```ts
6021e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6022e41f4b71Sopenharmony_ci
6023e41f4b71Sopenharmony_civideoPlayer.play().then(() => {
6024e41f4b71Sopenharmony_ci  console.info('Succeeded in playing');
6025e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6026e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6027e41f4b71Sopenharmony_ci});
6028e41f4b71Sopenharmony_ci```
6029e41f4b71Sopenharmony_ci
6030e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
6031e41f4b71Sopenharmony_ci
6032e41f4b71Sopenharmony_cipause(callback: AsyncCallback\<void>): void
6033e41f4b71Sopenharmony_ci
6034e41f4b71Sopenharmony_ci通过回调方式暂停播放视频。通过回调函数获取返回值。
6035e41f4b71Sopenharmony_ci
6036e41f4b71Sopenharmony_ci> **说明:**
6037e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9)替代。
6038e41f4b71Sopenharmony_ci
6039e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6040e41f4b71Sopenharmony_ci
6041e41f4b71Sopenharmony_ci**参数:**
6042e41f4b71Sopenharmony_ci
6043e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
6044e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
6045e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当暂停播放视频成功,err为undefined,否则为错误对象。 |
6046e41f4b71Sopenharmony_ci
6047e41f4b71Sopenharmony_ci**示例:**
6048e41f4b71Sopenharmony_ci
6049e41f4b71Sopenharmony_ci```ts
6050e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6051e41f4b71Sopenharmony_ci
6052e41f4b71Sopenharmony_civideoPlayer.pause((err: BusinessError) => {
6053e41f4b71Sopenharmony_ci  if (err) {
6054e41f4b71Sopenharmony_ci    console.error('Failed to pause!');
6055e41f4b71Sopenharmony_ci  } else {
6056e41f4b71Sopenharmony_ci    console.info('Succeeded in pausing!');
6057e41f4b71Sopenharmony_ci  }
6058e41f4b71Sopenharmony_ci});
6059e41f4b71Sopenharmony_ci```
6060e41f4b71Sopenharmony_ci
6061e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
6062e41f4b71Sopenharmony_ci
6063e41f4b71Sopenharmony_cipause(): Promise\<void>
6064e41f4b71Sopenharmony_ci
6065e41f4b71Sopenharmony_ci暂停播放视频。通过Promise获取返回值。
6066e41f4b71Sopenharmony_ci
6067e41f4b71Sopenharmony_ci> **说明:**
6068e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.pause](#pause9-1)替代。
6069e41f4b71Sopenharmony_ci
6070e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6071e41f4b71Sopenharmony_ci
6072e41f4b71Sopenharmony_ci**返回值:**
6073e41f4b71Sopenharmony_ci
6074e41f4b71Sopenharmony_ci| 类型           | 说明                          |
6075e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
6076e41f4b71Sopenharmony_ci| Promise\<void> | 暂停播放视频的Promise返回值。 |
6077e41f4b71Sopenharmony_ci
6078e41f4b71Sopenharmony_ci**示例:**
6079e41f4b71Sopenharmony_ci
6080e41f4b71Sopenharmony_ci```ts
6081e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6082e41f4b71Sopenharmony_ci
6083e41f4b71Sopenharmony_civideoPlayer.pause().then(() => {
6084e41f4b71Sopenharmony_ci  console.info('Succeeded in pausing');
6085e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6086e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6087e41f4b71Sopenharmony_ci});
6088e41f4b71Sopenharmony_ci```
6089e41f4b71Sopenharmony_ci
6090e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup>
6091e41f4b71Sopenharmony_ci
6092e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void
6093e41f4b71Sopenharmony_ci
6094e41f4b71Sopenharmony_ci通过回调方式停止播放视频。通过回调函数获取返回值。
6095e41f4b71Sopenharmony_ci
6096e41f4b71Sopenharmony_ci> **说明:**
6097e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9)替代。
6098e41f4b71Sopenharmony_ci
6099e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6100e41f4b71Sopenharmony_ci
6101e41f4b71Sopenharmony_ci**参数:**
6102e41f4b71Sopenharmony_ci
6103e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
6104e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
6105e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当停止播放视频成功,err为undefined,否则为错误对象。 |
6106e41f4b71Sopenharmony_ci
6107e41f4b71Sopenharmony_ci**示例:**
6108e41f4b71Sopenharmony_ci
6109e41f4b71Sopenharmony_ci```ts
6110e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6111e41f4b71Sopenharmony_ci
6112e41f4b71Sopenharmony_civideoPlayer.stop((err: BusinessError) => {
6113e41f4b71Sopenharmony_ci  if (err) {
6114e41f4b71Sopenharmony_ci    console.error('Failed to stop!');
6115e41f4b71Sopenharmony_ci  } else {
6116e41f4b71Sopenharmony_ci    console.info('Succeeded in stopping!');
6117e41f4b71Sopenharmony_ci  }
6118e41f4b71Sopenharmony_ci});
6119e41f4b71Sopenharmony_ci```
6120e41f4b71Sopenharmony_ci
6121e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup>
6122e41f4b71Sopenharmony_ci
6123e41f4b71Sopenharmony_cistop(): Promise\<void>
6124e41f4b71Sopenharmony_ci
6125e41f4b71Sopenharmony_ci停止播放视频。通过Promise获取返回值。
6126e41f4b71Sopenharmony_ci
6127e41f4b71Sopenharmony_ci> **说明:**
6128e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.stop](#stop9-1)替代。
6129e41f4b71Sopenharmony_ci
6130e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6131e41f4b71Sopenharmony_ci
6132e41f4b71Sopenharmony_ci**返回值:**
6133e41f4b71Sopenharmony_ci
6134e41f4b71Sopenharmony_ci| 类型           | 说明                          |
6135e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
6136e41f4b71Sopenharmony_ci| Promise\<void> | 停止播放视频的Promise返回值。 |
6137e41f4b71Sopenharmony_ci
6138e41f4b71Sopenharmony_ci**示例:**
6139e41f4b71Sopenharmony_ci
6140e41f4b71Sopenharmony_ci```ts
6141e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6142e41f4b71Sopenharmony_ci
6143e41f4b71Sopenharmony_civideoPlayer.stop().then(() => {
6144e41f4b71Sopenharmony_ci  console.info('Succeeded in stopping');
6145e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6146e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6147e41f4b71Sopenharmony_ci});
6148e41f4b71Sopenharmony_ci```
6149e41f4b71Sopenharmony_ci
6150e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup>
6151e41f4b71Sopenharmony_ci
6152e41f4b71Sopenharmony_cireset(callback: AsyncCallback\<void>): void
6153e41f4b71Sopenharmony_ci
6154e41f4b71Sopenharmony_ci重置播放视频。通过回调函数获取返回值。
6155e41f4b71Sopenharmony_ci
6156e41f4b71Sopenharmony_ci> **说明:**
6157e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9)替代。
6158e41f4b71Sopenharmony_ci
6159e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6160e41f4b71Sopenharmony_ci
6161e41f4b71Sopenharmony_ci**参数:**
6162e41f4b71Sopenharmony_ci
6163e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
6164e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
6165e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当重置播放视频成功,err为undefined,否则为错误对象。 |
6166e41f4b71Sopenharmony_ci
6167e41f4b71Sopenharmony_ci**示例:**
6168e41f4b71Sopenharmony_ci
6169e41f4b71Sopenharmony_ci```ts
6170e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6171e41f4b71Sopenharmony_ci
6172e41f4b71Sopenharmony_civideoPlayer.reset((err: BusinessError) => {
6173e41f4b71Sopenharmony_ci  if (err) {
6174e41f4b71Sopenharmony_ci    console.error('Failed to reset!');
6175e41f4b71Sopenharmony_ci  } else {
6176e41f4b71Sopenharmony_ci    console.info('Succeeded in resetting!');
6177e41f4b71Sopenharmony_ci  }
6178e41f4b71Sopenharmony_ci});
6179e41f4b71Sopenharmony_ci```
6180e41f4b71Sopenharmony_ci
6181e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup>
6182e41f4b71Sopenharmony_ci
6183e41f4b71Sopenharmony_cireset(): Promise\<void>
6184e41f4b71Sopenharmony_ci
6185e41f4b71Sopenharmony_ci重置播放视频。通过Promise获取返回值。
6186e41f4b71Sopenharmony_ci
6187e41f4b71Sopenharmony_ci> **说明:**
6188e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.reset](#reset9-1)替代。
6189e41f4b71Sopenharmony_ci
6190e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6191e41f4b71Sopenharmony_ci
6192e41f4b71Sopenharmony_ci**返回值:**
6193e41f4b71Sopenharmony_ci
6194e41f4b71Sopenharmony_ci| 类型           | 说明                          |
6195e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
6196e41f4b71Sopenharmony_ci| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
6197e41f4b71Sopenharmony_ci
6198e41f4b71Sopenharmony_ci**示例:**
6199e41f4b71Sopenharmony_ci
6200e41f4b71Sopenharmony_ci```ts
6201e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6202e41f4b71Sopenharmony_ci
6203e41f4b71Sopenharmony_civideoPlayer.reset().then(() => {
6204e41f4b71Sopenharmony_ci  console.info('Succeeded in resetting');
6205e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6206e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6207e41f4b71Sopenharmony_ci});
6208e41f4b71Sopenharmony_ci```
6209e41f4b71Sopenharmony_ci
6210e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup>
6211e41f4b71Sopenharmony_ci
6212e41f4b71Sopenharmony_ciseek(timeMs: number, callback: AsyncCallback\<number>): void
6213e41f4b71Sopenharmony_ci
6214e41f4b71Sopenharmony_ci跳转到指定播放位置,默认跳转到指定时间点的上一个关键帧。通过回调函数获取返回值。
6215e41f4b71Sopenharmony_ci
6216e41f4b71Sopenharmony_ci> **说明:**
6217e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6218e41f4b71Sopenharmony_ci
6219e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6220e41f4b71Sopenharmony_ci
6221e41f4b71Sopenharmony_ci**参数:**
6222e41f4b71Sopenharmony_ci
6223e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                                                         |
6224e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
6225e41f4b71Sopenharmony_ci| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6226e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是   | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。                               |
6227e41f4b71Sopenharmony_ci
6228e41f4b71Sopenharmony_ci**示例:**
6229e41f4b71Sopenharmony_ci
6230e41f4b71Sopenharmony_ci```ts
6231e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6232e41f4b71Sopenharmony_ci
6233e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer;
6234e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6235e41f4b71Sopenharmony_ci  if (video != null) {
6236e41f4b71Sopenharmony_ci    videoPlayer = video;
6237e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
6238e41f4b71Sopenharmony_ci  } else {
6239e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
6240e41f4b71Sopenharmony_ci  }
6241e41f4b71Sopenharmony_ci});
6242e41f4b71Sopenharmony_ci
6243e41f4b71Sopenharmony_cilet seekTime: number = 5000;
6244e41f4b71Sopenharmony_civideoPlayer.seek(seekTime, (err: BusinessError, result: number) => {
6245e41f4b71Sopenharmony_ci  if (err) {
6246e41f4b71Sopenharmony_ci    console.error('Failed to do seek!');
6247e41f4b71Sopenharmony_ci  } else {
6248e41f4b71Sopenharmony_ci    console.info('Succeeded in doing seek!');
6249e41f4b71Sopenharmony_ci  }
6250e41f4b71Sopenharmony_ci});
6251e41f4b71Sopenharmony_ci```
6252e41f4b71Sopenharmony_ci
6253e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup>
6254e41f4b71Sopenharmony_ci
6255e41f4b71Sopenharmony_ciseek(timeMs: number, mode:SeekMode, callback: AsyncCallback\<number>): void
6256e41f4b71Sopenharmony_ci
6257e41f4b71Sopenharmony_ci跳转到指定播放位置。通过回调函数获取返回值。
6258e41f4b71Sopenharmony_ci
6259e41f4b71Sopenharmony_ci> **说明:**
6260e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6261e41f4b71Sopenharmony_ci
6262e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6263e41f4b71Sopenharmony_ci
6264e41f4b71Sopenharmony_ci**参数:**
6265e41f4b71Sopenharmony_ci
6266e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                                                         |
6267e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------------------------------------------------------ |
6268e41f4b71Sopenharmony_ci| timeMs   | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6269e41f4b71Sopenharmony_ci| mode     | [SeekMode](#seekmode8) | 是   | 跳转模式。                                                   |
6270e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是   | 回调函数。跳转到指定播放位置成功时,err为undefined,data为获取到的跳转到的播放位置,否则为错误对象。                               |
6271e41f4b71Sopenharmony_ci
6272e41f4b71Sopenharmony_ci**示例:**
6273e41f4b71Sopenharmony_ci
6274e41f4b71Sopenharmony_ci```ts
6275e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6276e41f4b71Sopenharmony_ci
6277e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null;
6278e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6279e41f4b71Sopenharmony_ci  if (video != null) {
6280e41f4b71Sopenharmony_ci    videoPlayer = video;
6281e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
6282e41f4b71Sopenharmony_ci  } else {
6283e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
6284e41f4b71Sopenharmony_ci  }
6285e41f4b71Sopenharmony_ci});
6286e41f4b71Sopenharmony_cilet seekTime: number = 5000;
6287e41f4b71Sopenharmony_ciif (videoPlayer) {
6288e41f4b71Sopenharmony_ci  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err: BusinessError, result: number) => {
6289e41f4b71Sopenharmony_ci    if (err) {
6290e41f4b71Sopenharmony_ci      console.error('Failed to do seek!');
6291e41f4b71Sopenharmony_ci    } else {
6292e41f4b71Sopenharmony_ci      console.info('Succeeded in doing seek!');
6293e41f4b71Sopenharmony_ci    }
6294e41f4b71Sopenharmony_ci  });
6295e41f4b71Sopenharmony_ci}
6296e41f4b71Sopenharmony_ci```
6297e41f4b71Sopenharmony_ci
6298e41f4b71Sopenharmony_ci### seek<sup>(deprecated)</sup>
6299e41f4b71Sopenharmony_ci
6300e41f4b71Sopenharmony_ciseek(timeMs: number, mode?:SeekMode): Promise\<number>
6301e41f4b71Sopenharmony_ci
6302e41f4b71Sopenharmony_ci跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的上一个关键帧。通过Promise获取返回值。
6303e41f4b71Sopenharmony_ci
6304e41f4b71Sopenharmony_ci> **说明:**
6305e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.seek](#seek9)替代。
6306e41f4b71Sopenharmony_ci
6307e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6308e41f4b71Sopenharmony_ci
6309e41f4b71Sopenharmony_ci**参数:**
6310e41f4b71Sopenharmony_ci
6311e41f4b71Sopenharmony_ci| 参数名 | 类型                   | 必填 | 说明                                                         |
6312e41f4b71Sopenharmony_ci| ------ | ---------------------- | ---- | ------------------------------------------------------------ |
6313e41f4b71Sopenharmony_ci| timeMs | number                 | 是   | 指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。 |
6314e41f4b71Sopenharmony_ci| mode   | [SeekMode](#seekmode8) | 否   | 基于视频I帧的跳转模式,默认为SEEK_PREV_SYNC模式。            |
6315e41f4b71Sopenharmony_ci
6316e41f4b71Sopenharmony_ci**返回值:**
6317e41f4b71Sopenharmony_ci
6318e41f4b71Sopenharmony_ci| 类型             | 说明                                        |
6319e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------- |
6320e41f4b71Sopenharmony_ci| Promise\<number> | 跳转到指定播放位置的Promise返回值,单位ms。 |
6321e41f4b71Sopenharmony_ci
6322e41f4b71Sopenharmony_ci**示例:**
6323e41f4b71Sopenharmony_ci
6324e41f4b71Sopenharmony_ci```ts
6325e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6326e41f4b71Sopenharmony_ci
6327e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null;
6328e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6329e41f4b71Sopenharmony_ci  if (video != null) {
6330e41f4b71Sopenharmony_ci    videoPlayer = video;
6331e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
6332e41f4b71Sopenharmony_ci  } else {
6333e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
6334e41f4b71Sopenharmony_ci  }
6335e41f4b71Sopenharmony_ci});
6336e41f4b71Sopenharmony_cilet seekTime: number = 5000;
6337e41f4b71Sopenharmony_ciif (videoPlayer) {
6338e41f4b71Sopenharmony_ci  (videoPlayer as media.VideoPlayer).seek(seekTime).then((seekDoneTime: number) => { // seekDoneTime表示seek完成后的时间点
6339e41f4b71Sopenharmony_ci    console.info('Succeeded in doing seek');
6340e41f4b71Sopenharmony_ci  }).catch((error: BusinessError) => {
6341e41f4b71Sopenharmony_ci    console.error(`video catchCallback, error:${error}`);
6342e41f4b71Sopenharmony_ci  });
6343e41f4b71Sopenharmony_ci
6344e41f4b71Sopenharmony_ci  (videoPlayer as media.VideoPlayer).seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime: number) => {
6345e41f4b71Sopenharmony_ci    console.info('Succeeded in doing seek');
6346e41f4b71Sopenharmony_ci  }).catch((error: BusinessError) => {
6347e41f4b71Sopenharmony_ci    console.error(`video catchCallback, error:${error}`);
6348e41f4b71Sopenharmony_ci  });
6349e41f4b71Sopenharmony_ci}
6350e41f4b71Sopenharmony_ci```
6351e41f4b71Sopenharmony_ci
6352e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup>
6353e41f4b71Sopenharmony_ci
6354e41f4b71Sopenharmony_cisetVolume(vol: number, callback: AsyncCallback\<void>): void
6355e41f4b71Sopenharmony_ci
6356e41f4b71Sopenharmony_ci设置音量。通过回调函数获取返回值。
6357e41f4b71Sopenharmony_ci
6358e41f4b71Sopenharmony_ci> **说明:**
6359e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
6360e41f4b71Sopenharmony_ci
6361e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6362e41f4b71Sopenharmony_ci
6363e41f4b71Sopenharmony_ci**参数:**
6364e41f4b71Sopenharmony_ci
6365e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                                                         |
6366e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------------------------------------------ |
6367e41f4b71Sopenharmony_ci| vol      | number               | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
6368e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当设置音量成功,err为undefined,否则为错误对象。 |
6369e41f4b71Sopenharmony_ci
6370e41f4b71Sopenharmony_ci**示例:**
6371e41f4b71Sopenharmony_ci
6372e41f4b71Sopenharmony_ci```ts
6373e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6374e41f4b71Sopenharmony_ci
6375e41f4b71Sopenharmony_cilet vol: number = 0.5;
6376e41f4b71Sopenharmony_civideoPlayer.setVolume(vol, (err: BusinessError) => {
6377e41f4b71Sopenharmony_ci  if (err) {
6378e41f4b71Sopenharmony_ci    console.error('Failed to set Volume!');
6379e41f4b71Sopenharmony_ci  } else {
6380e41f4b71Sopenharmony_ci    console.info('Succeeded in setting Volume!');
6381e41f4b71Sopenharmony_ci  }
6382e41f4b71Sopenharmony_ci});
6383e41f4b71Sopenharmony_ci```
6384e41f4b71Sopenharmony_ci
6385e41f4b71Sopenharmony_ci### setVolume<sup>(deprecated)</sup>
6386e41f4b71Sopenharmony_ci
6387e41f4b71Sopenharmony_cisetVolume(vol: number): Promise\<void>
6388e41f4b71Sopenharmony_ci
6389e41f4b71Sopenharmony_ci设置音量。通过Promise获取返回值。
6390e41f4b71Sopenharmony_ci
6391e41f4b71Sopenharmony_ci> **说明:**
6392e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setVolume](#setvolume9)替代。
6393e41f4b71Sopenharmony_ci
6394e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6395e41f4b71Sopenharmony_ci
6396e41f4b71Sopenharmony_ci**参数:**
6397e41f4b71Sopenharmony_ci
6398e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                         |
6399e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ------------------------------------------------------------ |
6400e41f4b71Sopenharmony_ci| vol    | number | 是   | 指定的相对音量大小,取值范围为[0.00-1.00],1表示最大音量,即100%。 |
6401e41f4b71Sopenharmony_ci
6402e41f4b71Sopenharmony_ci**返回值:**
6403e41f4b71Sopenharmony_ci
6404e41f4b71Sopenharmony_ci| 类型           | 说明                      |
6405e41f4b71Sopenharmony_ci| -------------- | ------------------------- |
6406e41f4b71Sopenharmony_ci| Promise\<void> | 设置音量的Promise返回值。 |
6407e41f4b71Sopenharmony_ci
6408e41f4b71Sopenharmony_ci**示例:**
6409e41f4b71Sopenharmony_ci
6410e41f4b71Sopenharmony_ci```ts
6411e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6412e41f4b71Sopenharmony_ci
6413e41f4b71Sopenharmony_cilet vol: number = 0.5;
6414e41f4b71Sopenharmony_civideoPlayer.setVolume(vol).then(() => {
6415e41f4b71Sopenharmony_ci  console.info('Succeeded in setting Volume');
6416e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6417e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6418e41f4b71Sopenharmony_ci});
6419e41f4b71Sopenharmony_ci```
6420e41f4b71Sopenharmony_ci
6421e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup>
6422e41f4b71Sopenharmony_ci
6423e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void
6424e41f4b71Sopenharmony_ci
6425e41f4b71Sopenharmony_ci释放视频资源。通过回调函数获取返回值。
6426e41f4b71Sopenharmony_ci
6427e41f4b71Sopenharmony_ci> **说明:**
6428e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9)替代。
6429e41f4b71Sopenharmony_ci
6430e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6431e41f4b71Sopenharmony_ci
6432e41f4b71Sopenharmony_ci**参数:**
6433e41f4b71Sopenharmony_ci
6434e41f4b71Sopenharmony_ci| 参数名   | 类型                 | 必填 | 说明                     |
6435e41f4b71Sopenharmony_ci| -------- | -------------------- | ---- | ------------------------ |
6436e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void> | 是   | 回调函数。当释放视频资源成功,err为undefined,否则为错误对象。 |
6437e41f4b71Sopenharmony_ci
6438e41f4b71Sopenharmony_ci**示例:**
6439e41f4b71Sopenharmony_ci
6440e41f4b71Sopenharmony_ci```ts
6441e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6442e41f4b71Sopenharmony_ci
6443e41f4b71Sopenharmony_civideoPlayer.release((err: BusinessError) => {
6444e41f4b71Sopenharmony_ci  if (err) {
6445e41f4b71Sopenharmony_ci    console.error('Failed to release!');
6446e41f4b71Sopenharmony_ci  } else {
6447e41f4b71Sopenharmony_ci    console.info('Succeeded in releasing!');
6448e41f4b71Sopenharmony_ci  }
6449e41f4b71Sopenharmony_ci});
6450e41f4b71Sopenharmony_ci```
6451e41f4b71Sopenharmony_ci
6452e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup>
6453e41f4b71Sopenharmony_ci
6454e41f4b71Sopenharmony_cirelease(): Promise\<void>
6455e41f4b71Sopenharmony_ci
6456e41f4b71Sopenharmony_ci释放视频资源。通过Promise获取返回值。
6457e41f4b71Sopenharmony_ci
6458e41f4b71Sopenharmony_ci> **说明:**
6459e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.release](#release9-1)替代。
6460e41f4b71Sopenharmony_ci
6461e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6462e41f4b71Sopenharmony_ci
6463e41f4b71Sopenharmony_ci**返回值:**
6464e41f4b71Sopenharmony_ci
6465e41f4b71Sopenharmony_ci| 类型           | 说明                          |
6466e41f4b71Sopenharmony_ci| -------------- | ----------------------------- |
6467e41f4b71Sopenharmony_ci| Promise\<void> | 释放视频资源的Promise返回值。 |
6468e41f4b71Sopenharmony_ci
6469e41f4b71Sopenharmony_ci**示例:**
6470e41f4b71Sopenharmony_ci
6471e41f4b71Sopenharmony_ci```ts
6472e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6473e41f4b71Sopenharmony_ci
6474e41f4b71Sopenharmony_civideoPlayer.release().then(() => {
6475e41f4b71Sopenharmony_ci  console.info('Succeeded in releasing');
6476e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6477e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6478e41f4b71Sopenharmony_ci});
6479e41f4b71Sopenharmony_ci```
6480e41f4b71Sopenharmony_ci
6481e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup>
6482e41f4b71Sopenharmony_ci
6483e41f4b71Sopenharmony_cigetTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
6484e41f4b71Sopenharmony_ci
6485e41f4b71Sopenharmony_ci获取视频轨道信息。通过回调函数获取返回值。
6486e41f4b71Sopenharmony_ci
6487e41f4b71Sopenharmony_ci> **说明:**
6488e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9)替代。
6489e41f4b71Sopenharmony_ci
6490e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6491e41f4b71Sopenharmony_ci
6492e41f4b71Sopenharmony_ci**参数:**
6493e41f4b71Sopenharmony_ci
6494e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                       |
6495e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
6496e41f4b71Sopenharmony_ci| callback | AsyncCallback\<Array\<[MediaDescription](#mediadescription8)>> | 是   | 回调函数。获取视频轨道信息成功时,err为undefined,data为获取到的视频轨道信息MediaDescription数组,否则为错误对象。 |
6497e41f4b71Sopenharmony_ci
6498e41f4b71Sopenharmony_ci**示例:**
6499e41f4b71Sopenharmony_ci
6500e41f4b71Sopenharmony_ci```ts
6501e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6502e41f4b71Sopenharmony_ci
6503e41f4b71Sopenharmony_civideoPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
6504e41f4b71Sopenharmony_ci  if ((arrList) != null) {
6505e41f4b71Sopenharmony_ci    console.info('Succeeded in getting TrackDescription');
6506e41f4b71Sopenharmony_ci  } else {
6507e41f4b71Sopenharmony_ci    console.error(`Failed to get TrackDescription, error:${error}`);
6508e41f4b71Sopenharmony_ci  }
6509e41f4b71Sopenharmony_ci});
6510e41f4b71Sopenharmony_ci```
6511e41f4b71Sopenharmony_ci
6512e41f4b71Sopenharmony_ci### getTrackDescription<sup>(deprecated)</sup>
6513e41f4b71Sopenharmony_ci
6514e41f4b71Sopenharmony_cigetTrackDescription(): Promise\<Array\<MediaDescription>>
6515e41f4b71Sopenharmony_ci
6516e41f4b71Sopenharmony_ci获取视频轨道信息。通过Promise获取返回值。
6517e41f4b71Sopenharmony_ci
6518e41f4b71Sopenharmony_ci> **说明:**
6519e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.getTrackDescription](#gettrackdescription9-1)替代。
6520e41f4b71Sopenharmony_ci
6521e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6522e41f4b71Sopenharmony_ci
6523e41f4b71Sopenharmony_ci**返回值:**
6524e41f4b71Sopenharmony_ci
6525e41f4b71Sopenharmony_ci| 类型                                                   | 说明                                            |
6526e41f4b71Sopenharmony_ci| ------------------------------------------------------ | ----------------------------------------------- |
6527e41f4b71Sopenharmony_ci| Promise<Array<[MediaDescription](#mediadescription8)>> | Promise对象,返回获取的视频轨道信息MediaDescription数组。 |
6528e41f4b71Sopenharmony_ci
6529e41f4b71Sopenharmony_ci**示例:**
6530e41f4b71Sopenharmony_ci
6531e41f4b71Sopenharmony_ci```ts
6532e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6533e41f4b71Sopenharmony_ci
6534e41f4b71Sopenharmony_civideoPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
6535e41f4b71Sopenharmony_ci  if (arrList != null) {
6536e41f4b71Sopenharmony_ci    console.info('Succeeded in getting TrackDescription');
6537e41f4b71Sopenharmony_ci  } else {
6538e41f4b71Sopenharmony_ci    console.error('Failed to get TrackDescription');
6539e41f4b71Sopenharmony_ci  }
6540e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
6541e41f4b71Sopenharmony_ci  console.error(`video catchCallback, error:${error}`);
6542e41f4b71Sopenharmony_ci});
6543e41f4b71Sopenharmony_ci```
6544e41f4b71Sopenharmony_ci
6545e41f4b71Sopenharmony_ci### setSpeed<sup>(deprecated)</sup>
6546e41f4b71Sopenharmony_ci
6547e41f4b71Sopenharmony_cisetSpeed(speed: number, callback: AsyncCallback\<number>): void
6548e41f4b71Sopenharmony_ci
6549e41f4b71Sopenharmony_ci设置播放速度。通过回调函数获取返回值。
6550e41f4b71Sopenharmony_ci
6551e41f4b71Sopenharmony_ci> **说明:**
6552e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
6553e41f4b71Sopenharmony_ci
6554e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6555e41f4b71Sopenharmony_ci
6556e41f4b71Sopenharmony_ci**参数:**
6557e41f4b71Sopenharmony_ci
6558e41f4b71Sopenharmony_ci| 参数名   | 类型                   | 必填 | 说明                                                       |
6559e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ---------------------------------------------------------- |
6560e41f4b71Sopenharmony_ci| speed    | number                 | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6561e41f4b71Sopenharmony_ci| callback | AsyncCallback\<number> | 是   | 回调函数。设置播放速度成功时,err为undefined,data为设置的播放速度,否则为错误对象。                                   |
6562e41f4b71Sopenharmony_ci
6563e41f4b71Sopenharmony_ci**示例:**
6564e41f4b71Sopenharmony_ci
6565e41f4b71Sopenharmony_ci```ts
6566e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6567e41f4b71Sopenharmony_ci
6568e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null;
6569e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6570e41f4b71Sopenharmony_ci  if (video != null) {
6571e41f4b71Sopenharmony_ci    videoPlayer = video;
6572e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
6573e41f4b71Sopenharmony_ci  } else {
6574e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
6575e41f4b71Sopenharmony_ci  }
6576e41f4b71Sopenharmony_ci});
6577e41f4b71Sopenharmony_cilet speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
6578e41f4b71Sopenharmony_ciif (videoPlayer) {
6579e41f4b71Sopenharmony_ci  (videoPlayer as media.VideoPlayer).setSpeed(speed, (err: BusinessError, result: number) => {
6580e41f4b71Sopenharmony_ci    if (err) {
6581e41f4b71Sopenharmony_ci      console.error('Failed to set Speed!');
6582e41f4b71Sopenharmony_ci    } else {
6583e41f4b71Sopenharmony_ci      console.info('Succeeded in setting Speed!');
6584e41f4b71Sopenharmony_ci    }
6585e41f4b71Sopenharmony_ci  });
6586e41f4b71Sopenharmony_ci}
6587e41f4b71Sopenharmony_ci```
6588e41f4b71Sopenharmony_ci
6589e41f4b71Sopenharmony_ci### setSpeed<sup>(deprecated)</sup>
6590e41f4b71Sopenharmony_ci
6591e41f4b71Sopenharmony_cisetSpeed(speed: number): Promise\<number>
6592e41f4b71Sopenharmony_ci
6593e41f4b71Sopenharmony_ci设置播放速度。通过Promise获取返回值。
6594e41f4b71Sopenharmony_ci
6595e41f4b71Sopenharmony_ci> **说明:**
6596e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.setSpeed](#setspeed9)替代。
6597e41f4b71Sopenharmony_ci
6598e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6599e41f4b71Sopenharmony_ci
6600e41f4b71Sopenharmony_ci**参数:**
6601e41f4b71Sopenharmony_ci
6602e41f4b71Sopenharmony_ci| 参数名 | 类型   | 必填 | 说明                                                       |
6603e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------------------------------------------------- |
6604e41f4b71Sopenharmony_ci| speed  | number | 是   | 指定播放视频速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6605e41f4b71Sopenharmony_ci
6606e41f4b71Sopenharmony_ci**返回值:**
6607e41f4b71Sopenharmony_ci
6608e41f4b71Sopenharmony_ci| 类型             | 说明                                                         |
6609e41f4b71Sopenharmony_ci| ---------------- | ------------------------------------------------------------ |
6610e41f4b71Sopenharmony_ci| Promise\<number> | Promise对象,返回设置的播放速度,具体见[PlaybackSpeed](#playbackspeed8)。 |
6611e41f4b71Sopenharmony_ci
6612e41f4b71Sopenharmony_ci**示例:**
6613e41f4b71Sopenharmony_ci
6614e41f4b71Sopenharmony_ci```ts
6615e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6616e41f4b71Sopenharmony_ci
6617e41f4b71Sopenharmony_cilet videoPlayer: media.VideoPlayer | null = null;
6618e41f4b71Sopenharmony_cimedia.createVideoPlayer((error: BusinessError, video: media.VideoPlayer) => {
6619e41f4b71Sopenharmony_ci  if (video != null) {
6620e41f4b71Sopenharmony_ci    videoPlayer = video;
6621e41f4b71Sopenharmony_ci    console.info('Succeeded in creating VideoPlayer');
6622e41f4b71Sopenharmony_ci  } else {
6623e41f4b71Sopenharmony_ci    console.error(`Failed to create VideoPlayer, error:${error}`);
6624e41f4b71Sopenharmony_ci  }
6625e41f4b71Sopenharmony_ci});
6626e41f4b71Sopenharmony_cilet speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
6627e41f4b71Sopenharmony_ciif (videoPlayer) {
6628e41f4b71Sopenharmony_ci  (videoPlayer as media.VideoPlayer).setSpeed(speed).then((result: number) => {
6629e41f4b71Sopenharmony_ci    console.info('Succeeded in setting Speed');
6630e41f4b71Sopenharmony_ci  }).catch((error: BusinessError) => {
6631e41f4b71Sopenharmony_ci    console.error(`Failed to set Speed, error:${error}`);//todo:: error
6632e41f4b71Sopenharmony_ci  });
6633e41f4b71Sopenharmony_ci}
6634e41f4b71Sopenharmony_ci```
6635e41f4b71Sopenharmony_ci
6636e41f4b71Sopenharmony_ci### on('playbackCompleted')<sup>(deprecated)</sup>
6637e41f4b71Sopenharmony_ci
6638e41f4b71Sopenharmony_cion(type: 'playbackCompleted', callback: Callback\<void>): void
6639e41f4b71Sopenharmony_ci
6640e41f4b71Sopenharmony_ci开始监听视频播放完成事件。
6641e41f4b71Sopenharmony_ci
6642e41f4b71Sopenharmony_ci> **说明:**
6643e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('stateChange')](#onstatechange9)替代。
6644e41f4b71Sopenharmony_ci
6645e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6646e41f4b71Sopenharmony_ci
6647e41f4b71Sopenharmony_ci**参数:**
6648e41f4b71Sopenharmony_ci
6649e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                        |
6650e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ----------------------------------------------------------- |
6651e41f4b71Sopenharmony_ci| type     | string   | 是   | 视频播放完成事件回调类型,支持的事件:'playbackCompleted'。 |
6652e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是   | 视频播放完成事件回调方法。                                  |
6653e41f4b71Sopenharmony_ci
6654e41f4b71Sopenharmony_ci**示例:**
6655e41f4b71Sopenharmony_ci
6656e41f4b71Sopenharmony_ci```ts
6657e41f4b71Sopenharmony_civideoPlayer.on('playbackCompleted', () => {
6658e41f4b71Sopenharmony_ci  console.info('playbackCompleted called!');
6659e41f4b71Sopenharmony_ci});
6660e41f4b71Sopenharmony_ci```
6661e41f4b71Sopenharmony_ci
6662e41f4b71Sopenharmony_ci### on('bufferingUpdate')<sup>(deprecated)</sup>
6663e41f4b71Sopenharmony_ci
6664e41f4b71Sopenharmony_cion(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
6665e41f4b71Sopenharmony_ci
6666e41f4b71Sopenharmony_ci开始监听视频缓存更新事件。仅网络播放支持该订阅事件。
6667e41f4b71Sopenharmony_ci
6668e41f4b71Sopenharmony_ci> **说明:**
6669e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('bufferingUpdate')](#onbufferingupdate9)替代。
6670e41f4b71Sopenharmony_ci
6671e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6672e41f4b71Sopenharmony_ci
6673e41f4b71Sopenharmony_ci**参数:**
6674e41f4b71Sopenharmony_ci
6675e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
6676e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
6677e41f4b71Sopenharmony_ci| type     | string   | 是   | 视频缓存事件回调类型,支持的事件:'bufferingUpdate'。        |
6678e41f4b71Sopenharmony_ci| callback | function | 是   | 视频缓存事件回调方法。<br>[BufferingInfoType](#bufferinginfotype8)value值固定为0。 |
6679e41f4b71Sopenharmony_ci
6680e41f4b71Sopenharmony_ci**示例:**
6681e41f4b71Sopenharmony_ci
6682e41f4b71Sopenharmony_ci```ts
6683e41f4b71Sopenharmony_civideoPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
6684e41f4b71Sopenharmony_ci  console.info('video bufferingInfo type: ' + infoType);
6685e41f4b71Sopenharmony_ci  console.info('video bufferingInfo value: ' + value);
6686e41f4b71Sopenharmony_ci});
6687e41f4b71Sopenharmony_ci```
6688e41f4b71Sopenharmony_ci
6689e41f4b71Sopenharmony_ci### on('startRenderFrame')<sup>(deprecated)</sup>
6690e41f4b71Sopenharmony_ci
6691e41f4b71Sopenharmony_cion(type: 'startRenderFrame', callback: Callback\<void>): void
6692e41f4b71Sopenharmony_ci
6693e41f4b71Sopenharmony_ci开始监听视频播放首帧送显上报事件。
6694e41f4b71Sopenharmony_ci
6695e41f4b71Sopenharmony_ci> **说明:**
6696e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('startRenderFrame')](#onstartrenderframe9)替代。
6697e41f4b71Sopenharmony_ci
6698e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6699e41f4b71Sopenharmony_ci
6700e41f4b71Sopenharmony_ci**参数:**
6701e41f4b71Sopenharmony_ci
6702e41f4b71Sopenharmony_ci| 参数名   | 类型            | 必填 | 说明                                                         |
6703e41f4b71Sopenharmony_ci| -------- | --------------- | ---- | ------------------------------------------------------------ |
6704e41f4b71Sopenharmony_ci| type     | string          | 是   | 视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。 |
6705e41f4b71Sopenharmony_ci| callback | Callback\<void> | 是   | 视频播放首帧送显上报事件回调方法。                           |
6706e41f4b71Sopenharmony_ci
6707e41f4b71Sopenharmony_ci**示例:**
6708e41f4b71Sopenharmony_ci
6709e41f4b71Sopenharmony_ci```ts
6710e41f4b71Sopenharmony_civideoPlayer.on('startRenderFrame', () => {
6711e41f4b71Sopenharmony_ci  console.info('startRenderFrame called!');
6712e41f4b71Sopenharmony_ci});
6713e41f4b71Sopenharmony_ci```
6714e41f4b71Sopenharmony_ci
6715e41f4b71Sopenharmony_ci### on('videoSizeChanged')<sup>(deprecated)</sup>
6716e41f4b71Sopenharmony_ci
6717e41f4b71Sopenharmony_cion(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void
6718e41f4b71Sopenharmony_ci
6719e41f4b71Sopenharmony_ci开始监听视频播放宽高变化事件。
6720e41f4b71Sopenharmony_ci
6721e41f4b71Sopenharmony_ci> **说明:**
6722e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('videoSizeChange')](#onvideosizechange9)替代。
6723e41f4b71Sopenharmony_ci
6724e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6725e41f4b71Sopenharmony_ci
6726e41f4b71Sopenharmony_ci**参数:**
6727e41f4b71Sopenharmony_ci
6728e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
6729e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
6730e41f4b71Sopenharmony_ci| type     | string   | 是   | 视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。 |
6731e41f4b71Sopenharmony_ci| callback | function | 是   | 视频播放宽高变化事件回调方法,width表示宽,height表示高。    |
6732e41f4b71Sopenharmony_ci
6733e41f4b71Sopenharmony_ci**示例:**
6734e41f4b71Sopenharmony_ci
6735e41f4b71Sopenharmony_ci```ts
6736e41f4b71Sopenharmony_civideoPlayer.on('videoSizeChanged', (width: number, height: number) => {
6737e41f4b71Sopenharmony_ci  console.info('video width is: ' + width);
6738e41f4b71Sopenharmony_ci  console.info('video height is: ' + height);
6739e41f4b71Sopenharmony_ci});
6740e41f4b71Sopenharmony_ci```
6741e41f4b71Sopenharmony_ci### on('audioInterrupt')<sup>(deprecated)</sup>
6742e41f4b71Sopenharmony_ci
6743e41f4b71Sopenharmony_cion(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
6744e41f4b71Sopenharmony_ci
6745e41f4b71Sopenharmony_ci监听音频焦点变化事件,参考[audio.InterruptEvent](../apis-audio-kit/js-apis-audio.md#interruptevent9)。
6746e41f4b71Sopenharmony_ci
6747e41f4b71Sopenharmony_ci> **说明:**
6748e41f4b71Sopenharmony_ci> 从API version 9开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('audioInterrupt')](#onaudiointerrupt9)替代。
6749e41f4b71Sopenharmony_ci
6750e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6751e41f4b71Sopenharmony_ci
6752e41f4b71Sopenharmony_ci**参数:**
6753e41f4b71Sopenharmony_ci
6754e41f4b71Sopenharmony_ci| 参数名   | 类型                                                         | 必填 | 说明                                                     |
6755e41f4b71Sopenharmony_ci| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
6756e41f4b71Sopenharmony_ci| type     | string                                                       | 是   | 音频焦点变化事件回调类型,支持的事件:'audioInterrupt'。 |
6757e41f4b71Sopenharmony_ci| callback | function | 是   | 音频焦点变化事件回调方法。                               |
6758e41f4b71Sopenharmony_ci
6759e41f4b71Sopenharmony_ci**示例:**
6760e41f4b71Sopenharmony_ci
6761e41f4b71Sopenharmony_ci```ts
6762e41f4b71Sopenharmony_ciimport { audio } from '@kit.AudioKit';
6763e41f4b71Sopenharmony_ci
6764e41f4b71Sopenharmony_civideoPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
6765e41f4b71Sopenharmony_ci  console.info('audioInterrupt called,and InterruptEvent info is:' + info)
6766e41f4b71Sopenharmony_ci})
6767e41f4b71Sopenharmony_ci```
6768e41f4b71Sopenharmony_ci
6769e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup>
6770e41f4b71Sopenharmony_ci
6771e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
6772e41f4b71Sopenharmony_ci
6773e41f4b71Sopenharmony_ci开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。
6774e41f4b71Sopenharmony_ci
6775e41f4b71Sopenharmony_ci> **说明:**
6776e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayer.on('error')](#onerror9)替代。
6777e41f4b71Sopenharmony_ci
6778e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6779e41f4b71Sopenharmony_ci
6780e41f4b71Sopenharmony_ci**参数:**
6781e41f4b71Sopenharmony_ci
6782e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                                         |
6783e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ |
6784e41f4b71Sopenharmony_ci| type     | string        | 是   | 播放错误事件回调类型,支持的事件包括:'error'。<br>- 'error':视频播放中发生错误,触发该事件。 |
6785e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 播放错误事件回调方法。                                       |
6786e41f4b71Sopenharmony_ci
6787e41f4b71Sopenharmony_ci**示例:**
6788e41f4b71Sopenharmony_ci
6789e41f4b71Sopenharmony_ci```ts
6790e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
6791e41f4b71Sopenharmony_ci
6792e41f4b71Sopenharmony_civideoPlayer.on('error', (error: BusinessError) => {  // 设置'error'事件回调
6793e41f4b71Sopenharmony_ci  console.error(`video error called, error: ${error}`);
6794e41f4b71Sopenharmony_ci});
6795e41f4b71Sopenharmony_civideoPlayer.url = 'fd://error';  //设置错误的播放地址,触发'error'事件
6796e41f4b71Sopenharmony_ci```
6797e41f4b71Sopenharmony_ci
6798e41f4b71Sopenharmony_ci## VideoPlayState<sup>(deprecated)</sup>
6799e41f4b71Sopenharmony_ci
6800e41f4b71Sopenharmony_citype VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error'
6801e41f4b71Sopenharmony_ci
6802e41f4b71Sopenharmony_ci视频播放的状态机,可通过state属性获取当前状态。
6803e41f4b71Sopenharmony_ci
6804e41f4b71Sopenharmony_ci> **说明:**
6805e41f4b71Sopenharmony_ci> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
6806e41f4b71Sopenharmony_ci
6807e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
6808e41f4b71Sopenharmony_ci
6809e41f4b71Sopenharmony_ci| 类型     | 说明           |
6810e41f4b71Sopenharmony_ci| -------- | -------------- |
6811e41f4b71Sopenharmony_ci| 'idle'     | 视频播放空闲。 |
6812e41f4b71Sopenharmony_ci| 'prepared' | 视频播放准备。 |
6813e41f4b71Sopenharmony_ci| 'playing'  | 视频正在播放。 |
6814e41f4b71Sopenharmony_ci| 'paused'   | 视频暂停播放。 |
6815e41f4b71Sopenharmony_ci| 'stopped'  | 视频播放停止。 |
6816e41f4b71Sopenharmony_ci| 'error'    | 错误状态。     |
6817e41f4b71Sopenharmony_ci
6818e41f4b71Sopenharmony_ci## AudioRecorder<sup>(deprecated)</sup>
6819e41f4b71Sopenharmony_ci
6820e41f4b71Sopenharmony_ci> **说明:**
6821e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder](#avrecorder9)替代。
6822e41f4b71Sopenharmony_ci
6823e41f4b71Sopenharmony_ci音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过[createAudioRecorder()](#mediacreateaudiorecorderdeprecated) 构建一个AudioRecorder实例。
6824e41f4b71Sopenharmony_ci
6825e41f4b71Sopenharmony_ci### prepare<sup>(deprecated)</sup>
6826e41f4b71Sopenharmony_ci
6827e41f4b71Sopenharmony_ciprepare(config: AudioRecorderConfig): void
6828e41f4b71Sopenharmony_ci
6829e41f4b71Sopenharmony_ci录音准备。
6830e41f4b71Sopenharmony_ci
6831e41f4b71Sopenharmony_ci> **说明:**
6832e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.prepare](#prepare9-2)替代。
6833e41f4b71Sopenharmony_ci
6834e41f4b71Sopenharmony_ci**需要权限:** ohos.permission.MICROPHONE
6835e41f4b71Sopenharmony_ci
6836e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6837e41f4b71Sopenharmony_ci
6838e41f4b71Sopenharmony_ci**参数:**
6839e41f4b71Sopenharmony_ci
6840e41f4b71Sopenharmony_ci| 参数名 | 类型                                        | 必填 | 说明                                                         |
6841e41f4b71Sopenharmony_ci| ------ | ------------------------------------------- | ---- | ------------------------------------------------------------ |
6842e41f4b71Sopenharmony_ci| config | [AudioRecorderConfig](#audiorecorderconfigdeprecated) | 是   | 配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。 |
6843e41f4b71Sopenharmony_ci
6844e41f4b71Sopenharmony_ci**错误码:**
6845e41f4b71Sopenharmony_ci
6846e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
6847e41f4b71Sopenharmony_ci
6848e41f4b71Sopenharmony_ci| 错误码ID | 错误信息              |
6849e41f4b71Sopenharmony_ci| -------- | --------------------- |
6850e41f4b71Sopenharmony_ci| 201      | permission denied     |
6851e41f4b71Sopenharmony_ci
6852e41f4b71Sopenharmony_ci**示例:**
6853e41f4b71Sopenharmony_ci
6854e41f4b71Sopenharmony_ci```ts
6855e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = {
6856e41f4b71Sopenharmony_ci  audioEncoder : media.AudioEncoder.AAC_LC,
6857e41f4b71Sopenharmony_ci  audioEncodeBitRate : 22050,
6858e41f4b71Sopenharmony_ci  audioSampleRate : 22050,
6859e41f4b71Sopenharmony_ci  numberOfChannels : 2,
6860e41f4b71Sopenharmony_ci  format : media.AudioOutputFormat.AAC_ADTS,
6861e41f4b71Sopenharmony_ci  uri : 'fd://1',       // 文件需先由调用者创建,并给予适当的权限
6862e41f4b71Sopenharmony_ci  location : { latitude : 30, longitude : 130},
6863e41f4b71Sopenharmony_ci}
6864e41f4b71Sopenharmony_ciaudioRecorder.on('prepare', () => {    //设置'prepare'事件回调
6865e41f4b71Sopenharmony_ci  console.info('prepare called');
6866e41f4b71Sopenharmony_ci});
6867e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig);
6868e41f4b71Sopenharmony_ci```
6869e41f4b71Sopenharmony_ci
6870e41f4b71Sopenharmony_ci### start<sup>(deprecated)</sup>
6871e41f4b71Sopenharmony_ci
6872e41f4b71Sopenharmony_cistart(): void
6873e41f4b71Sopenharmony_ci
6874e41f4b71Sopenharmony_ci开始录制,需在'prepare'事件成功触发后,才能调用start方法。
6875e41f4b71Sopenharmony_ci
6876e41f4b71Sopenharmony_ci> **说明:**
6877e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.start](#start9)替代。
6878e41f4b71Sopenharmony_ci
6879e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6880e41f4b71Sopenharmony_ci
6881e41f4b71Sopenharmony_ci**示例:**
6882e41f4b71Sopenharmony_ci
6883e41f4b71Sopenharmony_ci```ts
6884e41f4b71Sopenharmony_ciaudioRecorder.on('start', () => {    //设置'start'事件回调
6885e41f4b71Sopenharmony_ci  console.info('audio recorder start called');
6886e41f4b71Sopenharmony_ci});
6887e41f4b71Sopenharmony_ciaudioRecorder.start();
6888e41f4b71Sopenharmony_ci```
6889e41f4b71Sopenharmony_ci
6890e41f4b71Sopenharmony_ci### pause<sup>(deprecated)</sup>
6891e41f4b71Sopenharmony_ci
6892e41f4b71Sopenharmony_cipause():void
6893e41f4b71Sopenharmony_ci
6894e41f4b71Sopenharmony_ci暂停录制,需要在'start'事件成功触发后,才能调用pause方法。
6895e41f4b71Sopenharmony_ci
6896e41f4b71Sopenharmony_ci> **说明:**
6897e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.pause](#pause9-2)替代。
6898e41f4b71Sopenharmony_ci
6899e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6900e41f4b71Sopenharmony_ci
6901e41f4b71Sopenharmony_ci**示例:**
6902e41f4b71Sopenharmony_ci
6903e41f4b71Sopenharmony_ci```ts
6904e41f4b71Sopenharmony_ciaudioRecorder.on('pause', () => {    //设置'pause'事件回调
6905e41f4b71Sopenharmony_ci  console.info('audio recorder pause called');
6906e41f4b71Sopenharmony_ci});
6907e41f4b71Sopenharmony_ciaudioRecorder.pause();
6908e41f4b71Sopenharmony_ci```
6909e41f4b71Sopenharmony_ci
6910e41f4b71Sopenharmony_ci### resume<sup>(deprecated)</sup>
6911e41f4b71Sopenharmony_ci
6912e41f4b71Sopenharmony_ciresume():void
6913e41f4b71Sopenharmony_ci
6914e41f4b71Sopenharmony_ci恢复录制,需要在'pause'事件成功触发后,才能调用resume方法。
6915e41f4b71Sopenharmony_ci
6916e41f4b71Sopenharmony_ci> **说明:**
6917e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.resume](#resume9)替代。
6918e41f4b71Sopenharmony_ci
6919e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6920e41f4b71Sopenharmony_ci
6921e41f4b71Sopenharmony_ci**示例:**
6922e41f4b71Sopenharmony_ci
6923e41f4b71Sopenharmony_ci```ts
6924e41f4b71Sopenharmony_ciaudioRecorder.on('resume', () => {    //设置'resume'事件回调
6925e41f4b71Sopenharmony_ci  console.info('audio recorder resume called');
6926e41f4b71Sopenharmony_ci});
6927e41f4b71Sopenharmony_ciaudioRecorder.resume();
6928e41f4b71Sopenharmony_ci```
6929e41f4b71Sopenharmony_ci
6930e41f4b71Sopenharmony_ci### stop<sup>(deprecated)</sup>
6931e41f4b71Sopenharmony_ci
6932e41f4b71Sopenharmony_cistop(): void
6933e41f4b71Sopenharmony_ci
6934e41f4b71Sopenharmony_ci停止录音。
6935e41f4b71Sopenharmony_ci
6936e41f4b71Sopenharmony_ci> **说明:**
6937e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.stop](#stop9-2)替代。
6938e41f4b71Sopenharmony_ci
6939e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6940e41f4b71Sopenharmony_ci
6941e41f4b71Sopenharmony_ci**示例:**
6942e41f4b71Sopenharmony_ci
6943e41f4b71Sopenharmony_ci```ts
6944e41f4b71Sopenharmony_ciaudioRecorder.on('stop', () => {    //设置'stop'事件回调
6945e41f4b71Sopenharmony_ci  console.info('audio recorder stop called');
6946e41f4b71Sopenharmony_ci});
6947e41f4b71Sopenharmony_ciaudioRecorder.stop();
6948e41f4b71Sopenharmony_ci```
6949e41f4b71Sopenharmony_ci
6950e41f4b71Sopenharmony_ci### release<sup>(deprecated)</sup>
6951e41f4b71Sopenharmony_ci
6952e41f4b71Sopenharmony_cirelease(): void
6953e41f4b71Sopenharmony_ci
6954e41f4b71Sopenharmony_ci释放录音资源。
6955e41f4b71Sopenharmony_ci
6956e41f4b71Sopenharmony_ci> **说明:**
6957e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.release](#release9-2)替代。
6958e41f4b71Sopenharmony_ci
6959e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6960e41f4b71Sopenharmony_ci
6961e41f4b71Sopenharmony_ci**示例:**
6962e41f4b71Sopenharmony_ci
6963e41f4b71Sopenharmony_ci```ts
6964e41f4b71Sopenharmony_ciaudioRecorder.on('release', () => {    //设置'release'事件回调
6965e41f4b71Sopenharmony_ci  console.info('audio recorder release called');
6966e41f4b71Sopenharmony_ci});
6967e41f4b71Sopenharmony_ciaudioRecorder.release();
6968e41f4b71Sopenharmony_ciaudioRecorder = undefined;
6969e41f4b71Sopenharmony_ci```
6970e41f4b71Sopenharmony_ci
6971e41f4b71Sopenharmony_ci### reset<sup>(deprecated)</sup>
6972e41f4b71Sopenharmony_ci
6973e41f4b71Sopenharmony_cireset(): void
6974e41f4b71Sopenharmony_ci
6975e41f4b71Sopenharmony_ci重置录音。
6976e41f4b71Sopenharmony_ci
6977e41f4b71Sopenharmony_ci进行重置录音之前,需要先调用stop()停止录音。重置录音之后,需要调用prepare()设置录音参数项,才能再次进行录音。
6978e41f4b71Sopenharmony_ci
6979e41f4b71Sopenharmony_ci> **说明:**
6980e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.reset](#reset9-2)替代。
6981e41f4b71Sopenharmony_ci
6982e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
6983e41f4b71Sopenharmony_ci
6984e41f4b71Sopenharmony_ci**示例:**
6985e41f4b71Sopenharmony_ci
6986e41f4b71Sopenharmony_ci```ts
6987e41f4b71Sopenharmony_ciaudioRecorder.on('reset', () => {    //设置'reset'事件回调
6988e41f4b71Sopenharmony_ci  console.info('audio recorder reset called');
6989e41f4b71Sopenharmony_ci});
6990e41f4b71Sopenharmony_ciaudioRecorder.reset();
6991e41f4b71Sopenharmony_ci```
6992e41f4b71Sopenharmony_ci
6993e41f4b71Sopenharmony_ci### on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')<sup>(deprecated)</sup>
6994e41f4b71Sopenharmony_ci
6995e41f4b71Sopenharmony_cion(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void
6996e41f4b71Sopenharmony_ci
6997e41f4b71Sopenharmony_ci开始订阅音频录制事件。
6998e41f4b71Sopenharmony_ci
6999e41f4b71Sopenharmony_ci> **说明:**
7000e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('stateChange')](#onstatechange9-1)替代。
7001e41f4b71Sopenharmony_ci
7002e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7003e41f4b71Sopenharmony_ci
7004e41f4b71Sopenharmony_ci**参数:**
7005e41f4b71Sopenharmony_ci
7006e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
7007e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
7008e41f4b71Sopenharmony_ci| type     | string   | 是   | 录制事件回调类型,支持的事件包括:'prepare'&nbsp;\|&nbsp;'start'&nbsp;\|  'pause' \| ’resume‘ \|&nbsp;'stop'&nbsp;\|&nbsp;'release'&nbsp;\|&nbsp;'reset'。<br/>-&nbsp;'prepare'&nbsp;:完成prepare调用,音频录制参数设置完成,触发该事件。<br/>-&nbsp;'start'&nbsp;:完成start调用,音频录制开始,触发该事件。<br/>-&nbsp;'pause': 完成pause调用,音频暂停录制,触发该事件。<br/>-&nbsp;'resume': 完成resume调用,音频恢复录制,触发该事件。<br/>-&nbsp;'stop'&nbsp;:完成stop调用,音频停止录制,触发该事件。<br/>-&nbsp;'release'&nbsp;:完成release调用,音频释放录制资源,触发该事件。<br/>-&nbsp;'reset':完成reset调用,音频重置为初始状态,触发该事件。 |
7009e41f4b71Sopenharmony_ci| callback | ()=>void | 是   | 录制事件回调方法。                                           |
7010e41f4b71Sopenharmony_ci
7011e41f4b71Sopenharmony_ci**示例:**
7012e41f4b71Sopenharmony_ci
7013e41f4b71Sopenharmony_ci```ts
7014e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7015e41f4b71Sopenharmony_ci
7016e41f4b71Sopenharmony_cilet audioRecorder: media.AudioRecorder = media.createAudioRecorder();  // 创建一个音频录制实例
7017e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = {
7018e41f4b71Sopenharmony_ci  audioEncoder : media.AudioEncoder.AAC_LC,
7019e41f4b71Sopenharmony_ci  audioEncodeBitRate : 22050,
7020e41f4b71Sopenharmony_ci  audioSampleRate : 22050,
7021e41f4b71Sopenharmony_ci  numberOfChannels : 2,
7022e41f4b71Sopenharmony_ci  format : media.AudioOutputFormat.AAC_ADTS,
7023e41f4b71Sopenharmony_ci  uri : 'fd://xx',  // 文件需先由调用者创建,并给予适当的权限
7024e41f4b71Sopenharmony_ci  location : { latitude : 30, longitude : 130}
7025e41f4b71Sopenharmony_ci}
7026e41f4b71Sopenharmony_ciaudioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
7027e41f4b71Sopenharmony_ci  console.error(`audio error called, error: ${error}`);
7028e41f4b71Sopenharmony_ci});
7029e41f4b71Sopenharmony_ciaudioRecorder.on('prepare', () => {  // 设置'prepare'事件回调
7030e41f4b71Sopenharmony_ci  console.info('prepare called');
7031e41f4b71Sopenharmony_ci  audioRecorder.start();  // 开始录制,并触发'start'事件回调
7032e41f4b71Sopenharmony_ci});
7033e41f4b71Sopenharmony_ciaudioRecorder.on('start', () => {  // 设置'start'事件回调
7034e41f4b71Sopenharmony_ci  console.info('audio recorder start called');
7035e41f4b71Sopenharmony_ci});
7036e41f4b71Sopenharmony_ciaudioRecorder.on('pause', () => {  // 设置'pause'事件回调
7037e41f4b71Sopenharmony_ci  console.info('audio recorder pause called');
7038e41f4b71Sopenharmony_ci});
7039e41f4b71Sopenharmony_ciaudioRecorder.on('resume', () => {  // 设置'resume'事件回调
7040e41f4b71Sopenharmony_ci  console.info('audio recorder resume called');
7041e41f4b71Sopenharmony_ci});
7042e41f4b71Sopenharmony_ciaudioRecorder.on('stop', () => {  // 设置'stop'事件回调
7043e41f4b71Sopenharmony_ci  console.info('audio recorder stop called');
7044e41f4b71Sopenharmony_ci});
7045e41f4b71Sopenharmony_ciaudioRecorder.on('release', () => {  // 设置'release'事件回调
7046e41f4b71Sopenharmony_ci  console.info('audio recorder release called');
7047e41f4b71Sopenharmony_ci});
7048e41f4b71Sopenharmony_ciaudioRecorder.on('reset', () => {  // 设置'reset'事件回调
7049e41f4b71Sopenharmony_ci  console.info('audio recorder reset called');
7050e41f4b71Sopenharmony_ci});
7051e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig)  // 设置录制参数 ,并触发'prepare'事件回调
7052e41f4b71Sopenharmony_ci```
7053e41f4b71Sopenharmony_ci
7054e41f4b71Sopenharmony_ci### on('error')<sup>(deprecated)</sup>
7055e41f4b71Sopenharmony_ci
7056e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
7057e41f4b71Sopenharmony_ci
7058e41f4b71Sopenharmony_ci开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。
7059e41f4b71Sopenharmony_ci
7060e41f4b71Sopenharmony_ci> **说明:**
7061e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorder.on('error')](#onerror9-1)替代。
7062e41f4b71Sopenharmony_ci
7063e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7064e41f4b71Sopenharmony_ci
7065e41f4b71Sopenharmony_ci**参数:**
7066e41f4b71Sopenharmony_ci
7067e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                                         |
7068e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | ------------------------------------------------------------ |
7069e41f4b71Sopenharmony_ci| type     | string        | 是   | 录制错误事件回调类型'error'。<br/>-&nbsp;'error':音频录制过程中发生错误,触发该事件。 |
7070e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录制错误事件回调方法。                                       |
7071e41f4b71Sopenharmony_ci
7072e41f4b71Sopenharmony_ci**示例:**
7073e41f4b71Sopenharmony_ci
7074e41f4b71Sopenharmony_ci```ts
7075e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7076e41f4b71Sopenharmony_ci
7077e41f4b71Sopenharmony_cilet audioRecorderConfig: media.AudioRecorderConfig = {
7078e41f4b71Sopenharmony_ci  audioEncoder : media.AudioEncoder.AAC_LC,
7079e41f4b71Sopenharmony_ci  audioEncodeBitRate : 22050,
7080e41f4b71Sopenharmony_ci  audioSampleRate : 22050,
7081e41f4b71Sopenharmony_ci  numberOfChannels : 2,
7082e41f4b71Sopenharmony_ci  format : media.AudioOutputFormat.AAC_ADTS,
7083e41f4b71Sopenharmony_ci  uri : 'fd://xx',   // 文件需先由调用者创建,并给予适当的权限
7084e41f4b71Sopenharmony_ci  location : { latitude : 30, longitude : 130}
7085e41f4b71Sopenharmony_ci}
7086e41f4b71Sopenharmony_ciaudioRecorder.on('error', (error: BusinessError) => {  // 设置'error'事件回调
7087e41f4b71Sopenharmony_ci  console.error(`audio error called, error: ${error}`);
7088e41f4b71Sopenharmony_ci});
7089e41f4b71Sopenharmony_ciaudioRecorder.prepare(audioRecorderConfig);  // prepare不设置参数,触发'error'事件
7090e41f4b71Sopenharmony_ci```
7091e41f4b71Sopenharmony_ci
7092e41f4b71Sopenharmony_ci## AudioRecorderConfig<sup>(deprecated)</sup>
7093e41f4b71Sopenharmony_ci
7094e41f4b71Sopenharmony_ci> **说明:**
7095e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVRecorderConfig](#avrecorderconfig9)替代。
7096e41f4b71Sopenharmony_ci
7097e41f4b71Sopenharmony_ci表示音频的录音配置。
7098e41f4b71Sopenharmony_ci
7099e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7100e41f4b71Sopenharmony_ci
7101e41f4b71Sopenharmony_ci| 名称                                | 类型                                         | 必填 | 说明                                                         |
7102e41f4b71Sopenharmony_ci| ----------------------------------- | -------------------------------------------- | ---- | ------------------------------------------------------------ |
7103e41f4b71Sopenharmony_ci| audioEncoder                        | [AudioEncoder](#audioencoderdeprecated)                | 否   | 音频编码格式,默认设置为AAC_LC。<br/>**说明:** 从API version 8开始废弃,建议使用audioEncoderMime替代。 |
7104e41f4b71Sopenharmony_ci| audioEncodeBitRate                  | number                                       | 否   | 音频编码比特率,默认值为48000。                              |
7105e41f4b71Sopenharmony_ci| audioSampleRate                     | number                                       | 否   | 音频采集采样率,默认值为48000。<br>可变比特率模式,码率仅作参考。                              |
7106e41f4b71Sopenharmony_ci| numberOfChannels                    | number                                       | 否   | 音频采集声道数,默认值为2。                                  |
7107e41f4b71Sopenharmony_ci| format                              | [AudioOutputFormat](#audiooutputformatdeprecated)      | 否   | 音频输出封装格式,默认设置为MPEG_4。<br/>**说明:** 从API version 8开始废弃,建议使用fileFormat替代。 |
7108e41f4b71Sopenharmony_ci| location                            | [Location](#location)                        | 否   | 音频采集的地理位置。                                         |
7109e41f4b71Sopenharmony_ci| uri                                 | string                                       | 是   | 音频输出URI:fd://xx&nbsp;(fd&nbsp;number)<br/>![](figures/zh-cn_image_url.png) <br/>文件需要由调用者创建,并赋予适当的权限。 |
7110e41f4b71Sopenharmony_ci| audioEncoderMime<sup>8+</sup>       | [CodecMimeType](#codecmimetype8)             | 否   | 容器编码格式。                                               |
7111e41f4b71Sopenharmony_ci| fileFormat<sup>8+</sup>             | [ContainerFormatType](#containerformattype8) | 否   | 音频编码格式。                                               |
7112e41f4b71Sopenharmony_ci
7113e41f4b71Sopenharmony_ci## AudioEncoder<sup>(deprecated)</sup>
7114e41f4b71Sopenharmony_ci
7115e41f4b71Sopenharmony_ci> **说明:**
7116e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 8开始废弃,建议使用[CodecMimeType](#codecmimetype8)替代。
7117e41f4b71Sopenharmony_ci
7118e41f4b71Sopenharmony_ci表示音频编码格式的枚举。
7119e41f4b71Sopenharmony_ci
7120e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7121e41f4b71Sopenharmony_ci
7122e41f4b71Sopenharmony_ci| 名称    | 值   | 说明                                                         |
7123e41f4b71Sopenharmony_ci| ------- | ---- | ------------------------------------------------------------ |
7124e41f4b71Sopenharmony_ci| DEFAULT | 0    | 默认编码格式。<br/>仅做接口定义,暂不支持使用。              |
7125e41f4b71Sopenharmony_ci| AMR_NB  | 1    | AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
7126e41f4b71Sopenharmony_ci| AMR_WB  | 2    | AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 编码格式。<br/>仅做接口定义,暂不支持使用。 |
7127e41f4b71Sopenharmony_ci| AAC_LC  | 3    | AAC-LC(Advanced&nbsp;Audio&nbsp;Coding&nbsp;Low&nbsp;Complexity)编码格式。 |
7128e41f4b71Sopenharmony_ci| HE_AAC  | 4    | HE_AAC(High-Efficiency Advanced&nbsp;Audio&nbsp;Coding)编码格式。<br/>仅做接口定义,暂不支持使用。 |
7129e41f4b71Sopenharmony_ci
7130e41f4b71Sopenharmony_ci## AudioOutputFormat<sup>(deprecated)</sup>
7131e41f4b71Sopenharmony_ci
7132e41f4b71Sopenharmony_ci> **说明:**
7133e41f4b71Sopenharmony_ci> 从API version 6开始支持,从API version 8 开始废弃,建议使用[ContainerFormatType](#containerformattype8)替代。
7134e41f4b71Sopenharmony_ci
7135e41f4b71Sopenharmony_ci表示音频封装格式的枚举。
7136e41f4b71Sopenharmony_ci
7137e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AudioRecorder
7138e41f4b71Sopenharmony_ci
7139e41f4b71Sopenharmony_ci| 名称     | 值   | 说明                                                         |
7140e41f4b71Sopenharmony_ci| -------- | ---- | ------------------------------------------------------------ |
7141e41f4b71Sopenharmony_ci| DEFAULT  | 0    | 默认封装格式。<br/>仅做接口定义,暂不支持使用。              |
7142e41f4b71Sopenharmony_ci| MPEG_4   | 2    | 封装为MPEG-4格式。                                           |
7143e41f4b71Sopenharmony_ci| AMR_NB   | 3    | 封装为AMR_NB格式。<br/>仅做接口定义,暂不支持使用。          |
7144e41f4b71Sopenharmony_ci| AMR_WB   | 4    | 封装为AMR_WB格式。<br/>仅做接口定义,暂不支持使用。          |
7145e41f4b71Sopenharmony_ci| AAC_ADTS | 6    | 封装为ADTS(Audio&nbsp;Data&nbsp;Transport&nbsp;Stream)格式,是AAC音频的传输流格式。 |
7146e41f4b71Sopenharmony_ci
7147e41f4b71Sopenharmony_ci
7148e41f4b71Sopenharmony_ci## media.createAVImageGenerator<sup>12+</sup>
7149e41f4b71Sopenharmony_ci
7150e41f4b71Sopenharmony_cicreateAVImageGenerator(callback: AsyncCallback\<AVImageGenerator>): void
7151e41f4b71Sopenharmony_ci
7152e41f4b71Sopenharmony_ci创建AVImageGenerator实例,通过回调函数获取返回值。
7153e41f4b71Sopenharmony_ci
7154e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7155e41f4b71Sopenharmony_ci
7156e41f4b71Sopenharmony_ci**参数:**
7157e41f4b71Sopenharmony_ci
7158e41f4b71Sopenharmony_ci| 参数名   | 类型                                  | 必填 | 说明                                                         |
7159e41f4b71Sopenharmony_ci| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
7160e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[AVImageGenerator](#avimagegenerator12)> | 是   | 回调函数。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 |
7161e41f4b71Sopenharmony_ci
7162e41f4b71Sopenharmony_ci**错误码:**
7163e41f4b71Sopenharmony_ci
7164e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7165e41f4b71Sopenharmony_ci
7166e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                       |
7167e41f4b71Sopenharmony_ci| -------- | ------------------------------ |
7168e41f4b71Sopenharmony_ci| 5400101  | No memory. Returned by callback. |
7169e41f4b71Sopenharmony_ci
7170e41f4b71Sopenharmony_ci**示例:**
7171e41f4b71Sopenharmony_ci
7172e41f4b71Sopenharmony_ci```ts
7173e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7174e41f4b71Sopenharmony_ci
7175e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator;
7176e41f4b71Sopenharmony_cimedia.createAVImageGenerator((error: BusinessError, generator: media.AVImageGenerator) => {
7177e41f4b71Sopenharmony_ci  if (generator != null) {
7178e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7179e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVImageGenerator');
7180e41f4b71Sopenharmony_ci  } else {
7181e41f4b71Sopenharmony_ci    console.error(`Failed to creat AVImageGenerator, error message:${error.message}`);
7182e41f4b71Sopenharmony_ci  }
7183e41f4b71Sopenharmony_ci});
7184e41f4b71Sopenharmony_ci```
7185e41f4b71Sopenharmony_ci
7186e41f4b71Sopenharmony_ci## media.createAVImageGenerator<sup>12+</sup>
7187e41f4b71Sopenharmony_ci
7188e41f4b71Sopenharmony_cicreateAVImageGenerator(): Promise\<AVImageGenerator>
7189e41f4b71Sopenharmony_ci
7190e41f4b71Sopenharmony_ci创建AVImageGenerator对象,通过Promise获取返回值。
7191e41f4b71Sopenharmony_ci
7192e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7193e41f4b71Sopenharmony_ci
7194e41f4b71Sopenharmony_ci**返回值:**
7195e41f4b71Sopenharmony_ci
7196e41f4b71Sopenharmony_ci| 类型                            | 说明                                                         |
7197e41f4b71Sopenharmony_ci| ------------------------------- | ------------------------------------------------------------ |
7198e41f4b71Sopenharmony_ci| Promise\<[AVImageGenerator](#avimagegenerator12)> | Promise对象。异步返回AVImageGenerator实例,失败时返回null。可用于获取视频缩略图。 |
7199e41f4b71Sopenharmony_ci
7200e41f4b71Sopenharmony_ci**错误码:**
7201e41f4b71Sopenharmony_ci
7202e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7203e41f4b71Sopenharmony_ci
7204e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                      |
7205e41f4b71Sopenharmony_ci| -------- | ----------------------------- |
7206e41f4b71Sopenharmony_ci| 5400101  | No memory. Returned by promise. |
7207e41f4b71Sopenharmony_ci
7208e41f4b71Sopenharmony_ci**示例:**
7209e41f4b71Sopenharmony_ci
7210e41f4b71Sopenharmony_ci```ts
7211e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7212e41f4b71Sopenharmony_ci
7213e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator;
7214e41f4b71Sopenharmony_cimedia.createAVImageGenerator().then((generator: media.AVImageGenerator) => {
7215e41f4b71Sopenharmony_ci  if (generator != null) {
7216e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7217e41f4b71Sopenharmony_ci    console.info('Succeeded in creating AVImageGenerator');
7218e41f4b71Sopenharmony_ci  } else {
7219e41f4b71Sopenharmony_ci    console.error('Failed to creat AVImageGenerator');
7220e41f4b71Sopenharmony_ci  }
7221e41f4b71Sopenharmony_ci}).catch((error: BusinessError) => {
7222e41f4b71Sopenharmony_ci  console.error(`Failed to creat AVImageGenerator, error message:${error.message}`);
7223e41f4b71Sopenharmony_ci});
7224e41f4b71Sopenharmony_ci```
7225e41f4b71Sopenharmony_ci
7226e41f4b71Sopenharmony_ci## AVImageGenerator<sup>12+</sup>
7227e41f4b71Sopenharmony_ci
7228e41f4b71Sopenharmony_ci视频缩略图获取类,用于从视频资源中获取缩略图。在调用AVImageGenerator的方法前,需要先通过[createAVImageGenerator()](#mediacreateavimagegenerator12)构建一个AVImageGenerator实例。
7229e41f4b71Sopenharmony_ci
7230e41f4b71Sopenharmony_ci获取视频缩略图的demo可参考:[获取视频缩略图开发指导](../../media/media/avimagegenerator.md)。
7231e41f4b71Sopenharmony_ci
7232e41f4b71Sopenharmony_ci### 属性
7233e41f4b71Sopenharmony_ci
7234e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7235e41f4b71Sopenharmony_ci
7236e41f4b71Sopenharmony_ci| 名称                                                | 类型                                                         | 可读 | 可写 | 说明                                                         |
7237e41f4b71Sopenharmony_ci| --------------------------------------------------- | ------------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
7238e41f4b71Sopenharmony_ci| fdSrc<sup>12+</sup>                                  | [AVFileDescriptor](js-apis-media.md#avfiledescriptor9)                       | 是   | 是   | 媒体文件描述,通过该属性设置数据源。<br/> **使用示例**:<br/>假设一个连续存储的媒体文件,地址偏移:0,字节长度:100。其文件描述为 AVFileDescriptor { fd = 资源句柄; offset = 0; length = 100; }。<br>**说明:** <br> - 将资源句柄(fd)传递给 AVImageGenerator 实例之后,请不要通过该资源句柄做其他读写操作,包括但不限于将同一个资源句柄传递给多个 AVPlayer / AVMetadataExtractor / AVImageGenerator / AVTranscoder。同一时间通过同一个资源句柄读写文件时存在竞争关系,将导致视频缩略图数据获取异常。 |
7239e41f4b71Sopenharmony_ci
7240e41f4b71Sopenharmony_ci### fetchFrameByTime<sup>12+</sup>
7241e41f4b71Sopenharmony_ci
7242e41f4b71Sopenharmony_cifetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams, callback: AsyncCallback\<image.PixelMap>): void
7243e41f4b71Sopenharmony_ci
7244e41f4b71Sopenharmony_ci异步方式获取视频缩略图。通过注册回调函数获取返回值。
7245e41f4b71Sopenharmony_ci
7246e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7247e41f4b71Sopenharmony_ci
7248e41f4b71Sopenharmony_ci**参数:**
7249e41f4b71Sopenharmony_ci
7250e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
7251e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7252e41f4b71Sopenharmony_ci| timeUs | number                   | 是   | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 |
7253e41f4b71Sopenharmony_ci| options | [AVImageQueryOptions](#avimagequeryoptions12)     | 是   | 需要获取的缩略图时间点与视频帧的对应关系。 |
7254e41f4b71Sopenharmony_ci| param | [PixelMapParams](#pixelmapparams12)     | 是   | 需要获取的缩略图的格式参数。 |
7255e41f4b71Sopenharmony_ci| callback | AsyncCallback\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)>   | 是   | 回调函数。获取缩略图成功时,err为undefined,data为PixelMap实例,否则为错误对象。 |
7256e41f4b71Sopenharmony_ci
7257e41f4b71Sopenharmony_ci**错误码:**
7258e41f4b71Sopenharmony_ci
7259e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7260e41f4b71Sopenharmony_ci
7261e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
7262e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
7263e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by callback. |
7264e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by callback.  |
7265e41f4b71Sopenharmony_ci
7266e41f4b71Sopenharmony_ci**示例:**
7267e41f4b71Sopenharmony_ci
7268e41f4b71Sopenharmony_ci```ts
7269e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7270e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7271e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit';
7272e41f4b71Sopenharmony_ci
7273e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined;
7274e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined;
7275e41f4b71Sopenharmony_ci
7276e41f4b71Sopenharmony_ci// 初始化入参
7277e41f4b71Sopenharmony_cilet timeUs: number = 0
7278e41f4b71Sopenharmony_ci
7279e41f4b71Sopenharmony_cilet queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
7280e41f4b71Sopenharmony_ci
7281e41f4b71Sopenharmony_cilet param: media.PixelMapParams = {
7282e41f4b71Sopenharmony_ci  width : 300,
7283e41f4b71Sopenharmony_ci  height : 300,
7284e41f4b71Sopenharmony_ci}
7285e41f4b71Sopenharmony_ci
7286e41f4b71Sopenharmony_ci// 获取缩略图
7287e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7288e41f4b71Sopenharmony_ci  if(generator != null){
7289e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7290e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVImageGenerator`);
7291e41f4b71Sopenharmony_ci    avImageGenerator.fetchFrameByTime(timeUs, queryOption, param, (error: BusinessError, pixelMap) => {
7292e41f4b71Sopenharmony_ci      if (error) {
7293e41f4b71Sopenharmony_ci        console.error(`Failed to fetch FrameByTime, err = ${JSON.stringify(error)}`)
7294e41f4b71Sopenharmony_ci        return
7295e41f4b71Sopenharmony_ci      }
7296e41f4b71Sopenharmony_ci      pixel_map = pixelMap;
7297e41f4b71Sopenharmony_ci    });
7298e41f4b71Sopenharmony_ci  } else {
7299e41f4b71Sopenharmony_ci    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7300e41f4b71Sopenharmony_ci  };
7301e41f4b71Sopenharmony_ci});
7302e41f4b71Sopenharmony_ci```
7303e41f4b71Sopenharmony_ci
7304e41f4b71Sopenharmony_ci### fetchFrameByTime<sup>12+</sup>
7305e41f4b71Sopenharmony_ci
7306e41f4b71Sopenharmony_cifetchFrameByTime(timeUs: number, options: AVImageQueryOptions, param: PixelMapParams): Promise<image.PixelMap>
7307e41f4b71Sopenharmony_ci
7308e41f4b71Sopenharmony_ci异步方式获取视频缩略图。通过Promise获取返回值。
7309e41f4b71Sopenharmony_ci
7310e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7311e41f4b71Sopenharmony_ci
7312e41f4b71Sopenharmony_ci**参数:**
7313e41f4b71Sopenharmony_ci
7314e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
7315e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7316e41f4b71Sopenharmony_ci| timeUs | number                   | 是   | 需要获取的缩略图在视频中的时间点,单位为微秒(μs)。 |
7317e41f4b71Sopenharmony_ci| options | [AVImageQueryOptions](#avimagequeryoptions12)     | 是   | 需要获取的缩略图时间点与视频帧的对应关系。 |
7318e41f4b71Sopenharmony_ci| param | [PixelMapParams](#pixelmapparams12)    | 是   | 需要获取的缩略图的格式参数。 |
7319e41f4b71Sopenharmony_ci
7320e41f4b71Sopenharmony_ci**返回值:**
7321e41f4b71Sopenharmony_ci
7322e41f4b71Sopenharmony_ci| 类型           | 说明                                     |
7323e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- |
7324e41f4b71Sopenharmony_ci| Promise\<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回视频缩略图对象。 |
7325e41f4b71Sopenharmony_ci
7326e41f4b71Sopenharmony_ci**错误码:**
7327e41f4b71Sopenharmony_ci
7328e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7329e41f4b71Sopenharmony_ci
7330e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
7331e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
7332e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by promise. |
7333e41f4b71Sopenharmony_ci| 5400106  | Unsupported format. Returned by promise.  |
7334e41f4b71Sopenharmony_ci
7335e41f4b71Sopenharmony_ci**示例:**
7336e41f4b71Sopenharmony_ci
7337e41f4b71Sopenharmony_ci```ts
7338e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7339e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7340e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit';
7341e41f4b71Sopenharmony_ci
7342e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined;
7343e41f4b71Sopenharmony_cilet pixel_map : image.PixelMap | undefined = undefined;
7344e41f4b71Sopenharmony_ci
7345e41f4b71Sopenharmony_ci// 初始化入参
7346e41f4b71Sopenharmony_cilet timeUs: number = 0
7347e41f4b71Sopenharmony_ci
7348e41f4b71Sopenharmony_cilet queryOption: media.AVImageQueryOptions = media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC
7349e41f4b71Sopenharmony_ci
7350e41f4b71Sopenharmony_cilet param: media.PixelMapParams = {
7351e41f4b71Sopenharmony_ci  width : 300,
7352e41f4b71Sopenharmony_ci  height : 300,
7353e41f4b71Sopenharmony_ci}
7354e41f4b71Sopenharmony_ci
7355e41f4b71Sopenharmony_ci// 获取缩略图
7356e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7357e41f4b71Sopenharmony_ci  if(generator != null){
7358e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7359e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVImageGenerator`);
7360e41f4b71Sopenharmony_ci    avImageGenerator.fetchFrameByTime(timeUs, queryOption, param).then((pixelMap: image.PixelMap) => {
7361e41f4b71Sopenharmony_ci      pixel_map = pixelMap;
7362e41f4b71Sopenharmony_ci    }).catch((error: BusinessError) => {
7363e41f4b71Sopenharmony_ci      console.error(`Failed to fetch FrameByTime, error message:${error.message}`);
7364e41f4b71Sopenharmony_ci    });
7365e41f4b71Sopenharmony_ci  } else {
7366e41f4b71Sopenharmony_ci    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7367e41f4b71Sopenharmony_ci  };
7368e41f4b71Sopenharmony_ci});
7369e41f4b71Sopenharmony_ci```
7370e41f4b71Sopenharmony_ci
7371e41f4b71Sopenharmony_ci### release<sup>12+</sup>
7372e41f4b71Sopenharmony_ci
7373e41f4b71Sopenharmony_cirelease(callback: AsyncCallback\<void>): void
7374e41f4b71Sopenharmony_ci
7375e41f4b71Sopenharmony_ci异步方式释放资源。通过注册回调函数获取返回值。
7376e41f4b71Sopenharmony_ci
7377e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7378e41f4b71Sopenharmony_ci
7379e41f4b71Sopenharmony_ci**参数:**
7380e41f4b71Sopenharmony_ci
7381e41f4b71Sopenharmony_ci| 参数名   | 类型                                         | 必填 | 说明                                |
7382e41f4b71Sopenharmony_ci| -------- | -------------------------------------------- | ---- | ----------------------------------- |
7383e41f4b71Sopenharmony_ci| callback | AsyncCallback\<void>                   | 是   | 回调函数。当释放资源成功,err为undefined,否则为错误对象。 |
7384e41f4b71Sopenharmony_ci
7385e41f4b71Sopenharmony_ci**错误码:**
7386e41f4b71Sopenharmony_ci
7387e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7388e41f4b71Sopenharmony_ci
7389e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                   |
7390e41f4b71Sopenharmony_ci| -------- | ------------------------------------------ |
7391e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by callback. |
7392e41f4b71Sopenharmony_ci
7393e41f4b71Sopenharmony_ci**示例:**
7394e41f4b71Sopenharmony_ci
7395e41f4b71Sopenharmony_ci```ts
7396e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7397e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7398e41f4b71Sopenharmony_ci
7399e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined;
7400e41f4b71Sopenharmony_ci
7401e41f4b71Sopenharmony_ci//释放资源
7402e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7403e41f4b71Sopenharmony_ci  if(generator != null){
7404e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7405e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVImageGenerator`);
7406e41f4b71Sopenharmony_ci    avImageGenerator.release((error: BusinessError) => {
7407e41f4b71Sopenharmony_ci      if (error) {
7408e41f4b71Sopenharmony_ci        console.error(`Failed to release, err = ${JSON.stringify(error)}`);
7409e41f4b71Sopenharmony_ci        return;
7410e41f4b71Sopenharmony_ci      }
7411e41f4b71Sopenharmony_ci      console.info(`Succeeded in releasing`);
7412e41f4b71Sopenharmony_ci    });
7413e41f4b71Sopenharmony_ci  } else {
7414e41f4b71Sopenharmony_ci    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7415e41f4b71Sopenharmony_ci  };
7416e41f4b71Sopenharmony_ci});
7417e41f4b71Sopenharmony_ci```
7418e41f4b71Sopenharmony_ci
7419e41f4b71Sopenharmony_ci### release<sup>12+</sup>
7420e41f4b71Sopenharmony_ci
7421e41f4b71Sopenharmony_cirelease(): Promise\<void>
7422e41f4b71Sopenharmony_ci
7423e41f4b71Sopenharmony_ci异步方式释放资源。通过Promise获取返回值。
7424e41f4b71Sopenharmony_ci
7425e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7426e41f4b71Sopenharmony_ci
7427e41f4b71Sopenharmony_ci**返回值:**
7428e41f4b71Sopenharmony_ci
7429e41f4b71Sopenharmony_ci| 类型           | 说明                                     |
7430e41f4b71Sopenharmony_ci| -------------- | ---------------------------------------- |
7431e41f4b71Sopenharmony_ci| Promise\<void> | 异步方式释放资源release方法的Promise返回值。 |
7432e41f4b71Sopenharmony_ci
7433e41f4b71Sopenharmony_ci**错误码:**
7434e41f4b71Sopenharmony_ci
7435e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7436e41f4b71Sopenharmony_ci
7437e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
7438e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
7439e41f4b71Sopenharmony_ci| 5400102  | Operation not allowed. Returned by promise. |
7440e41f4b71Sopenharmony_ci
7441e41f4b71Sopenharmony_ci**示例:**
7442e41f4b71Sopenharmony_ci
7443e41f4b71Sopenharmony_ci```ts
7444e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7445e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7446e41f4b71Sopenharmony_ci
7447e41f4b71Sopenharmony_cilet avImageGenerator: media.AVImageGenerator | undefined = undefined;
7448e41f4b71Sopenharmony_ci
7449e41f4b71Sopenharmony_ci//释放资源
7450e41f4b71Sopenharmony_cimedia.createAVImageGenerator((err: BusinessError, generator: media.AVImageGenerator) => {
7451e41f4b71Sopenharmony_ci  if(generator != null){
7452e41f4b71Sopenharmony_ci    avImageGenerator = generator;
7453e41f4b71Sopenharmony_ci    console.info(`Succeeded in creating AVImageGenerator`);
7454e41f4b71Sopenharmony_ci    avImageGenerator.release().then(() => {
7455e41f4b71Sopenharmony_ci      console.info(`Succeeded in releasing.`);
7456e41f4b71Sopenharmony_ci    }).catch((error: BusinessError) => {
7457e41f4b71Sopenharmony_ci      console.error(`Failed to release, error message:${error.message}`);
7458e41f4b71Sopenharmony_ci    });
7459e41f4b71Sopenharmony_ci  } else {
7460e41f4b71Sopenharmony_ci    console.error(`Failed to creat AVImageGenerator, error message:${err.message}`);
7461e41f4b71Sopenharmony_ci  };
7462e41f4b71Sopenharmony_ci});
7463e41f4b71Sopenharmony_ci```
7464e41f4b71Sopenharmony_ci
7465e41f4b71Sopenharmony_ci## AVImageQueryOptions<sup>12+</sup>
7466e41f4b71Sopenharmony_ci
7467e41f4b71Sopenharmony_ci需要获取的缩略图时间点与视频帧的对应关系。
7468e41f4b71Sopenharmony_ci
7469e41f4b71Sopenharmony_ci在获取视频缩略图时,传入的时间点与实际取得的视频帧所在时间点不一定相等,需要指定传入的时间点与实际取得的视频帧的时间关系。
7470e41f4b71Sopenharmony_ci
7471e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7472e41f4b71Sopenharmony_ci
7473e41f4b71Sopenharmony_ci| 名称                     | 值              | 说明                                                         |
7474e41f4b71Sopenharmony_ci| ------------------------ | --------------- | ------------------------------------------------------------ |
7475e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_NEXT_SYNC       | 0   | 表示选取传入时间点或之后的关键帧。                       |
7476e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_PREVIOUS_SYNC        | 1    | 表示选取传入时间点或之前的关键帧。 |
7477e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_CLOSEST_SYNC        | 2    | 表示选取离传入时间点最近的关键帧。                 |
7478e41f4b71Sopenharmony_ci| AV_IMAGE_QUERY_CLOSEST             | 3    | 表示选取离传入时间点最近的帧,该帧不一定是关键帧。 |
7479e41f4b71Sopenharmony_ci
7480e41f4b71Sopenharmony_ci## PixelMapParams<sup>12+</sup>
7481e41f4b71Sopenharmony_ci
7482e41f4b71Sopenharmony_ci获取视频缩略图时,输出缩略图的格式参数。
7483e41f4b71Sopenharmony_ci
7484e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVImageGenerator
7485e41f4b71Sopenharmony_ci
7486e41f4b71Sopenharmony_ci| 名称   | 类型   | 可读 | 可写 | 说明                                                                            |
7487e41f4b71Sopenharmony_ci|--------|--------|------|------|---------------------------------------------------------------------------------|
7488e41f4b71Sopenharmony_ci| width  | number | 是   | 是   | 输出的缩略图宽度。应保证大于0且不大于原始视频宽度。否则返回的缩略图不会进行缩放。 |
7489e41f4b71Sopenharmony_ci| height | number | 是   | 是   | 输出的缩略图高度。应保证大于0且不大于原始视频高度。否则返回的缩略图不会进行缩放。 |
7490e41f4b71Sopenharmony_ci
7491e41f4b71Sopenharmony_ci## media.createMediaSourceWithUrl<sup>12+</sup>
7492e41f4b71Sopenharmony_ci
7493e41f4b71Sopenharmony_cicreateMediaSourceWithUrl(url: string, headers?: Record\<string, string>): MediaSource
7494e41f4b71Sopenharmony_ci
7495e41f4b71Sopenharmony_ci创建流媒体预下载媒体来源实例方法。
7496e41f4b71Sopenharmony_ci
7497e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
7498e41f4b71Sopenharmony_ci
7499e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
7500e41f4b71Sopenharmony_ci
7501e41f4b71Sopenharmony_ci**参数:**
7502e41f4b71Sopenharmony_ci
7503e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
7504e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
7505e41f4b71Sopenharmony_ci| url | string | 是   | - 流媒体预下载媒体来源url,支持的流媒体格式:HLS、HTTP-FLV、Dash、Https。<br> - 本地m3u8的fd路径。  |
7506e41f4b71Sopenharmony_ci| headers | Record\<string, string> | 否   | 支持流媒体预下载HttpHeader自定义。 |
7507e41f4b71Sopenharmony_ci
7508e41f4b71Sopenharmony_ci**返回值:**
7509e41f4b71Sopenharmony_ci
7510e41f4b71Sopenharmony_ci| 类型           | 说明                                       |
7511e41f4b71Sopenharmony_ci| -------------- | ------------------------------------------ |
7512e41f4b71Sopenharmony_ci| [MediaSource](#mediasource12) | MediaSource返回值。 |
7513e41f4b71Sopenharmony_ci
7514e41f4b71Sopenharmony_ci**错误码:**
7515e41f4b71Sopenharmony_ci
7516e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[媒体错误码](errorcode-media.md)
7517e41f4b71Sopenharmony_ci
7518e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                  |
7519e41f4b71Sopenharmony_ci| -------- | ----------------------------------------- |
7520e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. 3.Parameter verification failed.      |
7521e41f4b71Sopenharmony_ci| 5400101  | No memory.  |
7522e41f4b71Sopenharmony_ci
7523e41f4b71Sopenharmony_ci**示例1:**
7524e41f4b71Sopenharmony_ci
7525e41f4b71Sopenharmony_ci```ts
7526e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7527e41f4b71Sopenharmony_ci
7528e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
7529e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);
7530e41f4b71Sopenharmony_ci```
7531e41f4b71Sopenharmony_ci
7532e41f4b71Sopenharmony_ci**示例2:**
7533e41f4b71Sopenharmony_ci
7534e41f4b71Sopenharmony_ci```ts
7535e41f4b71Sopenharmony_ciimport { media } from '@kit.MediaKit';
7536e41f4b71Sopenharmony_ciimport { common } from '@kit.AbilityKit';
7537e41f4b71Sopenharmony_ciimport { resourceManager } from '@kit.LocalizationKit';
7538e41f4b71Sopenharmony_ci
7539e41f4b71Sopenharmony_cilet context = getContext(this) as common.UIAbilityContext;
7540e41f4b71Sopenharmony_cilet mgr = context.resourceManager;
7541e41f4b71Sopenharmony_cilet fileDescriptor = await mgr.getRawFd("xxx.m3u8");
7542e41f4b71Sopenharmony_ci
7543e41f4b71Sopenharmony_cilet fd:string = fileDescriptor.fd.toString();
7544e41f4b71Sopenharmony_cilet offset:string = fileDescriptor.offset.toString();
7545e41f4b71Sopenharmony_cilet length:string = fileDescriptor.length.toString();
7546e41f4b71Sopenharmony_cilet fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length;
7547e41f4b71Sopenharmony_ci
7548e41f4b71Sopenharmony_cilet headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
7549e41f4b71Sopenharmony_cilet mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl,  headers);
7550e41f4b71Sopenharmony_ci
7551e41f4b71Sopenharmony_cilet mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8;
7552e41f4b71Sopenharmony_cimediaSource.setMimeType(mimeType);
7553e41f4b71Sopenharmony_ci
7554e41f4b71Sopenharmony_ci```
7555e41f4b71Sopenharmony_ci
7556e41f4b71Sopenharmony_ci## MediaSource<sup>12+</sup>
7557e41f4b71Sopenharmony_ci
7558e41f4b71Sopenharmony_ci媒体数据信息。来源自[createMediaSourceWithUrl](#mediacreatemediasourcewithurl12)。
7559e41f4b71Sopenharmony_ci
7560e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
7561e41f4b71Sopenharmony_ci
7562e41f4b71Sopenharmony_ci### setMimeType<sup>12+</sup>
7563e41f4b71Sopenharmony_ci
7564e41f4b71Sopenharmony_cisetMimeType(mimeType: AVMimeTypes): void
7565e41f4b71Sopenharmony_ci
7566e41f4b71Sopenharmony_ci设置媒体MIME类型,以帮助播放器处理扩展的媒体源。
7567e41f4b71Sopenharmony_ci
7568e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
7569e41f4b71Sopenharmony_ci
7570e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
7571e41f4b71Sopenharmony_ci
7572e41f4b71Sopenharmony_ci**参数:**
7573e41f4b71Sopenharmony_ci
7574e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                 |
7575e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
7576e41f4b71Sopenharmony_ci| mimeType | [AVMimeTypes](#mediasource12) | 是   | 媒体MIME类型。 |
7577e41f4b71Sopenharmony_ci
7578e41f4b71Sopenharmony_ci## AVMimeTypes<sup>12+</sup>
7579e41f4b71Sopenharmony_ci
7580e41f4b71Sopenharmony_ci媒体MIME类型,通过[setMimeType](#setmimetype12)设置。
7581e41f4b71Sopenharmony_ci
7582e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
7583e41f4b71Sopenharmony_ci
7584e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
7585e41f4b71Sopenharmony_ci
7586e41f4b71Sopenharmony_ci
7587e41f4b71Sopenharmony_ci| 名称       | 值   | 说明                                                         |
7588e41f4b71Sopenharmony_ci| ---------- | ---- | ------------------------------------------------------------ |
7589e41f4b71Sopenharmony_ci| APPLICATION_M3U8       | application/m3u8    | 表示m3u8本地文件。 |
7590e41f4b71Sopenharmony_ci
7591e41f4b71Sopenharmony_ci
7592e41f4b71Sopenharmony_ci## PlaybackStrategy<sup>12+</sup>
7593e41f4b71Sopenharmony_ci
7594e41f4b71Sopenharmony_ci播放策略。
7595e41f4b71Sopenharmony_ci
7596e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Core
7597e41f4b71Sopenharmony_ci
7598e41f4b71Sopenharmony_ci| 名称  | 类型     | 必填 | 说明                 |
7599e41f4b71Sopenharmony_ci| -------- | -------- | ---- | -------------------- |
7600e41f4b71Sopenharmony_ci| preferredWidth| number | 否   | 播放策略首选宽度,int类型,如1080。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7601e41f4b71Sopenharmony_ci| preferredHeight | number | 否   | 播放策略首选高度,int类型,如1920。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7602e41f4b71Sopenharmony_ci| preferredBufferDuration | number | 否  | 播放策略首选缓冲持续时间,单位s,取值范围1-20。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7603e41f4b71Sopenharmony_ci| preferredHdr | boolean | 否   | 播放策略true是hdr,false非hdr,默认非hdr。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
7604e41f4b71Sopenharmony_ci| mutedMediaType | [MediaType](#mediatype8) | 否 | 静音播放的媒体类型,仅支持设置 MediaType.MEDIA_TYPE_AUD。 |
7605e41f4b71Sopenharmony_ci| preferredAudioLanguage<sup>13+</sup> | string | 否 | 播放策略首选音轨语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 |
7606e41f4b71Sopenharmony_ci| preferredSubtitleLanguage<sup>13+</sup> | string | 否 | 播放策略首选字幕语言。dash场景下应用可按需设置。非dash场景不涉及,建议缺省。 |
7607e41f4b71Sopenharmony_ci
7608e41f4b71Sopenharmony_ci## AVScreenCaptureRecordPreset<sup>12+</sup>
7609e41f4b71Sopenharmony_ci
7610e41f4b71Sopenharmony_ci进行屏幕录制时的编码、封装格式参数的枚举。
7611e41f4b71Sopenharmony_ci
7612e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7613e41f4b71Sopenharmony_ci
7614e41f4b71Sopenharmony_ci| 名称                              | 值   | 说明                                         |
7615e41f4b71Sopenharmony_ci| --------------------------------- | ---- | -------------------------------------------- |
7616e41f4b71Sopenharmony_ci| SCREEN_RECORD_PRESET_H264_AAC_MP4 | 0    | 使用视频H264编码,音频AAC编码,MP4封装格式。 |
7617e41f4b71Sopenharmony_ci| SCREEN_RECORD_PRESET_H265_AAC_MP4 | 1    | 使用视频H265编码,音频AAC编码,MP4封装格式。 |
7618e41f4b71Sopenharmony_ci
7619e41f4b71Sopenharmony_ci## AVScreenCaptureStateCode<sup>12+</sup>
7620e41f4b71Sopenharmony_ci
7621e41f4b71Sopenharmony_ci屏幕录制的状态回调。
7622e41f4b71Sopenharmony_ci
7623e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7624e41f4b71Sopenharmony_ci
7625e41f4b71Sopenharmony_ci| 名称                                     | 值   | 说明                     |
7626e41f4b71Sopenharmony_ci| ---------------------------------------- | ---- | ------------------------ |
7627e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STARTED              | 0    | 录屏已开始。             |
7628e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_CANCELED             | 1    | 录屏被取消。             |
7629e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_USER      | 2    | 录屏被用户手动停止。     |
7630e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_INTERRUPTED_BY_OTHER | 3    | 录屏被其他录屏打断。     |
7631e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_CALL      | 4    | 录屏被来电打断。         |
7632e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_UNAVAILABLE      | 5    | 录屏无法使用麦克风收音。 |
7633e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_MUTED_BY_USER    | 6    | 麦克风被用户关闭。       |
7634e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_MIC_UNMUTED_BY_USER  | 7    | 麦克风被用户打开。       |
7635e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_ENTER_PRIVATE_SCENE  | 8    | 录屏进入隐私页面。       |
7636e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_EXIT_PRIVATE_SCENE   | 9    | 录屏退出隐私页面。       |
7637e41f4b71Sopenharmony_ci| SCREENCAPTURE_STATE_STOPPED_BY_USER_SWITCHES   | 10    | 系统用户切换,录屏中断。       |
7638e41f4b71Sopenharmony_ci
7639e41f4b71Sopenharmony_ci## AVScreenCaptureRecordConfig<sup>12+</sup>
7640e41f4b71Sopenharmony_ci
7641e41f4b71Sopenharmony_ci表示录屏参数配置。
7642e41f4b71Sopenharmony_ci
7643e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7644e41f4b71Sopenharmony_ci
7645e41f4b71Sopenharmony_ci| 名称              | 类型                                                         | 必填 | 说明                                                         |
7646e41f4b71Sopenharmony_ci| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
7647e41f4b71Sopenharmony_ci| fd                | number                                                       | 是   | 录制输出的文件fd。                                           |
7648e41f4b71Sopenharmony_ci| frameWidth        | number                                                       | 否   | 录屏的视频宽度,默认屏幕宽度,根据不同屏幕默认值不同,单位px。 |
7649e41f4b71Sopenharmony_ci| frameHeight       | number                                                       | 否   | 录屏的视频高度,默认屏幕高度,根据不同屏幕默认值不同,单位px。 |
7650e41f4b71Sopenharmony_ci| videoBitrate      | number                                                       | 否   | 录屏的视频比特率,默认10000000。                             |
7651e41f4b71Sopenharmony_ci| audioSampleRate   | number                                                       | 否   | 录屏的音频采样率,内录的系统音和外录的麦克风都是用此采样率,默认48000,仅支持设置48000或16000。 |
7652e41f4b71Sopenharmony_ci| audioChannelCount | number                                                       | 否   | 录屏的音频通道数,内录的系统音和外录的麦克风都是用此通道数,默认2声道,仅支持设置1或2声道。 |
7653e41f4b71Sopenharmony_ci| audioBitrate      | number                                                       | 否   | 录屏的音频比特率,内录的系统音和外录的麦克风都是用此比特率,默认96000。 |
7654e41f4b71Sopenharmony_ci| preset            | [AVScreenCaptureRecordPreset](#avscreencapturerecordpreset12) | 否   | 录屏使用的编码和封装格式,默认SCREEN_RECORD_PRESET_H264_AAC_MP4格式。 |
7655e41f4b71Sopenharmony_ci
7656e41f4b71Sopenharmony_ci## AVScreenCaptureRecorder<sup>12+</sup>
7657e41f4b71Sopenharmony_ci
7658e41f4b71Sopenharmony_ci屏幕录制管理类,用于进行屏幕录制。在调用AVScreenCaptureRecorder的方法前,需要先通过[createAVScreenCaptureRecorder()](#mediacreateavscreencapturerecorder12)创建一个AVScreenCaptureRecorder实例。
7659e41f4b71Sopenharmony_ci
7660e41f4b71Sopenharmony_ci### init<sup>12+</sup>
7661e41f4b71Sopenharmony_ci
7662e41f4b71Sopenharmony_ciinit(config: AVScreenCaptureRecordConfig): Promise\<void>
7663e41f4b71Sopenharmony_ci
7664e41f4b71Sopenharmony_ci异步方式进行录屏初始化,设置录屏参数。通过Promise获取返回值。
7665e41f4b71Sopenharmony_ci
7666e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7667e41f4b71Sopenharmony_ci
7668e41f4b71Sopenharmony_ci**参数:**
7669e41f4b71Sopenharmony_ci
7670e41f4b71Sopenharmony_ci| 参数名 | 类型                                                         | 必填 | 说明                     |
7671e41f4b71Sopenharmony_ci| ------ | ------------------------------------------------------------ | ---- | ------------------------ |
7672e41f4b71Sopenharmony_ci| config | [AVScreenCaptureRecordConfig](#avscreencapturerecordconfig12) | 是   | 配置屏幕录制的相关参数。 |
7673e41f4b71Sopenharmony_ci
7674e41f4b71Sopenharmony_ci**返回值:**
7675e41f4b71Sopenharmony_ci
7676e41f4b71Sopenharmony_ci| 类型           | 说明                                |
7677e41f4b71Sopenharmony_ci| -------------- | ----------------------------------- |
7678e41f4b71Sopenharmony_ci| Promise\<void> | 异步录屏初始化方法的Promise返回值。 |
7679e41f4b71Sopenharmony_ci
7680e41f4b71Sopenharmony_ci**错误码:**
7681e41f4b71Sopenharmony_ci
7682e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                                       |
7683e41f4b71Sopenharmony_ci| -------- | ---------------------------------------------- |
7684e41f4b71Sopenharmony_ci| 401      | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. Return by promise. |
7685e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.                   |
7686e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise.               |
7687e41f4b71Sopenharmony_ci
7688e41f4b71Sopenharmony_ci**示例:**
7689e41f4b71Sopenharmony_ci
7690e41f4b71Sopenharmony_ci```ts
7691e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7692e41f4b71Sopenharmony_ci
7693e41f4b71Sopenharmony_cilet avCaptureConfig: media.AVScreenCaptureRecordConfig = {
7694e41f4b71Sopenharmony_ci    fd: 0, // 文件需要先有调用者创建,赋予写权限,将文件fd传给此参数
7695e41f4b71Sopenharmony_ci    frameWidth: 640,
7696e41f4b71Sopenharmony_ci    frameHeight: 480
7697e41f4b71Sopenharmony_ci    // 补充其他参数
7698e41f4b71Sopenharmony_ci}
7699e41f4b71Sopenharmony_ci
7700e41f4b71Sopenharmony_ciavScreenCaptureRecorder.init(avCaptureConfig).then(() => {
7701e41f4b71Sopenharmony_ci    console.info('Succeeded in initing avScreenCaptureRecorder');
7702e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7703e41f4b71Sopenharmony_ci    console.info('Failed to init avScreenCaptureRecorder, error: ' + err.message);
7704e41f4b71Sopenharmony_ci})
7705e41f4b71Sopenharmony_ci```
7706e41f4b71Sopenharmony_ci
7707e41f4b71Sopenharmony_ci### startRecording<sup>12+</sup>
7708e41f4b71Sopenharmony_ci
7709e41f4b71Sopenharmony_cistartRecording(): Promise\<void>
7710e41f4b71Sopenharmony_ci
7711e41f4b71Sopenharmony_ci异步方式开始录屏。通过Promise获取返回值。
7712e41f4b71Sopenharmony_ci
7713e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7714e41f4b71Sopenharmony_ci
7715e41f4b71Sopenharmony_ci**返回值:**
7716e41f4b71Sopenharmony_ci
7717e41f4b71Sopenharmony_ci| 类型           | 说明                             |
7718e41f4b71Sopenharmony_ci| -------------- | -------------------------------- |
7719e41f4b71Sopenharmony_ci| Promise\<void> | 异步开始录屏方法的Promise返回值. |
7720e41f4b71Sopenharmony_ci
7721e41f4b71Sopenharmony_ci**错误码:**
7722e41f4b71Sopenharmony_ci
7723e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7724e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7725e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
7726e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
7727e41f4b71Sopenharmony_ci
7728e41f4b71Sopenharmony_ci**示例:**
7729e41f4b71Sopenharmony_ci
7730e41f4b71Sopenharmony_ci```ts
7731e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7732e41f4b71Sopenharmony_ci
7733e41f4b71Sopenharmony_ciavScreenCaptureRecorder.startRecording().then(() => {
7734e41f4b71Sopenharmony_ci    console.info('Succeeded in starting avScreenCaptureRecorder');
7735e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7736e41f4b71Sopenharmony_ci    console.info('Failed to start avScreenCaptureRecorder, error: ' + err.message);
7737e41f4b71Sopenharmony_ci})
7738e41f4b71Sopenharmony_ci```
7739e41f4b71Sopenharmony_ci
7740e41f4b71Sopenharmony_ci### stopRecording<sup>12+</sup>
7741e41f4b71Sopenharmony_ci
7742e41f4b71Sopenharmony_cistopRecording(): Promise\<void>
7743e41f4b71Sopenharmony_ci
7744e41f4b71Sopenharmony_ci异步方式结束录屏。通过Promise获取返回值。
7745e41f4b71Sopenharmony_ci
7746e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7747e41f4b71Sopenharmony_ci
7748e41f4b71Sopenharmony_ci**返回值:**
7749e41f4b71Sopenharmony_ci
7750e41f4b71Sopenharmony_ci| 类型           | 说明                              |
7751e41f4b71Sopenharmony_ci| -------------- | --------------------------------- |
7752e41f4b71Sopenharmony_ci| Promise\<void> | 异步结束录屏方法的Promise返回值。 |
7753e41f4b71Sopenharmony_ci
7754e41f4b71Sopenharmony_ci**错误码:**
7755e41f4b71Sopenharmony_ci
7756e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7757e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7758e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
7759e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
7760e41f4b71Sopenharmony_ci
7761e41f4b71Sopenharmony_ci**示例:**
7762e41f4b71Sopenharmony_ci
7763e41f4b71Sopenharmony_ci```ts
7764e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7765e41f4b71Sopenharmony_ci
7766e41f4b71Sopenharmony_ciavScreenCaptureRecorder.stopRecording().then(() => {
7767e41f4b71Sopenharmony_ci    console.info('Succeeded in stopping avScreenCaptureRecorder');
7768e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7769e41f4b71Sopenharmony_ci    console.info('Failed to stop avScreenCaptureRecorder, error: ' + err.message);
7770e41f4b71Sopenharmony_ci})
7771e41f4b71Sopenharmony_ci```
7772e41f4b71Sopenharmony_ci
7773e41f4b71Sopenharmony_ci### skipPrivacyMode<sup>12+</sup>
7774e41f4b71Sopenharmony_ci
7775e41f4b71Sopenharmony_ciskipPrivacyMode(windowIDs: Array\<number>): Promise\<void>
7776e41f4b71Sopenharmony_ci
7777e41f4b71Sopenharmony_ci录屏时,应用可对本应用的隐私窗口做安全豁免。通过Promise获取返回值。
7778e41f4b71Sopenharmony_ci如录屏时,用户在本应用进行输入密码等操作,应用不会进行黑屏处理。
7779e41f4b71Sopenharmony_ci
7780e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7781e41f4b71Sopenharmony_ci
7782e41f4b71Sopenharmony_ci**参数:**
7783e41f4b71Sopenharmony_ci
7784e41f4b71Sopenharmony_ci| 参数名 | 类型    | 必填 | 说明                                                      |
7785e41f4b71Sopenharmony_ci| ------ | ------- | ---- | --------------------------------------------------------- |
7786e41f4b71Sopenharmony_ci| windowIDs | Array\<number> | 是   | 需要豁免隐私的窗口列表,包括主窗口id和子窗口id,窗口属性获取方法可以参考[窗口API引用](../apis-arkui/js-apis-window.md#getwindowproperties9) |
7787e41f4b71Sopenharmony_ci
7788e41f4b71Sopenharmony_ci**返回值:**
7789e41f4b71Sopenharmony_ci
7790e41f4b71Sopenharmony_ci| 类型           | 说明                             |
7791e41f4b71Sopenharmony_ci| -------------- | -------------------------------- |
7792e41f4b71Sopenharmony_ci| Promise\<void> | 豁免隐私窗口的Promise返回值. |
7793e41f4b71Sopenharmony_ci
7794e41f4b71Sopenharmony_ci**错误码:**
7795e41f4b71Sopenharmony_ci
7796e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7797e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7798e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
7799e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
7800e41f4b71Sopenharmony_ci
7801e41f4b71Sopenharmony_ci**示例:**
7802e41f4b71Sopenharmony_ci
7803e41f4b71Sopenharmony_ci```ts
7804e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7805e41f4b71Sopenharmony_ci
7806e41f4b71Sopenharmony_cilet windowIDs = [];
7807e41f4b71Sopenharmony_ciavScreenCaptureRecorder.skipPrivacyMode(windowIDs).then(() => {
7808e41f4b71Sopenharmony_ci    console.info('Succeeded in skipping privacy mode');
7809e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7810e41f4b71Sopenharmony_ci    console.info('Failed to skip privacy mode, error: ' + err.message);
7811e41f4b71Sopenharmony_ci})
7812e41f4b71Sopenharmony_ci```
7813e41f4b71Sopenharmony_ci
7814e41f4b71Sopenharmony_ci### setMicEnabled<sup>12+</sup>
7815e41f4b71Sopenharmony_ci
7816e41f4b71Sopenharmony_cisetMicEnabled(enable: boolean): Promise\<void>
7817e41f4b71Sopenharmony_ci
7818e41f4b71Sopenharmony_ci异步方式设置麦克风开关。通过Promise获取返回值。
7819e41f4b71Sopenharmony_ci
7820e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7821e41f4b71Sopenharmony_ci
7822e41f4b71Sopenharmony_ci**参数:**
7823e41f4b71Sopenharmony_ci
7824e41f4b71Sopenharmony_ci| 参数名 | 类型    | 必填 | 说明                                                      |
7825e41f4b71Sopenharmony_ci| ------ | ------- | ---- | --------------------------------------------------------- |
7826e41f4b71Sopenharmony_ci| enable | boolean | 是   | 麦克风开关控制,true代表麦克风打开,false代表麦克风关闭。 |
7827e41f4b71Sopenharmony_ci
7828e41f4b71Sopenharmony_ci**返回值:**
7829e41f4b71Sopenharmony_ci
7830e41f4b71Sopenharmony_ci| 类型           | 说明                                    |
7831e41f4b71Sopenharmony_ci| -------------- | --------------------------------------- |
7832e41f4b71Sopenharmony_ci| Promise\<void> | 异步设置麦克风开关方法的Promise返回值。 |
7833e41f4b71Sopenharmony_ci
7834e41f4b71Sopenharmony_ci**错误码:**
7835e41f4b71Sopenharmony_ci
7836e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7837e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7838e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
7839e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
7840e41f4b71Sopenharmony_ci
7841e41f4b71Sopenharmony_ci**示例:**
7842e41f4b71Sopenharmony_ci
7843e41f4b71Sopenharmony_ci```ts
7844e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7845e41f4b71Sopenharmony_ci
7846e41f4b71Sopenharmony_ciavScreenCaptureRecorder.setMicEnabled(true).then(() => {
7847e41f4b71Sopenharmony_ci    console.info('Succeeded in setMicEnabled avScreenCaptureRecorder');
7848e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7849e41f4b71Sopenharmony_ci    console.info('Failed to setMicEnabled avScreenCaptureRecorder, error: ' + err.message);
7850e41f4b71Sopenharmony_ci})
7851e41f4b71Sopenharmony_ci```
7852e41f4b71Sopenharmony_ci
7853e41f4b71Sopenharmony_ci### release<sup>12+</sup>
7854e41f4b71Sopenharmony_ci
7855e41f4b71Sopenharmony_cirelease(): Promise\<void>
7856e41f4b71Sopenharmony_ci
7857e41f4b71Sopenharmony_ci异步方式释放录屏。通过Promise获取返回值。
7858e41f4b71Sopenharmony_ci
7859e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7860e41f4b71Sopenharmony_ci
7861e41f4b71Sopenharmony_ci**返回值:**
7862e41f4b71Sopenharmony_ci
7863e41f4b71Sopenharmony_ci| 类型           | 说明                              |
7864e41f4b71Sopenharmony_ci| -------------- | --------------------------------- |
7865e41f4b71Sopenharmony_ci| Promise\<void> | 异步释放录屏方法的Promise返回值。 |
7866e41f4b71Sopenharmony_ci
7867e41f4b71Sopenharmony_ci**错误码:**
7868e41f4b71Sopenharmony_ci
7869e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7870e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7871e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by promise.     |
7872e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by promise. |
7873e41f4b71Sopenharmony_ci
7874e41f4b71Sopenharmony_ci**示例:**
7875e41f4b71Sopenharmony_ci
7876e41f4b71Sopenharmony_ci```ts
7877e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
7878e41f4b71Sopenharmony_ci
7879e41f4b71Sopenharmony_ciavScreenCaptureRecorder.release().then(() => {
7880e41f4b71Sopenharmony_ci    console.info('Succeeded in releasing avScreenCaptureRecorder');
7881e41f4b71Sopenharmony_ci}).catch((err: BusinessError) => {
7882e41f4b71Sopenharmony_ci    console.info('Faile to release avScreenCaptureRecorder, error: ' + err.message);
7883e41f4b71Sopenharmony_ci})
7884e41f4b71Sopenharmony_ci```
7885e41f4b71Sopenharmony_ci
7886e41f4b71Sopenharmony_ci### on('stateChange')<sup>12+</sup>
7887e41f4b71Sopenharmony_ci
7888e41f4b71Sopenharmony_cion(type: 'stateChange', callback: Callback\<AVScreenCaptureStateCode>): void
7889e41f4b71Sopenharmony_ci
7890e41f4b71Sopenharmony_ci订阅录屏状态切换的事件,当状态发生的时候,会通过订阅的回调通知用户。用户只能订阅一个状态切换的回调方法,重复订阅时,以最后一次订阅的回调接口为准。
7891e41f4b71Sopenharmony_ci
7892e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7893e41f4b71Sopenharmony_ci
7894e41f4b71Sopenharmony_ci**参数:**
7895e41f4b71Sopenharmony_ci
7896e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
7897e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
7898e41f4b71Sopenharmony_ci| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'stateChange'。            |
7899e41f4b71Sopenharmony_ci| callback | function | 是   | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态。 |
7900e41f4b71Sopenharmony_ci
7901e41f4b71Sopenharmony_ci**示例:**
7902e41f4b71Sopenharmony_ci
7903e41f4b71Sopenharmony_ci```ts
7904e41f4b71Sopenharmony_ciavScreenCaptureRecorder.on('stateChange', (state: media.AVScreenCaptureStateCode) => {
7905e41f4b71Sopenharmony_ci    console.info('avScreenCaptureRecorder stateChange to ' + state);
7906e41f4b71Sopenharmony_ci})
7907e41f4b71Sopenharmony_ci```
7908e41f4b71Sopenharmony_ci
7909e41f4b71Sopenharmony_ci### on('error')<sup>12+</sup>
7910e41f4b71Sopenharmony_ci
7911e41f4b71Sopenharmony_cion(type: 'error', callback: ErrorCallback): void
7912e41f4b71Sopenharmony_ci
7913e41f4b71Sopenharmony_ci订阅AVScreenCaptureRecorder的错误事件,用户可以根据应用自身逻辑对错误事件进行处理。用户只能订阅一个错误事件的回调方法,重复订阅时,以最后一次订阅的回调接口为准。
7914e41f4b71Sopenharmony_ci
7915e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7916e41f4b71Sopenharmony_ci
7917e41f4b71Sopenharmony_ci**参数:**
7918e41f4b71Sopenharmony_ci
7919e41f4b71Sopenharmony_ci| 参数名   | 类型          | 必填 | 说明                                    |
7920e41f4b71Sopenharmony_ci| -------- | ------------- | ---- | --------------------------------------- |
7921e41f4b71Sopenharmony_ci| type     | string        | 是   | 错误事件回调类型,支持的事件:'error'。 |
7922e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是   | 录屏错误事件回调方法。                  |
7923e41f4b71Sopenharmony_ci
7924e41f4b71Sopenharmony_ci**错误码:**
7925e41f4b71Sopenharmony_ci
7926e41f4b71Sopenharmony_ci| 错误码ID | 错误信息                         |
7927e41f4b71Sopenharmony_ci| -------- | -------------------------------- |
7928e41f4b71Sopenharmony_ci| 201      | permission denied.     |
7929e41f4b71Sopenharmony_ci| 5400103  | IO error. Return by ErrorCallback. |
7930e41f4b71Sopenharmony_ci| 5400105  | Service died. Return by ErrorCallback. |
7931e41f4b71Sopenharmony_ci
7932e41f4b71Sopenharmony_ci**示例:**
7933e41f4b71Sopenharmony_ci
7934e41f4b71Sopenharmony_ci```ts
7935e41f4b71Sopenharmony_ciavScreenCaptureRecorder.on('error', (err: BusinessError) => {
7936e41f4b71Sopenharmony_ci    console.error('avScreenCaptureRecorder error:' + err.message);
7937e41f4b71Sopenharmony_ci})
7938e41f4b71Sopenharmony_ci```
7939e41f4b71Sopenharmony_ci
7940e41f4b71Sopenharmony_ci### off('stateChange')<sup>12+</sup>
7941e41f4b71Sopenharmony_ci
7942e41f4b71Sopenharmony_ci off(type: 'stateChange', callback?: Callback\<AVScreenCaptureStateCode>): void
7943e41f4b71Sopenharmony_ci
7944e41f4b71Sopenharmony_ci取消订阅状态切换回调事件。用户可以指定填入状态切换的回调方法来取消订阅。
7945e41f4b71Sopenharmony_ci
7946e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7947e41f4b71Sopenharmony_ci
7948e41f4b71Sopenharmony_ci**参数:**
7949e41f4b71Sopenharmony_ci
7950e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                         |
7951e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ------------------------------------------------------------ |
7952e41f4b71Sopenharmony_ci| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'stateChange'。            |
7953e41f4b71Sopenharmony_ci| callback | function | 否   | 状态切换事件回调方法,[AVScreenCaptureStateCode](#avscreencapturestatecode12)表示切换到的状态,不填此参数则会取消最后一次订阅事件。 |
7954e41f4b71Sopenharmony_ci
7955e41f4b71Sopenharmony_ci**示例:**
7956e41f4b71Sopenharmony_ci
7957e41f4b71Sopenharmony_ci```ts
7958e41f4b71Sopenharmony_ciavScreenCaptureRecorder.off('stateChange');
7959e41f4b71Sopenharmony_ci```
7960e41f4b71Sopenharmony_ci
7961e41f4b71Sopenharmony_ci### off('error')<sup>12+</sup>
7962e41f4b71Sopenharmony_ci
7963e41f4b71Sopenharmony_cioff(type: 'error', callback?: ErrorCallback): void
7964e41f4b71Sopenharmony_ci
7965e41f4b71Sopenharmony_ci取消订阅错误回调事件。用户可以指定填入错误回调方法来取消订阅。
7966e41f4b71Sopenharmony_ci
7967e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.AVScreenCapture
7968e41f4b71Sopenharmony_ci
7969e41f4b71Sopenharmony_ci**参数:**
7970e41f4b71Sopenharmony_ci
7971e41f4b71Sopenharmony_ci| 参数名   | 类型     | 必填 | 说明                                                       |
7972e41f4b71Sopenharmony_ci| -------- | -------- | ---- | ---------------------------------------------------------- |
7973e41f4b71Sopenharmony_ci| type     | string   | 是   | 状态切换事件回调类型,支持的事件:'error'。                |
7974e41f4b71Sopenharmony_ci| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否   | 录屏错误事件回调方法,不填此参数则会取消最后一次订阅事件。 |
7975e41f4b71Sopenharmony_ci
7976e41f4b71Sopenharmony_ci**示例:**
7977e41f4b71Sopenharmony_ci
7978e41f4b71Sopenharmony_ci```ts
7979e41f4b71Sopenharmony_ciavScreenCaptureRecorder.off('error');
7980e41f4b71Sopenharmony_ci```