提交 b99ae996 编写于 作者: X x30034819

avplayer audio track Signed-off-by: x30034819 <xieyijun3@huawei.com>

Signed-off-by: Nx30034819 <xieyijun3@huawei.com>
Change-Id: Icccb8aad49547bff13a84fa390a3d1fda704b04b
上级 3353dda3
......@@ -275,7 +275,7 @@ media.createVideoRecorder().then((video) => {
| AVERR_SERVICE_DIED | 5400105 | 表示服务进程死亡。 |
| AVERR_UNSUPPORT_FORMAT | 5400106 | 表示不支持当前媒体资源的格式。 |
## MediaType<sup>8+</sup>
## MediaType<sup>8+</sup><a name=mediatype></a>
媒体类型枚举。
......@@ -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。 |
## BufferingInfoType<sup>8+</sup>
......@@ -906,7 +907,7 @@ avPlayer.release().then(() => {
})
```
### getTrackDescription<sup>9+</sup>
### getTrackDescription<sup>9+</sup><a name=avplayer_gettrackdescription></a>
getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
......@@ -998,6 +999,124 @@ for (let i = 0; i < arrayDescription.length; i++) {
}
```
### selectTrack<sup>10+</sup><a name=avplayer_selecttrack></a>
selectTrack(index: number): void;
选择音频轨道,只能在prepared状态调用,可以通过[trackChange事件](#trackchange_on)确认是否生效。
**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| index | number | 是 | 轨道序号,可以通过[getTrackDescription](#avplayer_gettrackdescription)获取。 |
**示例:**
```js
let index = 2
avPlayer.setBitrate(index)
```
### deselectTrack<sup>10+</sup><a name=avplayer_deselecttrack></a>
deselectTrack(index: number): void;
取消已经选择的音频轨道,取消后会播放默认音频轨道。只能在prepared状态调用,可以通过[trackChange事件](#trackchange_on)确认是否生效。
**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------------------------------------------------ |
| index | number | 是 | 轨道序号,可以通过[getTrackDescription](#avplayer_gettrackdescription)获取。 |
**示例:**
```js
let index = 2
avPlayer.deselectTrack(index)
```
### getCurrentTrack<sup>10+</sup><a name=avplayer_getcurrenttrack></a>
getCurrentTrack(trackType: MediaType, callback: AsyncCallback\<number>): void;
通过回调方式获取当前生效的轨道信息,可以在prepared/playing/paused状态调用。
**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| --------- | ----------------------- | ---- | ------------------------------------------------------------ |
| trackType | [MediaType](#mediatype) | 是 | 媒体类型枚举。 |
| callback | AsyncCallback\<number> | 是 | 获取当前生效轨道序号回调方法,返回-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);
}
});
```
### getCurrentTrack<sup>10+</sup>
getCurrentTrack(trackType: MediaType): Promise\<number>;
通过Promise方式获取当前生效的轨道信息,可以在prepared/playing/paused状态调用。
**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
**返回值:**
| 类型 | 说明 |
| ---------------- | ------------------------------------------------------------ |
| trackType | [MediaType](#mediatype) |
| Promise\<number> | 当前生效的轨道序号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);
});
```
### seek<sup>9+</sup><a name=avplayer_seek></a>
seek(timeMs: number, mode?:SeekMode): void
......@@ -1604,6 +1723,49 @@ off(type: 'audioInterrupt'): void
avPlayer.off('audioInterrupt')
```
### on('trackChange')<sup>10+</sup><a name = trackchange_on></a>
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')<sup>10+</sup><a name = trackchange_off></a>
off(type: 'trackChange'): void
取消监听生效轨道变化事件。
**系统能力:** SystemCapability.Multimedia.Media.AVPlayer
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | --------------------------------------------------------- |
| type | string | 是 | 生效轨道变化事件回调类型,取消注册的事件:'trackChange'。 |
**示例:**
```js
avPlayer.off('trackChange')
```
## AVPlayerState<sup>9+</sup><a name = avplayerstate></a>
[AVPlayer](#avplayer9)的状态机,可通过state属性主动获取当前状态,也可通过监听[stateChange](#stateChange_on)事件上报当前状态,状态机之间的切换规则,可参考[音频播放开发指导](../../media/using-avplayer-for-playback.md)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册