• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Types
2<!--Kit: Media Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @wang-haizhou6-->
5<!--Designer: @HmQQQ-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12
13## SoundPool<sup>10+</sup>
14
15type SoundPool = _SoundPool
16
17音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。
18
19**系统能力:** SystemCapability.Multimedia.Media.SoundPool
20
21| 类型     | 说明                       |
22| -------- | ------------------------------ |
23| [_SoundPool](js-apis-inner-multimedia-soundPool.md#soundpool)  | 音频池,提供了系统声音的加载、播放、音量设置、循环设置、停止播放、资源卸载等功能。 |
24
25## PlayParameters<sup>10+</sup>
26
27type PlayParameters = _PlayParameters
28
29表示音频池播放参数设置。
30
31**系统能力:** SystemCapability.Multimedia.Media.SoundPool
32
33| 类型     | 说明                       |
34| -------- | ------------------------------ |
35| [_PlayParameters](js-apis-inner-multimedia-soundPool.md#playparameters)  | 表示音频池播放参数设置。 |
36
37## AVPlayerState<sup>9+</sup>
38
39type AVPlayerState = 'idle' | 'initialized' | 'prepared' | 'playing' | 'paused' | 'completed' | 'stopped' | 'released' | 'error'
40
41[AVPlayer](arkts-apis-media-AVPlayer.md)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](arkts-apis-media-AVPlayer.md#onstatechange9)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/media/using-avplayer-for-playback.md)。
42
43**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
44
45**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
46
47|              类型               | 说明                                                         |
48| :-----------------------------: | :----------------------------------------------------------- |
49|              'idle'               | 闲置状态,AVPlayer刚被创建[createAVPlayer()](arkts-apis-media-f.md#mediacreateavplayer9)或者调用了[reset()](arkts-apis-media-AVPlayer.md#reset9)方法之后,进入idle状态。<br/>首次创建[createAVPlayer()](arkts-apis-media-f.md#mediacreateavplayer9),所有属性都为默认值。<br/>调用[reset()](arkts-apis-media-AVPlayer.md#reset9)方法,url<sup>9+</sup> 或 fdSrc<sup>9+</sup>或dataSrc<sup>10+</sup>属性及loop属性会被重置,其他用户设置的属性将被保留。 |
50|           'initialized'           | 资源初始化,在idle 状态设置 url<sup>9+</sup> 或 fdSrc<sup>9+</sup>属性,AVPlayer会进入initialized状态,此时可以配置窗口、音频等静态属性。 |
51|            'prepared'             | 已准备状态,在initialized状态调用[prepare()](arkts-apis-media-AVPlayer.md#prepare9)方法,AVPlayer会进入prepared状态,此时播放引擎的资源已准备就绪。 |
52|             'playing'             | 正在播放状态,在prepared/paused/completed状态调用[play()](arkts-apis-media-AVPlayer.md#play9)方法,AVPlayer会进入playing状态。 |
53|             'paused'              | 暂停状态,在playing状态调用pause方法,AVPlayer会进入paused状态。 |
54|            'completed'            | 播放至结尾状态,当媒体资源播放至结尾时,如果用户未设置循环播放(loop = true),AVPlayer会进入completed状态,此时调用[play()](arkts-apis-media-AVPlayer.md#play9)会进入playing状态和重播,调用[stop()](arkts-apis-media-AVPlayer.md#stop9)会进入stopped状态。 |
55|             'stopped'             | 停止状态,在prepared/playing/paused/completed状态调用[stop()](arkts-apis-media-AVPlayer.md#stop9)方法,AVPlayer会进入stopped状态,此时播放引擎只会保留属性,但会释放内存资源,可以调用[prepare()](arkts-apis-media-AVPlayer.md#prepare9)重新准备,也可以调用[reset()](arkts-apis-media-AVPlayer.md#reset9)重置,或者调用[release()](arkts-apis-media-AVPlayer.md#release9)彻底销毁。 |
56|            'released'             | 销毁状态,销毁与当前AVPlayer关联的播放引擎,无法再进行状态转换,调用[release()](arkts-apis-media-AVPlayer.md#release9)方法后,会进入released状态,结束流程。 |
57| 'error' | 错误状态,当**播放引擎**发生**不可逆的错误**(详见[媒体错误码](errorcode-media.md)),则会转换至当前状态,可以调用[reset()](arkts-apis-media-AVPlayer.md#reset9)重置,也可以调用[release()](arkts-apis-media-AVPlayer.md#release9)销毁重建。<br/>**注意:** 区分error状态和 [on('error')](arkts-apis-media-AVPlayer.md#onerror9) :<br/>1、进入error状态时,会触发on('error')监听事件,可以通过on('error')事件获取详细错误信息;<br/>2、处于error状态时,播放服务进入不可播控的状态,要求客户端设计容错机制,使用[reset()](arkts-apis-media-AVPlayer.md#reset9)重置或者[release()](arkts-apis-media-AVPlayer.md#release9)销毁重建;<br/>3、如果客户端收到on('error'),但未进入error状态:<br/>原因1:客户端未按状态机调用API或传入参数错误,被AVPlayer拦截提醒,需要客户端调整代码逻辑;<br/>原因2:播放过程发现码流问题,导致容器、解码短暂异常,不影响连续播放和播控操作的,不需要客户端设计容错机制。 |
58
59## OnTrackChangeHandler<sup>12+</sup>
60
61type OnTrackChangeHandler = (index: number, isSelected: boolean) => void
62
63track变更事件回调方法。
64
65**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
66
67**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
68
69**参数:**
70
71| 参数名   | 类型   | 必填 | 说明                                                         |
72| ------ | ------ | ------ | ---------------------------------------------------------- |
73| index  | number | 是 | 当前变更的track索引。     |
74| isSelected | boolean | 是 | 当前变更的track索引是否被选中。true表示处于选中状态,false表示处于非选中状态。 |
75
76## OnAVPlayerStateChangeHandle<sup>12+</sup>
77
78type OnAVPlayerStateChangeHandle = (state: AVPlayerState, reason: StateChangeReason) => void
79
80状态机切换事件回调方法。
81
82**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
83
84**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
85
86**参数:**
87
88| 参数名   | 类型   | 必填 | 说明                                                         |
89| ------ | ------ | ------ | ---------------------------------------------------------- |
90| state  | [AVPlayerState](#avplayerstate9) | 是 | 当前播放状态。     |
91| reason | [StateChangeReason](arkts-apis-media-e.md#statechangereason9) | 是 | 当前播放状态的切换原因。 |
92
93## OnBufferingUpdateHandler<sup>12+</sup>
94
95type OnBufferingUpdateHandler = (infoType: BufferingInfoType, value: number) => void
96
97播放缓存事件回调方法。
98
99**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
100
101**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
102
103**参数:**
104
105| 参数名   | 类型   | 必填 | 说明                                                         |
106| ------ | ------ | ------ | ------------------------------------------------------------ |
107| infoType  | [BufferingInfoType](arkts-apis-media-e.md#bufferinginfotype8) | 是 | 缓存时间类型。     |
108| value  | number | 是 | 缓存时间类型的值。     |
109
110## OnVideoSizeChangeHandler<sup>12+</sup>
111
112type OnVideoSizeChangeHandler = (width: number, height: number) => void
113
114视频播放宽高变化事件回调方法。
115
116**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
117
118**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
119
120**参数:**
121
122| 参数名   | 类型   | 必填 | 说明                                                         |
123| ------ | ------ | ------ | ------------------------------------------------------------ |
124| width  | number | 是 | 视频宽度,单位为像素(px)。|
125| height | number | 是 | 视频高度,单位为像素(px)。|
126
127## OnSuperResolutionChanged <sup>18+</sup>
128
129type OnSuperResolutionChanged = (enabled: boolean) => void
130
131视频超分开关事件回调方法。若通过[PlaybackStrategy](arkts-apis-media-i.md#playbackstrategy12)正确使能超分,超分算法状态变化时会通过此回调上报,视频起播时也会上报超分初始开启/关闭状态。若未使能超分,不会触发该回调。
132
133出现以下两种情况,超分算法会自动关闭。
134* 目前超分算法最高仅支持30帧及以下的视频。若视频帧率超过30帧,或者在倍速播放等场景下导致输入帧率超出超分算法处理能力,超分会自动关闭。
135* 目前超分算法支持输入分辨率范围为320x320 ~ 1920x1080,单位为像素。若播放过程中输入视频分辨率超出此范围,超分算法会自动关闭。
136
137**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
138
139**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
140
141**参数:**
142
143| 参数名   | 类型   | 必填 | 说明                                                         |
144| ------ | ------ | ------ | ------------------------------------------------------------ |
145| enabled  | boolean | 是 | 表示当前超分是否开启。true表示超分开启,false表示超分关闭。     |
146
147## OnSeiMessageHandle<sup>18+</sup>
148
149type OnSeiMessageHandle = (messages: Array\<SeiMessage>, playbackPosition?: number) => void
150
151获取SEI信息,使用场景:订阅SEI信息事件,回调返回SEI详细信息。
152
153**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
154
155**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
156
157**参数:**
158
159| 参数名   |   类型   | 必填 | 说明                                                         |
160| ------ | ------ | ---- | ------------------------------------------------------------ |
161| messages | Array\<[SeiMessage](arkts-apis-media-i.md#seimessage18)> | 是  | SEI信息。 |
162| playbackPosition | number | 否  | 获取当前播放位置(单位:毫秒)。 |
163
164## OnPlaybackRateDone<sup>20+</sup>
165
166type OnPlaybackRateDone = (rate: number) => void
167
168播放速率设置完成事件回调方法。
169
170**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。
171
172**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
173
174**参数:**
175
176| 参数名   | 类型   | 必填 | 说明                                                         |
177| ------ | ------ | ------ | ------------------------------------------------------------ |
178| rate | number | 是 | 播放速率。 |
179
180## AVRecorderState<sup>9+</sup>
181
182type AVRecorderState = 'idle' | 'prepared' | 'started' | 'paused' | 'stopped' | 'released' | 'error'
183
184音视频录制的状态机。可通过state属性获取当前状态。
185
186**原子化服务API:** 从API version 12 开始,该接口支持在原子化服务中使用。
187
188**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
189
190| 类型     | 说明                                                         |
191| -------- | ------------------------------------------------------------ |
192| 'idle'     | 闲置状态。此时可以调用[AVRecorder.prepare()](arkts-apis-media-AVRecorder.md#prepare9)方法设置录制参数,进入prepared状态。AVRecorder刚被创建,或者在任何非released状态下调用[AVRecorder.reset()](arkts-apis-media-AVRecorder.md#reset9)方法,均进入idle状态。 |
193| 'prepared' | 参数设置完成。此时可以调用[AVRecorder.start()](arkts-apis-media-AVRecorder.md#start9)方法开始录制,进入started状态。 |
194| 'started'  | 正在录制。此时可以调用[AVRecorder.pause()](arkts-apis-media-AVRecorder.md#pause9)方法暂停录制,进入paused状态。也可以调用[AVRecorder.stop()](arkts-apis-media-AVRecorder.md#stop9)方法结束录制,进入stopped状态。 |
195| 'paused'   | 录制暂停。此时可以调用[AVRecorder.resume()](arkts-apis-media-AVRecorder.md#resume9)方法继续录制,进入started状态。也可以调用[AVRecorder.stop()](arkts-apis-media-AVRecorder.md#stop9)方法结束录制,进入stopped状态。 |
196| 'stopped'  | 录制停止。此时可以调用[AVRecorder.prepare()](arkts-apis-media-AVRecorder.md#prepare9)方法设置录制参数,重新进入prepared状态。 |
197| 'released' | 录制资源释放。此时不能再进行任何操作。在任何其他状态下,均可以通过调用[AVRecorder.release()](arkts-apis-media-AVRecorder.md#release9)方法进入released状态。 |
198| 'error'    | 错误状态。当AVRecorder实例发生不可逆错误,会转换至当前状态。切换至error状态时会伴随[AVRecorder.on('error')事件](arkts-apis-media-AVRecorder.md#onerror9),该事件会上报详细错误原因。在error状态时,用户需要调用[AVRecorder.reset()](arkts-apis-media-AVRecorder.md#reset9)方法重置AVRecorder实例,或者调用[AVRecorder.release()](arkts-apis-media-AVRecorder.md#release9)方法释放资源。 |
199
200## OnAVRecorderStateChangeHandler<sup>12+</sup>
201
202type OnAVRecorderStateChangeHandler = (state: AVRecorderState, reason: StateChangeReason) => void
203
204状态机切换事件回调方法。
205
206**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
207
208**系统能力:** SystemCapability.Multimedia.Media.AVRecorder
209
210**参数:**
211
212| 参数名   | 类型   | 必填 | 说明                                                         |
213| ------ | ------ | ------ | ------------------------------------------------------------ |
214| state  | [AVRecorderState](#avrecorderstate9) | 是 | 当前录制状态。     |
215| reason | [StateChangeReason](arkts-apis-media-e.md#statechangereason9) | 是 | 当前录制状态的切换原因。 |
216
217## SourceOpenCallback<sup>18+</sup>
218
219type SourceOpenCallback = (request: MediaSourceLoadingRequest) => number
220
221由应用实现此回调函数,应用需处理传入的资源打开请求,并返回所打开资源对应的唯一句柄。
222>
223>**注意:** 客户端在处理完请求后应立刻返回。
224>
225
226**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
227
228**系统能力:** SystemCapability.Multimedia.Media.Core
229
230**参数:**
231
232| 参数名   | 类型     | 必填 | 说明                 |
233| -------- | -------- | ---- | -------------------- |
234| request | [MediaSourceLoadingRequest](arkts-apis-media-MediaSourceLoadingRequest.md) | 是  | 	打开请求参数,包含请求资源的具体信息和数据推送方式。 |
235
236**返回值:**
237
238| 类型   | 说明                 |
239| -------- | -------------------- |
240| number  | 当前资源打开请求的句柄。大于0表示请求成功,小于或等于0表示请求失败。<br/> - request对象对应句柄唯一。|
241
242**示例:**
243
244```ts
245import { HashMap } from '@kit.ArkTS';
246import { media } from '@kit.MediaKit';
247
248let uuid: number = 1;
249let requests: HashMap<number, media.MediaSourceLoadingRequest> = new HashMap();
250
251let sourceOpenCallback: media.SourceOpenCallback = (request: media.MediaSourceLoadingRequest) => {
252  console.log(`Opening resource: ${request.url}`);
253  // 成功打开资源,返回唯一的句柄, 保证uuid和request对应。
254  uuid += 1;
255  requests.set(uuid, request);
256  return uuid;
257};
258```
259
260## SourceReadCallback<sup>18+</sup>
261
262type SourceReadCallback = (uuid: number, requestedOffset: number, requestedLength: number) => void
263
264由应用实现此回调函数,应用需记录读取请求,并在数据充足时通过对应的MediaSourceLoadingRequest对象的[respondData](arkts-apis-media-MediaSourceLoadingRequest.md#responddata18)方法推送数据。
265>
266>**注意:** 客户端在处理完请求后应立刻返回。
267>
268
269**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
270
271**系统能力:** SystemCapability.Multimedia.Media.Core
272
273**参数:**
274
275| 参数名   | 类型     | 必填 | 说明                 |
276| -------- | -------- | ---- | -------------------- |
277| uuid | number | 是  | 	资源句柄的标识。 |
278| requestedOffset | number | 是  | 	当前媒体数据相对于资源起始位置的偏移量。 |
279| requestedLength | number | 是  | 	当前请求的长度。值为-1时,表示到达资源末尾,此时推送完成后需通过[finishLoading](arkts-apis-media-MediaSourceLoadingRequest.md#finishloading18)方法通知播放器推送结束。 |
280
281**示例:**
282
283```ts
284let sourceReadCallback: media.SourceReadCallback = (uuid: number, requestedOffset: number, requestedLength: number) => {
285  console.log(`Reading resource with handle ${uuid}, offset: ${requestedOffset}, length: ${requestedLength}`);
286  // 判断uuid是否合法、存储read请求,不要在read请求阻塞去推送数据和头信息。
287};
288```
289
290## SourceCloseCallback<sup>18+</sup>
291
292type SourceCloseCallback = (uuid: number) => void
293
294由应用实现此回调函数,应用应释放相关资源。
295
296> **注意:**
297> 客户端在处理完请求后应立刻返回。
298
299**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
300
301**系统能力:** SystemCapability.Multimedia.Media.Core
302
303**参数:**
304
305| 参数名   | 类型     | 必填 | 说明                 |
306| -------- | -------- | ---- | -------------------- |
307| uuid      | number | 是  | 资源句柄的标识。 |
308
309**示例:**
310
311```ts
312import HashMap from '@ohos.util.HashMap';
313
314let requests: HashMap<number, media.MediaSourceLoadingRequest> = new HashMap();
315
316let sourceCloseCallback: media.SourceCloseCallback = (uuid: number) => {
317  console.log(`Closing resource with handle ${uuid}`);
318  // 清除当前uuid相关资源。
319  requests.remove(uuid);
320};
321```
322
323## AudioState<sup>(deprecated)</sup>
324
325type AudioState = 'idle' | 'playing' | 'paused' | 'stopped' | 'error'
326
327音频播放的状态机。可通过state属性获取当前状态。
328
329> **说明:**
330> 从API version 6开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
331
332**系统能力:** SystemCapability.Multimedia.Media.AudioPlayer
333
334| 类型    | 说明                                           |
335| ------- | ---------------------------------------------- |
336| 'idle'    | 音频播放空闲,dataload/reset成功后处于此状态。 |
337| 'playing' | 音频正在播放,play成功后处于此状态。           |
338| 'paused'  | 音频暂停播放,pause成功后处于此状态。          |
339| 'stopped' | 音频播放停止,stop/播放结束后处于此状态。      |
340| 'error'   | 错误状态。                                     |
341
342## VideoPlayState<sup>(deprecated)</sup>
343
344type VideoPlayState = 'idle' | 'prepared' | 'playing' | 'paused' | 'stopped' | 'error'
345
346视频播放的状态机,可通过state属性获取当前状态。
347
348> **说明:**
349> 从API version 8开始支持,从API version 9开始废弃,建议使用[AVPlayerState](#avplayerstate9)替代。
350
351**系统能力:** SystemCapability.Multimedia.Media.VideoPlayer
352
353| 类型     | 说明           |
354| -------- | -------------- |
355| 'idle'     | 视频播放空闲。 |
356| 'prepared' | 视频播放准备。 |
357| 'playing'  | 视频正在播放。 |
358| 'paused'   | 视频暂停播放。 |
359| 'stopped'  | 视频播放停止。 |
360| 'error'    | 错误状态。     |
361