From b99ae996f8420bae24935a71f4b897f6d5ced330 Mon Sep 17 00:00:00 2001 From: x30034819 Date: Sat, 20 May 2023 16:24:50 +0800 Subject: [PATCH] avplayer audio track Signed-off-by: x30034819 Signed-off-by: x30034819 Change-Id: Icccb8aad49547bff13a84fa390a3d1fda704b04b --- .../reference/apis/js-apis-media.md | 166 +++++++++++++++++- 1 file changed, 164 insertions(+), 2 deletions(-) diff --git a/zh-cn/application-dev/reference/apis/js-apis-media.md b/zh-cn/application-dev/reference/apis/js-apis-media.md index d9e5b6de48..c77e91242a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-media.md +++ b/zh-cn/application-dev/reference/apis/js-apis-media.md @@ -275,7 +275,7 @@ media.createVideoRecorder().then((video) => { | AVERR_SERVICE_DIED | 5400105 | 表示服务进程死亡。 | | AVERR_UNSUPPORT_FORMAT | 5400106 | 表示不支持当前媒体资源的格式。 | -## MediaType8+ +## MediaType8+ 媒体类型枚举。 @@ -321,6 +321,7 @@ Codec MIME类型枚举。 | MD_KEY_FRAME_RATE | 'frame_rate' | 表示视频帧率,其对应键值类型为number,单位为100帧每秒(100fps)。 | | MD_KEY_AUD_CHANNEL_COUNT | 'channel_count' | 表示声道数,其对应键值类型为number。 | | MD_KEY_AUD_SAMPLE_RATE | 'sample_rate' | 表示采样率,其对应键值类型为number,单位为赫兹(Hz)。 | +| MD_KEY_LANGUAGE | "language" | 表示语言信息,其对应键值类型为string。 | ## BufferingInfoType8+ @@ -906,7 +907,7 @@ avPlayer.release().then(() => { }) ``` -### getTrackDescription9+ +### getTrackDescription9+ getTrackDescription(callback: AsyncCallback\>): void @@ -998,6 +999,124 @@ for (let i = 0; i < arrayDescription.length; i++) { } ``` +### selectTrack10+ + +selectTrack(index: number): void; + +选择音频轨道,只能在prepared状态调用,可以通过[trackChange事件](#trackchange_on)确认是否生效。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| index | number | 是 | 轨道序号,可以通过[getTrackDescription](#avplayer_gettrackdescription)获取。 | + +**示例:** + +```js +let index = 2 +avPlayer.setBitrate(index) +``` + +### deselectTrack10+ + +deselectTrack(index: number): void; + +取消已经选择的音频轨道,取消后会播放默认音频轨道。只能在prepared状态调用,可以通过[trackChange事件](#trackchange_on)确认是否生效。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------------------------------ | +| index | number | 是 | 轨道序号,可以通过[getTrackDescription](#avplayer_gettrackdescription)获取。 | + +**示例:** + +```js +let index = 2 +avPlayer.deselectTrack(index) +``` + +### getCurrentTrack10+ + +getCurrentTrack(trackType: MediaType, callback: AsyncCallback\): void; + +通过回调方式获取当前生效的轨道信息,可以在prepared/playing/paused状态调用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ----------------------- | ---- | ------------------------------------------------------------ | +| trackType | [MediaType](#mediatype) | 是 | 媒体类型枚举。 | +| callback | AsyncCallback\ | 是 | 获取当前生效轨道序号回调方法,返回-1表示当前无该媒体类型轨道。 | + +**错误码:** + +以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md) + +| 错误码ID | 错误信息 | +| -------- | ------------------------------------------ | +| 5400102 | Operation not allowed. Return by callback. | + +**示例:** + +```js +let mediaType = media.MediaType.MEDIA_TYPE_AUD; +let trackIndex = null; + +avPlayer.getCurrentTrack(mediaType (err, index) => { + if (err == null) { + console.info('getCurrentTrack success'); + trackIndex = index; + } else { + console.error('getCurrentTrack failed and error is ' + err.message); + } +}); +``` + +### getCurrentTrack10+ + +getCurrentTrack(trackType: MediaType): Promise\; + +通过Promise方式获取当前生效的轨道信息,可以在prepared/playing/paused状态调用。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**返回值:** + +| 类型 | 说明 | +| ---------------- | ------------------------------------------------------------ | +| trackType | [MediaType](#mediatype) | +| Promise\ | 当前生效的轨道序号Promise返回值,-1表示当前无该媒体类型轨道。 | + +**错误码:** + +以下错误码的详细介绍请参见[媒体错误码](../errorcodes/errorcode-media.md) + +| 错误码ID | 错误信息 | +| -------- | ----------------------------------------- | +| 5400102 | Operation not allowed. Return by promise. | + +**示例:** + +```js +let mediaType = media.MediaType.MEDIA_TYPE_AUD; +let trackIndex = null; + +avPlayer.getCurrentTrack(mediaType).then((index) => { + console.info('getCurrentTrack success'); + trackIndex = index; +}).catch((err) => { + console.error('getCurrentTrack failed and catch error is ' + err.message); +}); +``` + ### seek9+ seek(timeMs: number, mode?:SeekMode): void @@ -1604,6 +1723,49 @@ off(type: 'audioInterrupt'): void avPlayer.off('audioInterrupt') ``` +### on('trackChange')10+ + +on(type: 'trackChange', callback: (index: number, isSelect: boolean) => void): void; + +监听selectTrack和deselectTrack生效的事件。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | ---- | ----------------------------------------------------- | +| type | string | 是 | 生效轨道变化事件回调类型,支持的事件:'trackChange'。 | +| callback | function | 是 | 生效轨道变化事件回调方法。 | + +**示例:** + +```js +avPlayer.on('trackChange', (index: number, isSelect: boolean) => { + console.info('trackChange success, and index is:' + index + ', isSelect is :' + isSelect) +}) +``` + +### off('trackChange')10+ + +off(type: 'trackChange'): void + +取消监听生效轨道变化事件。 + +**系统能力:** SystemCapability.Multimedia.Media.AVPlayer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | --------------------------------------------------------- | +| type | string | 是 | 生效轨道变化事件回调类型,取消注册的事件:'trackChange'。 | + +**示例:** + +```js +avPlayer.off('trackChange') +``` + ## AVPlayerState9+ [AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#stateChange_on)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/using-avplayer-for-playback.md)。 -- GitLab