媒體服務

2024-01-23 15:49 更新
說明

本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

媒體子系統(tǒng)為開發(fā)者提供一套簡單且易于理解的接口,使得開發(fā)者能夠方便接入系統(tǒng)并使用系統(tǒng)的媒體資源。

媒體子系統(tǒng)包含了音視頻相關(guān)媒體業(yè)務,提供以下常用功能:

導入模塊

  1. import media from '@ohos.multimedia.media';

media.createAVPlayer9+

createAVPlayer(callback: AsyncCallback<AVPlayer>): void

異步方式創(chuàng)建音視頻播放實例,通過注冊回調(diào)函數(shù)獲取返回值。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<AVPlayer>

回調(diào)函數(shù)。異步返回AVPlayer實例,失敗時返回null。可用于音視頻播放。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400101

No memory. Return by callback.

示例:

  1. let avPlayer;
  2. media.createAVPlayer((error, video) => {
  3. if (video != null) {
  4. avPlayer = video;
  5. console.info('createAVPlayer success');
  6. } else {
  7. console.error(`createAVPlayer fail, error message:${error.message}`);
  8. }
  9. });

media.createAVPlayer9+

createAVPlayer(): Promise<AVPlayer>

異步方式創(chuàng)建音視頻播放實例,通過Promise獲取返回值。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<AVPlayer>

Promise對象。異步返回AVPlayer實例,失敗時返回null??捎糜谝粢曨l播放。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400101

No memory. Return by promise.

示例:

  1. let avPlayer;
  2. media.createAVPlayer().then((video) => {
  3. if (video != null) {
  4. avPlayer = video;
  5. console.info('createAVPlayer success');
  6. } else {
  7. console.error('createAVPlayer fail');
  8. }
  9. }).catch((error) => {
  10. console.error(`AVPlayer catchCallback, error message:${error.message}`);
  11. });

media.createAVRecorder9+

createAVRecorder(callback: AsyncCallback<AVRecorder>): void

異步方式創(chuàng)建音視頻錄制實例。通過注冊回調(diào)函數(shù)獲取返回值。

一臺設備只允許創(chuàng)建一個錄制實例。

注意,使用相機進行視頻錄制時,需要與相機模塊配合,當前相機模塊僅對系統(tǒng)應用開放。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<AVRecorder>

回調(diào)函數(shù)。異步返回AVRecorder實例,失敗時返回null??捎糜阡浿埔粢曨l媒體。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400101

No memory. Return by callback.

示例:

  1. let avRecorder;
  2. media.createAVRecorder((error, recorder) => {
  3. if (recorder != null) {
  4. avRecorder = recorder;
  5. console.info('createAVRecorder success');
  6. } else {
  7. console.error(`createAVRecorder fail, error message:${error.message}`);
  8. }
  9. });

media.createAVRecorder9+

createAVRecorder(): Promise<AVRecorder>

異步方式創(chuàng)建音視頻錄制實例。通過Promise獲取返回值。

一臺設備只允許創(chuàng)建一個錄制實例。

注意,使用相機進行視頻錄制時,需要與相機模塊配合,當前相機模塊僅對系統(tǒng)應用開放。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<AVRecorder>

Promise對象。異步返回AVRecorder實例,失敗時返回null??捎糜阡浿埔粢曨l媒體。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400101

No memory. Return by promise.

示例:

  1. let avRecorder;
  2. media.createAVRecorder().then((recorder) => {
  3. if (recorder != null) {
  4. avRecorder = recorder;
  5. console.info('createAVRecorder success');
  6. } else {
  7. console.error('createAVRecorder fail');
  8. }
  9. }).catch((error) => {
  10. console.error(`createAVRecorder catchCallback, error message:${error.message}`);
  11. });

AVErrorCode9+

媒體錯誤碼類型枚舉

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

AVERR_OK

0

表示操作成功。

AVERR_NO_PERMISSION

201

表示無權(quán)限執(zhí)行此操作。

AVERR_INVALID_PARAMETER

401

表示傳入入?yún)o效。

AVERR_UNSUPPORT_CAPABILITY

801

表示當前版本不支持該API能力。

AVERR_NO_MEMORY

5400101

表示系統(tǒng)內(nèi)存不足或服務數(shù)量達到上限。

AVERR_OPERATE_NOT_PERMIT

5400102

表示當前狀態(tài)不允許或無權(quán)執(zhí)行此操作。

AVERR_IO

5400103

表示數(shù)據(jù)流異常信息。

AVERR_TIMEOUT

5400104

表示系統(tǒng)或網(wǎng)絡響應超時。

AVERR_SERVICE_DIED

5400105

表示服務進程死亡。

AVERR_UNSUPPORT_FORMAT

5400106

表示不支持當前媒體資源的格式。

MediaType8+

媒體類型枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

MEDIA_TYPE_AUD

0

表示音頻。

MEDIA_TYPE_VID

1

表示視頻。

CodecMimeType8+

Codec MIME類型枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

VIDEO_H263

'video/h263'

表示視頻/h263類型。

VIDEO_AVC

'video/avc'

表示視頻/avc類型。

VIDEO_MPEG2

'video/mpeg2'

表示視頻/mpeg2類型。

VIDEO_MPEG4

'video/mp4v-es'

表示視頻/mpeg4類型。

VIDEO_VP8

'video/x-vnd.on2.vp8'

表示視頻/vp8類型。

AUDIO_AAC

'audio/mp4a-latm'

表示音頻/mp4a-latm類型。

AUDIO_VORBIS

'audio/vorbis'

表示音頻/vorbis類型。

AUDIO_FLAC

'audio/flac'

表示音頻/flac類型。

MediaDescriptionKey8+

媒體信息描述枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

MD_KEY_TRACK_INDEX

'track_index'

表示軌道序號,其對應鍵值類型為number。

MD_KEY_TRACK_TYPE

'track_type'

表示軌道類型,其對應鍵值類型為number,參考MediaType。

MD_KEY_CODEC_MIME

'codec_mime'

表示codec_mime類型,其對應鍵值類型為string。

MD_KEY_DURATION

'duration'

表示媒體時長,其對應鍵值類型為number,單位為毫秒(ms)。

MD_KEY_BITRATE

'bitrate'

表示比特率,其對應鍵值類型為number,單位為比特率(bps)。

MD_KEY_WIDTH

'width'

表示視頻寬度,其對應鍵值類型為number,單位為像素(px)。

MD_KEY_HEIGHT

'height'

表示視頻高度,其對應鍵值類型為number,單位為像素(px)。

MD_KEY_FRAME_RATE

'frame_rate'

表示視頻幀率,其對應鍵值類型為number,單位為100幀每秒(100fps)。

MD_KEY_AUD_CHANNEL_COUNT

'channel_count'

表示聲道數(shù),其對應鍵值類型為number。

MD_KEY_AUD_SAMPLE_RATE

'sample_rate'

表示采樣率,其對應鍵值類型為number,單位為赫茲(Hz)。

BufferingInfoType8+

緩存事件類型枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

BUFFERING_START

1

表示開始緩存。

BUFFERING_END

2

表示結(jié)束緩存。

BUFFERING_PERCENT

3

表示緩存百分比。

CACHED_DURATION

4

表示緩存時長,單位為毫秒(ms)。

StateChangeReason9+

表示播放或錄制實例狀態(tài)機切換原因的枚舉,伴隨state一起上報。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

USER

1

表示用戶行為造成的狀態(tài)切換,由用戶或客戶端主動調(diào)用接口產(chǎn)生。

BACKGROUND

2

表示系統(tǒng)行為造成的狀態(tài)切換,比如應用未注冊播控中心權(quán)限,退到后臺時被系統(tǒng)強制暫停或停止。

AVPlayer9+

播放管理類,用于管理和播放媒體資源。在調(diào)用AVPlayer的方法前,需要先通過createAVPlayer()構(gòu)建一個AVPlayer實例。

Audio/Video播放demo可參考:音頻播放開發(fā)指導、視頻播放開發(fā)指導。

屬性

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

名稱

類型

可讀

可寫

說明

url9+

string

媒體URL,只允許在idle狀態(tài)下設置,靜態(tài)屬性。

支持的視頻格式(mp4、mpeg-ts、webm、mkv)。

支持的音頻格式(m4a、aac、mp3、ogg、wav)。

支持路徑示例

1. fd類型播放:fd://xx。

2. http網(wǎng)絡播放: http://xx。

3. https網(wǎng)絡播放: https://xx。

4. hls網(wǎng)絡播放路徑:http://xx或者https://xx。

fdSrc9+

AVFileDescriptor

媒體文件描述,只允許在idle狀態(tài)下設置,靜態(tài)屬性。

使用場景:應用中的媒體資源被連續(xù)存儲在同一個文件中。

使用示例

假設一個連續(xù)存儲的媒體文件:

視頻1(地址偏移:0,字節(jié)長度:100);

視頻2(地址偏移:101,字節(jié)長度:50);

視頻3(地址偏移:151,字節(jié)長度:150);

1. 播放視頻1:AVFileDescriptor { fd = 資源句柄; offset = 0; length = 100; }。

2. 播放視頻2:AVFileDescriptor { fd = 資源句柄; offset = 101; length = 50; }。

3. 播放視頻3:AVFileDescriptor { fd = 資源句柄; offset = 151; length = 150; }。

假設是一個獨立的媒體文件: 請使用src=fd://xx。

surfaceId9+

string

視頻窗口ID,默認無窗口,只允許在initialized狀態(tài)下設置,靜態(tài)屬性。

使用場景:視頻播放的窗口渲染,純音頻播放不用設置。

使用示例

通過Xcomponent創(chuàng)建surfaceId

loop9+

boolean

視頻循環(huán)播放屬性,默認'false',設置為'true'表示循環(huán)播放,動態(tài)屬性。

只允許在prepared/playing/paused/completed狀態(tài)下設置。

videoScaleType9+

VideoScaleType

視頻縮放模式,默認VIDEO_SCALE_TYPE_FIT_CROP,動態(tài)屬性。

只允許在prepared/playing/paused/completed狀態(tài)下設置。

audioInterruptMode9+

audio.InterruptMode

音頻焦點模型,默認SHARE_MODE,動態(tài)屬性。

只允許在prepared/playing/paused/completed狀態(tài)下設置。

state9+

AVPlayerState

音視頻播放的狀態(tài),全狀態(tài)有效,可查詢參數(shù)。

currentTime9+

number

視頻的當前播放位置,單位為毫秒(ms),可查詢參數(shù)。

返回為(-1)表示無效值,prepared/playing/paused/completed狀態(tài)下有效。

duration9+

number

視頻時長,單位為毫秒(ms),可查詢參數(shù)。

返回為(-1)表示無效值,prepared/playing/paused/completed狀態(tài)下有效。

直播場景默認返回(-1)。

width9+

number

視頻寬,單位為像素(px),可查詢參數(shù)。

返回為(0)表示無效值,prepared/playing/paused/completed狀態(tài)下有效。

height9+

number

視頻高,單位為像素(px),可查詢參數(shù)。

返回為(0)表示無效值,prepared/playing/paused/completed狀態(tài)下有效。

說明:

將資源句柄(fd)傳遞給媒體播放器之后,請不要通過該資源句柄做其他讀寫操作,包括但不限于將同一個資源句柄傳遞給多個媒體播放器。同一時間通過同一個資源句柄讀寫文件時存在競爭關(guān)系,將導致播放異常。

on('stateChange')9+

on(type: 'stateChange', callback: (state: AVPlayerState, reason: StateChangeReason) => void): void

監(jiān)聽播放狀態(tài)機AVPlayerState切換的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

狀態(tài)機切換事件回調(diào)類型,支持的事件:'stateChange',用戶操作和系統(tǒng)都會觸發(fā)此事件。

callback

function

狀態(tài)機切換事件回調(diào)方法:

state: AVPlayerState,表示當前播放狀態(tài);

reason: StateChangeReason,表示當前播放狀態(tài)的切換原因。

示例:

  1. avPlayer.on('stateChange', async (state, reason) => {
  2. switch (state) {
  3. case 'idle':
  4. console.info('state idle called')
  5. break;
  6. case 'initialized':
  7. console.info('initialized prepared called')
  8. break;
  9. case 'prepared':
  10. console.info('state prepared called')
  11. break;
  12. case 'playing':
  13. console.info('state playing called')
  14. break;
  15. case 'paused':
  16. console.info('state paused called')
  17. break;
  18. case 'completed':
  19. console.info('state completed called')
  20. break;
  21. case 'stopped':
  22. console.info('state stopped called')
  23. break;
  24. case 'released':
  25. console.info('state released called')
  26. break;
  27. case 'error':
  28. console.info('state error called')
  29. break;
  30. default:
  31. console.info('unkown state :' + state)
  32. break;
  33. }
  34. })

off('stateChange')9+

off(type: 'stateChange'): void

取消監(jiān)聽播放狀態(tài)機AVPlayerState切換的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

狀態(tài)機切換事件回調(diào)類型,取消注冊的事件:'stateChange'

示例:

  1. avPlayer.off('stateChange')

on('error')9+

on(type: 'error', callback: ErrorCallback): void

監(jiān)聽AVPlayer的錯誤事件,該事件僅用于錯誤提示,不需要用戶停止播控動作。如果此時AVPlayerState也切至error狀態(tài),用戶需要通過reset()或者release()退出播放操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錯誤事件回調(diào)類型,支持的事件:'error',用戶操作和系統(tǒng)都會觸發(fā)此事件。

callback

function

錯誤事件回調(diào)方法:使用播放器的過程中發(fā)生錯誤,會提供錯誤碼ID和錯誤信息。

AVPlayer回調(diào)的錯誤分類可以分為以下幾種:

錯誤碼ID

錯誤信息

說明

201

No Permission:

無權(quán)限執(zhí)行此操作,AVPlayerState會進入error狀態(tài)。

401

Invalid Parameter:

入?yún)㈠e誤,表示調(diào)用無效。

801

Unsupport Capability:

不支持該API能力,表示調(diào)用無效。

5400101

No Memory:

播放內(nèi)存不足,AVPlayerState會進入error狀態(tài)。

5400102

Operate Not Permit:

當前狀態(tài)機不支持此操作,表示調(diào)用無效。

5400103

IO Error:

播放中發(fā)現(xiàn)碼流異常,AVPlayerState會進入error狀態(tài)。

5400104

Network Timeout:

網(wǎng)絡原因超時響應,AVPlayerState會進入error狀態(tài)。

5400105

Service Died:

播放進程死亡,AVPlayerState會進入error狀態(tài),需要調(diào)用release后創(chuàng)建新實例。

5400106

Unsupport Format:

不支持的文件格式,AVPlayerState會進入error狀態(tài)。

示例:

  1. avPlayer.on('error', (error) => {
  2. console.error('error happened,and error message is :' + error.message)
  3. console.error('error happened,and error code is :' + error.code)
  4. })

off('error')9+

off(type: 'error'): void

取消監(jiān)聽播放的錯誤事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錯誤事件回調(diào)類型,取消注冊的事件:'error'

示例:

  1. avPlayer.off('error')

prepare9+

prepare(callback: AsyncCallback<void>): void

通過回調(diào)方式準備播放視頻,需在stateChange事件成功觸發(fā)至initialized狀態(tài)后,才能調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

準備播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

5400106

Unsupport format. Return by callback.

示例:

  1. avPlayer.prepare((err) => {
  2. if (err == null) {
  3. console.info('prepare success');
  4. } else {
  5. console.error('prepare filed,error message is :' + err.message)
  6. }
  7. })

prepare9+

prepare(): Promise<void>

通過Promise方式準備播放視頻,需在stateChange事件成功觸發(fā)至initialized狀態(tài)后,才能調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

準備播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

5400106

Unsupport format. Return by promise.

示例:

  1. avPlayer.prepare().then(() => {
  2. console.info('prepare success');
  3. }, (err) => {
  4. console.error('prepare filed,error message is :' + err.message)
  5. })

play9+

play(callback: AsyncCallback<void>): void

通過回調(diào)方式開始播放音視頻資源,只能在prepared/paused/complete狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

開始播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. avPlayer.play((err) => {
  2. if (err == null) {
  3. console.info('play success');
  4. } else {
  5. console.error('play filed,error message is :' + err.message)
  6. }
  7. })

play9+

play(): Promise<void>

通過Promise方式開始播放音視頻資源,只能在prepared/paused/complete狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

開始播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. avPlayer.play().then(() => {
  2. console.info('play success');
  3. }, (err) => {
  4. console.error('play filed,error message is :' + err.message)
  5. })

pause9+

pause(callback: AsyncCallback<void>): void

通過回調(diào)方式暫停播放音視頻資源,只能在playing狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

暫停播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. avPlayer.pause((err) => {
  2. if (err == null) {
  3. console.info('pause success');
  4. } else {
  5. console.error('pause filed,error message is :' + err.message)
  6. }
  7. })

pause9+

pause(): Promise<void>

通過Promise方式暫停播放音視頻資源,只能在playing狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

暫停播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. avPlayer.pause().then(() => {
  2. console.info('pause success');
  3. }, (err) => {
  4. console.error('pause filed,error message is :' + err.message)
  5. })

stop9+

stop(callback: AsyncCallback<void>): void

通過回調(diào)方式停止播放音視頻資源,只能在prepared/playing/paused/complete狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

停止播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. avPlayer.stop((err) => {
  2. if (err == null) {
  3. console.info('stop success');
  4. } else {
  5. console.error('stop filed,error message is :' + err.message)
  6. }
  7. })

stop9+

stop(): Promise<void>

通過Promise方式停止播放音視頻資源,只能在prepared/playing/paused/complete狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

停止播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. avPlayer.stop().then(() => {
  2. console.info('stop success');
  3. }, (err) => {
  4. console.error('stop filed,error message is :' + err.message)
  5. })

reset9+

reset(callback: AsyncCallback<void>): void

通過回調(diào)方式重置播放,只能在initialized/prepared/playing/paused/complete/stopped/error狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

重置播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. avPlayer.reset((err) => {
  2. if (err == null) {
  3. console.info('reset success');
  4. } else {
  5. console.error('reset filed,error message is :' + err.message)
  6. }
  7. })

reset9+

reset(): Promise<void>

通過Promise方式通過Promise方式重置播放,只能在initialized/prepared/playing/paused/complete/stopped/error狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

重置播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. avPlayer.reset().then(() => {
  2. console.info('reset success');
  3. }, (err) => {
  4. console.error('reset filed,error message is :' + err.message)
  5. })

release9+

release(callback: AsyncCallback<void>): void

通過回調(diào)方式銷毀播放資源,除released狀態(tài),都可以調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

function

銷毀播放的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. avPlayer.release((err) => {
  2. if (err == null) {
  3. console.info('reset success');
  4. } else {
  5. console.error('release filed,error message is :' + err.message)
  6. }
  7. })

release9+

release(): Promise<void>

通過Promise方式通過Promise方式銷毀播放,除released狀態(tài),都可以調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<void>

銷毀播放的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. avPlayer.release().then(() => {
  2. console.info('release success');
  3. }, (err) => {
  4. console.error('release filed,error message is :' + err.message)
  5. })

getTrackDescription9+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

通過回調(diào)方式獲取音視頻軌道信息,可以在prepared/playing/paused狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<MediaDescription>>

音視頻軌道信息MediaDescription數(shù)組回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by callback.

示例:

  1. function printfDescription(obj) {
  2. for (let item in obj) {
  3. let property = obj[item];
  4. console.info('audio key is ' + item);
  5. console.info('audio value is ' + property);
  6. }
  7. }
  8. avPlayer.getTrackDescription((error, arrList) => {
  9. if ((arrList) != null) {
  10. for (let i = 0; i < arrList.length; i++) {
  11. printfDescription(arrList[i]);
  12. }
  13. } else {
  14. console.log(`video getTrackDescription fail, error:${error}`);
  15. }
  16. });

getTrackDescription9+

getTrackDescription(): Promise<Array<MediaDescription>>

通過Promise方式獲取音視頻軌道信息,可以在prepared/playing/paused狀態(tài)調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

返回值:

類型

說明

Promise<Array<MediaDescription>>

音視頻軌道信息MediaDescription數(shù)組Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operation not allowed. Return by promise.

示例:

  1. let arrayDescription;
  2. function printfDescription(obj) {
  3. for (let item in obj) {
  4. let property = obj[item];
  5. console.info('audio key is ' + item);
  6. console.info('audio value is ' + property);
  7. }
  8. }
  9. avPlayer.getTrackDescription().then((arrList) => {
  10. if (arrList != null) {
  11. arrayDescription = arrList;
  12. } else {
  13. console.log('video getTrackDescription fail');
  14. }
  15. }).catch((error) => {
  16. console.info(`video catchCallback, error:${error}`);
  17. });
  18. for (let i = 0; i < arrayDescription.length; i++) {
  19. printfDescription(arrayDescription[i]);
  20. }

seek9+

seek(timeMs: number, mode?:SeekMode): void

跳轉(zhuǎn)到指定播放位置,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過seekDone事件確認是否生效。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

timeMs

number

指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍為[0, duration]。

mode

SeekMode

基于視頻I幀的跳轉(zhuǎn)模式,默認為SEEK_PREV_SYNC模式,僅在視頻資源播放時設置。

示例:

  1. let seekTime = 1000
  2. avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)

on('seekDone')9+

on(type: 'seekDone', callback: Callback<number>): void

監(jiān)聽seek生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

seek生效的事件回調(diào)類型,支持的事件:'seekDone',每次調(diào)用seek后都會回調(diào)此事件。

callback

Callback<number>

seek生效的事件回調(diào)方法,只會上報用戶請求的time位置。

視頻播放:SeekMode會造成實際跳轉(zhuǎn)位置與用戶設置產(chǎn)生偏差,精準位置需要通過currentTime獲取,事件回調(diào)的time僅代表完成用戶某一次請求。

示例:

  1. avPlayer.on('seekDone', (seekDoneTime:number) => {
  2. console.info('seekDone success,and seek time is:' + seekDoneTime)
  3. })

off('seekDone')9+

off(type: 'seekDone'): void

取消監(jiān)聽seek生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

seek生效的事件回調(diào)類型,取消注冊的事件:'seekDone'。

示例:

  1. avPlayer.off('seekDone')

setSpeed9+

setSpeed(speed: PlaybackSpeed): void

設置倍速模式,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過speedDone事件確認是否生效。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

speed

PlaybackSpeed

指定播放倍速模式。

示例:

  1. avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)

on('speedDone')9+

on(type: 'speedDone', callback: Callback<number>): void

監(jiān)聽setSpeed生效的事件

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setSpeed生效的事件回調(diào)類型,支持的事件:'speedDone',每次調(diào)用setSpeed后都會回調(diào)此事件。

callback

Callback<number>

setSpeed生效的事件回調(diào)方法,上報生效的倍速模式,具體見PlaybackSpeed。

示例:

  1. avPlayer.on('speedDone', (speed:number) => {
  2. console.info('speedDone success,and speed value is:' + speed)
  3. })

off('speedDone')9+

off(type: 'speedDone'): void

取消監(jiān)聽setSpeed生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setSpeed生效的事件回調(diào)類型,取消注冊的事件:'speedDone'。

示例:

  1. avPlayer.off('speedDone')

setBitrate9+

setBitrate(bitrate: number): void

選擇要播放的指定比特率,僅對HLS協(xié)議網(wǎng)絡流有效,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過bitrateDone事件確認是否生效。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

bitrate

number

指定比特率,可以通過availableBitrates事件獲得當前HLS協(xié)議流可用的比特率,如果用戶指定的比特率不在此列表中,則播放器將從可用比特率列表中選擇最小和最接近的比特率。

如果通過availableBitrates事件獲得的比特率列表長度為0,則不支持指定比特率,也不會產(chǎn)生bitrateDone回調(diào)。

示例:

  1. let bitrate = 96000
  2. avPlayer.setBitrate(bitrate)

on('bitrateDone')9+

on(type: 'bitrateDone', callback: Callback<number>): void

監(jiān)聽setBitrate生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setBitrate生效的事件回調(diào)類型,支持的事件:'bitrateDone',每次調(diào)用setBitrate后都會回調(diào)此事件。

callback

function

setBitrate生效的事件回調(diào)方法,上報生效的比特率。

示例:

  1. avPlayer.on('bitrateDone', (bitrate:number) => {
  2. console.info('bitrateDone success,and bitrate value is:' + bitrate)
  3. })

off('bitrateDone')9+

off(type: 'bitrateDone'): void

取消監(jiān)聽setBitrate生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setBitrate生效的事件回調(diào)類型,取消注冊的事件:'bitrateDone'。

示例:

  1. avPlayer.off('bitrateDone')

on('availableBitrates')9+

on(type: 'availableBitrates', callback: (bitrates: Array<number>) => void): void

監(jiān)聽HLS協(xié)議流可用的比特率列表,只會在切換prepared狀態(tài)后上報。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

HLS協(xié)議可用比特率上報事件回調(diào)類型,支持的事件:'availableBitrates',只會在prepared之后上報一次。

callback

function

HLS協(xié)議可用比特率上報事件回調(diào)方法,使用數(shù)組存放支持的比特率。如果數(shù)組長度為0,則不支持指定比特率。

示例:

  1. avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
  2. console.info('availableBitrates success,and availableBitrates length is:' + bitrates.length)
  3. })

off('availableBitrates')9+

off(type: 'availableBitrates'): void

取消監(jiān)聽HLS協(xié)議流可用的比特率列表。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

HLS協(xié)議可用比特率上報事件回調(diào)類型,取消注冊的事件:'availableBitrates'。

示例:

  1. avPlayer.off('availableBitrates')

setVolume9+

setVolume(volume: number): void

設置媒體播放音量,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過volumeChange事件確認是否生效。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

volume

number

指定的相對音量大小,取值范圍為[0.00-1.00],1表示最大音量,即100%。

示例:

  1. let volume = 1.0
  2. avPlayer.setVolume(volume)

on('volumeChange')9+

on(type: 'volumeChange', callback: Callback<number>): void

監(jiān)聽setVolume生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setVolume生效的事件回調(diào)類型,支持的事件:'volumeChange',每次調(diào)用setVolume后都會回調(diào)此事件。

callback

function

setVolume生效的事件回調(diào)方法,上報生效的媒體音量。

示例:

  1. avPlayer.on('volumeChange', (vol:number) => {
  2. console.info('volumeChange success,and new volume is :' + vol)
  3. })

off('volumeChange')9+

off(type: 'volumeChange'): void

取消監(jiān)聽setVolume生效的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

setVolume生效的事件回調(diào)類型,取消注冊的事件:'volumeChange'。

示例:

  1. avPlayer.off('volumeChange')

on('endOfStream')9+

on(type: 'endOfStream', callback: Callback<void>): void

監(jiān)聽資源播放至結(jié)尾的事件;如果用戶設置loop=1,播放會跳轉(zhuǎn)至開頭重播;如果用戶沒有設置loop,會通過stateChange上報completed狀態(tài)。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

資源播放至結(jié)尾的事件回調(diào)類型,支持的事件:'endOfStream',當播放至結(jié)尾時會上報此事件。

callback

Callback<void>

資源播放至結(jié)尾的事件回調(diào)方法。

示例:

  1. avPlayer.on('endOfStream', () => {
  2. console.info('endOfStream success')
  3. })

off('endOfStream')9+

off(type: 'endOfStream'): void

取消監(jiān)聽資源播放至結(jié)尾的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

資源播放至結(jié)尾的事件回調(diào)類型,取消注冊的事件:'endOfStream'。

示例:

  1. avPlayer.off('endOfStream')

on('timeUpdate')9+

on(type: 'timeUpdate', callback: Callback<number>): void

監(jiān)聽資源播放當前時間,單位為毫秒(ms),用于刷新進度條當前位置,默認間隔1s時間上報,因用戶操作(seek)產(chǎn)生的時間變化會立刻上報。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

時間更新的回調(diào)類型,支持的事件:'timeUpdate'。

callback

function

當前時間。

示例:

  1. avPlayer.on('timeUpdate', (time:number) => {
  2. console.info('timeUpdate success,and new time is :' + time)
  3. })

off('timeUpdate')9+

off(type: 'timeUpdate'): void

取消監(jiān)聽資源播放當前時間。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

時間更新的回調(diào)類型,取消注冊的事件:'timeUpdate'。

示例:

  1. avPlayer.off('timeUpdate')

on('durationUpdate')9+

on(type: 'durationUpdate', callback: Callback<number>): void

監(jiān)聽資源播放資源的時長,單位為毫秒(ms),用于刷新進度條長度,默認只在prepared上報一次,同時允許一些特殊碼流刷新多次時長。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

時長更新的回調(diào)類型,支持的事件:'durationUpdate'。

callback

function

資源時長。

示例:

  1. avPlayer.on('durationUpdate', (duration) => {
  2. console.info('durationUpdate success,new duration is :' + duration)
  3. })

off('durationUpdate')9+

off(type: 'durationUpdate'): void

取消監(jiān)聽資源播放資源的時長。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

時長更新的回調(diào)類型,取消注冊的事件:'durationUpdate'。

示例:

  1. avPlayer.off('durationUpdate')

on('bufferingUpdate')9+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

訂閱音視頻緩存更新事件,僅網(wǎng)絡播放支持該訂閱事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放緩存事件回調(diào)類型,支持的事件:'bufferingUpdate'。

callback

function

播放緩存事件回調(diào)方法。

BufferingInfoType為BUFFERING_PERCENT或CACHED_DURATION時,value值有效,否則固定為0。

示例:

  1. avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
  2. console.info('bufferingUpdate success,and infoType value is:' + infoType + ', value is :' + value)
  3. })

off('bufferingUpdate')9+

off(type: 'bufferingUpdate'): void

取消監(jiān)聽音視頻緩存更新事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放緩存事件回調(diào)類型,取消注冊的事件:'bufferingUpdate'。

示例:

  1. avPlayer.off('bufferingUpdate')

on('startRenderFrame')9+

on(type: 'startRenderFrame', callback: Callback<void>): void

訂閱視頻播放開始首幀渲染的更新事件,僅視頻播放支持該訂閱事件,該事件僅代表播放服務將第一幀畫面送顯示模塊,實際效果依賴顯示服務渲染性能。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放開始首幀渲染事件回調(diào)類型,支持的事件:'startRenderFrame'。

callback

Callback<void>

視頻播放開始首幀渲染事件回調(diào)方法。

示例:

  1. avPlayer.on('startRenderFrame', () => {
  2. console.info('startRenderFrame success')
  3. })

off('startRenderFrame')9+

off(type: 'startRenderFrame'): void

取消監(jiān)聽視頻播放開始首幀渲染的更新事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放開始首幀渲染事件回調(diào)類型,取消注冊的事件:'startRenderFrame'。

示例:

  1. avPlayer.off('startRenderFrame')

on('videoSizeChange')9+

on(type: 'videoSizeChange', callback: (width: number, height: number) => void): void

監(jiān)聽視頻播放寬高變化事件,僅視頻播放支持該訂閱事件,默認只在prepread狀態(tài)上報一次,但HLS協(xié)議碼流會在切換分辨率時上報;

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放寬高變化事件回調(diào)類型,支持的事件:'videoSizeChange'。

callback

function

視頻播放寬高變化事件回調(diào)方法,width表示寬,height表示高。

示例:

  1. avPlayer.on('videoSizeChange', (width: number, height: number) => {
  2. console.info('videoSizeChange success,and width is:' + width + ', height is :' + height)
  3. })

off('videoSizeChange')9+

off(type: 'videoSizeChange'): void

取消監(jiān)聽視頻播放寬高變化事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放寬高變化事件回調(diào)類型,取消注冊的事件:'videoSizeChange'。

示例:

  1. avPlayer.off('videoSizeChange')

on('audioInterrupt')9+

on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void

監(jiān)聽音頻焦點變化事件,多個音視頻資源同時播放時,會根據(jù)音頻焦點模型audio.InterruptMode觸發(fā)此事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

音頻焦點變化事件回調(diào)類型,支持的事件:'audioInterrupt'。

callback

audio.InterruptEvent9+

音頻焦點變化事件回調(diào)方法。

示例:

  1. import audio from '@ohos.multimedia.audio';
  2. avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
  3. console.info('audioInterrupt success,and InterruptEvent info is:' + info)
  4. })

off('audioInterrupt')9+

off(type: 'audioInterrupt'): void

取消監(jiān)聽音頻焦點變化事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

音頻焦點變化事件回調(diào)類型,取消注冊的事件:'audioInterrupt'。

示例:

  1. avPlayer.off('audioInterrupt')

AVPlayerState9+

AVPlayer的狀態(tài)機,可通過state屬性主動獲取當前狀態(tài),也可通過監(jiān)聽stateChange事件上報當前狀態(tài),狀態(tài)機之間的切換規(guī)則,可參考使用AVPlayer開發(fā)音頻播放功能。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer

名稱

類型

說明

idle

string

閑置狀態(tài),AVPlayer剛被創(chuàng)建createAVPlayer()或者調(diào)用了reset()方法之后,進入Idle狀態(tài)。

首次創(chuàng)建createAVPlayer(),所有屬性都為默認值。

調(diào)用reset()方法,url9+ 或 fdSrc9+屬性會被重置,其他用戶設置的屬性將被保留。

initialized

string

資源初始化,在Idle 狀態(tài)設置 url9+ 或 fdSrc9+屬性,AVPlayer會進入initialized狀態(tài),此時可以配置窗口、音頻等靜態(tài)屬性。

prepared

string

已準備狀態(tài),在initialized狀態(tài)調(diào)用prepare()方法,AVPlayer會進入prepared狀態(tài),此時播放引擎的資源已準備就緒。

playing

string

正在播放狀態(tài),在prepared/paused/completed狀態(tài)調(diào)用play()方法,AVPlayer會進入playing狀態(tài)。

paused

string

暫停狀態(tài),在playing狀態(tài)調(diào)用pause方法,AVPlayer會進入paused狀態(tài)。

completed

string

播放至結(jié)尾狀態(tài),當媒體資源播放至結(jié)尾時,如果用戶未設置循環(huán)播放(loop = 1),AVPlayer會進入completed狀態(tài),此時調(diào)用play()會進入playing狀態(tài)和重播,調(diào)用stop()會進入stopped狀態(tài)。

stopped

string

停止狀態(tài),在prepared/playing/paused/completed狀態(tài)調(diào)用stop()方法,AVPlayer會進入stopped狀態(tài),此時播放引擎只會保留屬性,但會釋放內(nèi)存資源,可以調(diào)用prepare()重新準備,也可以調(diào)用reset()重置,或者調(diào)用release()徹底銷毀。

released

string

銷毀狀態(tài),銷毀與當前AVPlayer關(guān)聯(lián)的播放引擎,無法再進行狀態(tài)轉(zhuǎn)換,調(diào)用release()方法后,會進入released狀態(tài),結(jié)束流程。

error

string

錯誤狀態(tài),當播放引擎發(fā)生不可逆的錯誤,詳見錯誤分類,則會轉(zhuǎn)換至當前狀態(tài),可以調(diào)用reset()重置,也可以調(diào)用release()銷毀重建。

注意: 區(qū)分error狀態(tài)和 on('error') :

1、進入error狀態(tài)時,會觸發(fā)on('error')監(jiān)聽事件,可以通過on('error')事件獲取詳細錯誤信息;

2、處于error狀態(tài)時,播放服務進入不可播控的狀態(tài),要求客戶端設計容錯機制,使用reset()重置或者release()銷毀重建;

3、如果客戶端收到on('error'),但未進入error狀態(tài):

原因1:客戶端未按狀態(tài)機調(diào)用API或傳入?yún)?shù)錯誤,被AVPlayer攔截提醒,需要客戶端調(diào)整代碼邏輯;

原因2:播放過程發(fā)現(xiàn)碼流問題,導致容器、解碼短暫異常,不影響連續(xù)播放和播控操作的,不需要客戶端設計容錯機制。

AVFileDescriptor9+

音視頻文件資源描述,一種特殊資源的播放方式,使用場景:應用中的音頻資源被連續(xù)存儲在同一個文件中,需要根據(jù)偏移量和長度進行播放。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

類型

必填

說明

fd

number

資源句柄,通過resourceManager.getRawFileDescriptor獲取。

offset

number

資源偏移量,需要基于預置資源的信息輸入,非法值會造成音視頻資源解析錯誤。

length

number

資源長度,需要基于預置資源的信息輸入,非法值會造成音視頻資源解析錯誤。

SeekMode8+

視頻播放的Seek模式枚舉,可通過seek方法作為參數(shù)傳遞下去。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

SEEK_NEXT_SYNC

0

表示跳轉(zhuǎn)到指定時間點的下一個關(guān)鍵幀,建議向后快進的時候用這個枚舉值。

SEEK_PREV_SYNC

1

表示跳轉(zhuǎn)到指定時間點的上一個關(guān)鍵幀,建議向前快進的時候用這個枚舉值。

PlaybackSpeed8+

視頻播放的倍速枚舉,可通過setSpeed方法作為參數(shù)傳遞下去。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

名稱

說明

SPEED_FORWARD_0_75_X

0

表示視頻播放正常播速的0.75倍。

SPEED_FORWARD_1_00_X

1

表示視頻播放正常播速。

SPEED_FORWARD_1_25_X

2

表示視頻播放正常播速的1.25倍。

SPEED_FORWARD_1_75_X

3

表示視頻播放正常播速的1.75倍。

SPEED_FORWARD_2_00_X

4

表示視頻播放正常播速的2.00倍。

VideoScaleType9+

枚舉,視頻縮放模式。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

名稱

說明

VIDEO_SCALE_TYPE_FIT

0

視頻拉伸至與窗口等大。

VIDEO_SCALE_TYPE_FIT_CROP

1

保持視頻寬高比拉伸至填滿窗口,內(nèi)容可能會有裁剪。

MediaDescription8+

通過key-value方式獲取媒體信息。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

示例:

  1. import media from '@ohos.multimedia.media'
  2. function printfItemDescription(obj, key) {
  3. let property = obj[key];
  4. console.info('audio key is ' + key); // 通過key值獲取對應的value。key值具體可見[MediaDescriptionKey]
  5. console.info('audio value is ' + property); //對應key值得value。其類型可為任意類型,具體key對應value的類型可參考[MediaDescriptionKey]
  6. }
  7. let audioPlayer = media.createAudioPlayer();
  8. audioPlayer.getTrackDescription((error, arrList) => {
  9. if (arrList != null) {
  10. for (let i = 0; i < arrList.length; i++) {
  11. printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE); //打印出每條軌道MD_KEY_TRACK_TYPE的值
  12. }
  13. } else {
  14. console.log(`audio getTrackDescription fail, error:${error}`);
  15. }
  16. });

AVRecorder9+

音視頻錄制管理類,用于音視頻媒體錄制。在調(diào)用AVRecorder的方法前,需要先通過createAVRecorder()構(gòu)建一個AVRecorder實例。

音視頻錄制demo可參考:使用AVRecorder開發(fā)音頻錄制功能

注意,使用相機進行視頻錄制時,需要與相機模塊配合,當前相機模塊僅對系統(tǒng)應用開放。

屬性

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

類型

可讀

可寫

說明

state9+

AVRecorderState

音視頻錄制的狀態(tài)。

prepare9+

prepare(config: AVRecorderConfig, callback: AsyncCallback<void>): void

異步方式進行音視頻錄制的參數(shù)設置。通過注冊回調(diào)函數(shù)獲取返回值。

需要權(quán)限: ohos.permission.MICROPHONE

不涉及音頻錄制時,可以不需要獲取ohos.permission.MICROPHONE權(quán)限。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

config

AVRecorderConfig

配置音視頻錄制的相關(guān)參數(shù)。

callback

AsyncCallback<void>

異步音視頻錄制prepare方法的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

201

Permission denied. Return by callback.

401

Parameter error. Return by callback.

5400102

Operate not permit. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. // 配置參數(shù)以實際硬件設備支持的范圍為準
  2. let AVRecorderProfile = {
  3. audioBitrate : 48000,
  4. audioChannels : 2,
  5. audioCodec : media.CodecMimeType.AUDIO_AAC,
  6. audioSampleRate : 48000,
  7. fileFormat : media.ContainerFormatType.CFT_MPEG_4,
  8. videoBitrate : 2000000,
  9. videoCodec : media.CodecMimeType.VIDEO_AVC,
  10. videoFrameWidth : 640,
  11. videoFrameHeight : 480,
  12. videoFrameRate : 30
  13. }
  14. let AVRecorderConfig = {
  15. audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  16. videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  17. profile : AVRecorderProfile,
  18. url : 'fd://', // 文件需先由調(diào)用者創(chuàng)建,賦予讀寫權(quán)限,將文件fd傳給此參數(shù),eg.fd://45
  19. rotation : 0, // 合理值0、90、180、270,非合理值prepare接口將報錯
  20. location : { latitude : 30, longitude : 130 }
  21. }
  22. avRecorder.prepare(AVRecorderConfig, (err) => {
  23. if (err == null) {
  24. console.info('prepare success');
  25. } else {
  26. console.error('prepare failed and error is ' + err.message);
  27. }
  28. })

prepare9+

prepare(config: AVRecorderConfig): Promise<void>

異步方式進行音視頻錄制的參數(shù)設置。通過Promise獲取返回值。

需要權(quán)限: ohos.permission.MICROPHONE

不涉及音頻錄制時,可以不需要獲ohos.permission.MICROPHONE權(quán)限。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorde

參數(shù):

參數(shù)名

類型

必填

說明

config

AVRecorderConfig

配置音視頻錄制的相關(guān)參數(shù)。

返回值:

類型

說明

Promise<void>

異步音視頻錄制prepare方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

201

Permission denied. Return by promise.

401

Parameter error. Return by promise.

5400102

Operate not permit. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. // 配置參數(shù)以實際硬件設備支持的范圍為準
  2. let AVRecorderProfile = {
  3. audioBitrate : 48000,
  4. audioChannels : 2,
  5. audioCodec : media.CodecMimeType.AUDIO_AAC,
  6. audioSampleRate : 48000,
  7. fileFormat : media.ContainerFormatType.CFT_MPEG_4,
  8. videoBitrate : 2000000,
  9. videoCodec : media.CodecMimeType.VIDEO_AVC,
  10. videoFrameWidth : 640,
  11. videoFrameHeight : 480,
  12. videoFrameRate : 30
  13. }
  14. let AVRecorderConfig = {
  15. audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
  16. videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
  17. profile : AVRecorderProfile,
  18. url : 'fd://', // 文件需先由調(diào)用者創(chuàng)建,賦予讀寫權(quán)限,將文件fd傳給此參數(shù),eg.fd://45
  19. rotation : 0, // 合理值0、90、180、270,非合理值prepare接口報錯
  20. location : { latitude : 30, longitude : 130 }
  21. }
  22. avRecorder.prepare(AVRecorderConfig).then(() => {
  23. console.info('prepare success');
  24. }).catch((err) => {
  25. console.error('prepare failed and catch error is ' + err.message);
  26. });

getInputSurface9+

getInputSurface(callback: AsyncCallback<string>): void

異步方式獲得錄制需要的surface。此surface提供給調(diào)用者,調(diào)用者從此surface中獲取surfaceBuffer,填入相應的視頻數(shù)據(jù)。

應當注意,填入的視頻數(shù)據(jù)需要攜帶時間戳(單位ns)和buffersize。時間戳的起始時間請以系統(tǒng)啟動時間為基準。

需在prepare()事件成功觸發(fā)后,才能調(diào)用getInputSurface()方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<string>

異步獲得surface的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by callback.

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. let surfaceID = null; // 該surfaceID用于傳遞給相機接口創(chuàng)造videoOutput
  2. avRecorder.getInputSurface((err, surfaceId) => {
  3. if (err == null) {
  4. console.info('getInputSurface success');
  5. surfaceID = surfaceId;
  6. } else {
  7. console.error('getInputSurface failed and error is ' + err.message);
  8. }
  9. });

getInputSurface9+

getInputSurface(): Promise<string>

異步方式獲得錄制需要的surface。此surface提供給調(diào)用者,調(diào)用者從此surface中獲取surfaceBuffer,填入相應的視頻數(shù)據(jù)。

應當注意,填入的視頻數(shù)據(jù)需要攜帶時間戳(單位ns)和buffersize。時間戳的起始時間請以系統(tǒng)啟動時間為基準。

需在prepare()事件成功觸發(fā)后,才能調(diào)用getInputSurface方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<string>

異步獲得surface的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by promise.

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. let surfaceID = null; // 該surfaceID用于傳遞給相機接口創(chuàng)造videoOutput
  2. avRecorder.getInputSurface().then((surfaceId) => {
  3. console.info('getInputSurface success');
  4. surfaceID = surfaceId;
  5. }).catch((err) => {
  6. console.error('getInputSurface failed and catch error is ' + err.message);
  7. });

start9+

start(callback: AsyncCallback<void>): void

異步方式開始視頻錄制。通過注冊回調(diào)函數(shù)獲取返回值。

純音頻錄制需在prepare()事件成功觸發(fā)后,才能調(diào)用start方法。純視頻錄制,音視頻錄制需在getInputSurface()事件成功觸發(fā)后,才能調(diào)用start方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步開始視頻錄制的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by callback.

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.start((err) => {
  2. if (err == null) {
  3. console.info('start AVRecorder success');
  4. } else {
  5. console.error('start AVRecorder failed and error is ' + err.message);
  6. }
  7. });

start9+

start(): Promise<void>

異步方式開始視頻錄制。通過Promise獲取返回值。

純音頻錄制需在prepare()事件成功觸發(fā)后,才能調(diào)用start方法。純視頻錄制,音視頻錄制需在getInputSurface()事件成功觸發(fā)后,才能調(diào)用start方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步開始視頻錄制方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by promise.

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. avRecorder.start().then(() => {
  2. console.info('start AVRecorder success');
  3. }).catch((err) => {
  4. console.error('start AVRecorder failed and catch error is ' + err.message);
  5. });

pause9+

pause(callback: AsyncCallback<void>): void

異步方式暫停視頻錄制。通過注冊回調(diào)函數(shù)獲取返回值。

需要start()事件成功觸發(fā)后,才能調(diào)用pause方法,可以通過調(diào)用resume()接口來恢復錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步獲得surface的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by callback.

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.pause((err) => {
  2. if (err == null) {
  3. console.info('pause AVRecorder success');
  4. } else {
  5. console.error('pause AVRecorder failed and error is ' + err.message);
  6. }
  7. });

pause9+

pause(): Promise<void>

異步方式暫停視頻錄制。通過Promise獲取返回值。

需要start()事件成功觸發(fā)后,才能調(diào)用pause方法,可以通過調(diào)用resume()接口來恢復錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步暫停視頻錄制方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by promise.

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. avRecorder.pause().then(() => {
  2. console.info('pause AVRecorder success');
  3. }).catch((err) => {
  4. console.error('pause AVRecorder failed and catch error is ' + err.message);
  5. });

resume9+

resume(callback: AsyncCallback<void>): void

異步方式恢復視頻錄制。通過注冊回調(diào)函數(shù)獲取返回值。

需要在pause()事件成功觸發(fā)后,才能調(diào)用resume方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步恢復視頻錄制的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by callback.

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.resume((err) => {
  2. if (err == null) {
  3. console.info('resume AVRecorder success');
  4. } else {
  5. console.error('resume AVRecorder failed and error is ' + err.message);
  6. }
  7. });

resume9+

resume(): Promise<void>

異步方式恢復視頻錄制。通過Promise獲取返回值。

需要在pause()事件成功觸發(fā)后,才能調(diào)用resume方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步恢復視頻錄制方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by promise.

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. avRecorder.resume().then(() => {
  2. console.info('resume AVRecorder success');
  3. }).catch((err) => {
  4. console.error('resume AVRecorder failed and catch error is ' + err.message);
  5. });

stop9+

stop(callback: AsyncCallback<void>): void

異步方式停止視頻錄制。通過注冊回調(diào)函數(shù)獲取返回值。

需要在start()或pause()事件成功觸發(fā)后,才能調(diào)用stop方法。

純音頻錄制時,需要重新調(diào)用prepare()接口才能重新錄制。純視頻錄制,音視頻錄制時,需要重新調(diào)用prepare()和getInputSurface()接口才能重新錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步停止視頻錄制的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by callback.

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.stop((err) => {
  2. if (err == null) {
  3. console.info('stop AVRecorder success');
  4. } else {
  5. console.error('stop AVRecorder failed and error is ' + err.message);
  6. }
  7. });

stop9+

stop(): Promise<void>

異步方式停止視頻錄制。通過Promise獲取返回值。

需要在start()或pause()事件成功觸發(fā)后,才能調(diào)用stop方法。

純音頻錄制時,需要重新調(diào)用prepare()接口才能重新錄制。純視頻錄制,音視頻錄制時,需要重新調(diào)用prepare()和getInputSurface()接口才能重新錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步停止視頻錄制方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400102

Operate not permit. Return by promise.

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. avRecorder.stop().then(() => {
  2. console.info('stop AVRecorder success');
  3. }).catch((err) => {
  4. console.error('stop AVRecorder failed and catch error is ' + err.message);
  5. });

reset9+

reset(callback: AsyncCallback<void>): void

異步方式重置音視頻錄制。通過注冊回調(diào)函數(shù)獲取返回值。

純音頻錄制時,需要重新調(diào)用prepare()接口才能重新錄制。純視頻錄制,音視頻錄制時,需要重新調(diào)用prepare()和getInputSurface()接口才能重新錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步重置音視頻錄制的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.reset((err) => {
  2. if (err == null) {
  3. console.info('reset AVRecorder success');
  4. } else {
  5. console.error('reset AVRecorder failed and error is ' + err.message);
  6. }
  7. });

reset9+

reset(): Promise<void>

異步方式重置音視頻錄制。通過Promise獲取返回值。

純音頻錄制時,需要重新調(diào)用prepare()接口才能重新錄制。純視頻錄制,音視頻錄制時,需要重新調(diào)用prepare()和getInputSurface()接口才能重新錄制。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步重置音視頻錄制方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼

錯誤碼ID

錯誤信息

5400103

IO error. Return by promise.

5400105

Service died. Return by promise.

示例:

  1. avRecorder.reset().then(() => {
  2. console.info('reset AVRecorder success');
  3. }).catch((err) => {
  4. console.error('reset AVRecorder failed and catch error is ' + err.message);
  5. });

release9+

release(callback: AsyncCallback<void>): void

異步方式釋放音視頻錄制資源。通過注冊回調(diào)函數(shù)獲取返回值。

釋放音視頻錄制資源之后,該AVRecorder實例不能再進行任何操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

異步釋放音視頻錄制資源的回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400105

Service died. Return by callback.

示例:

  1. avRecorder.release((err) => {
  2. if (err == null) {
  3. console.info('release AVRecorder success');
  4. } else {
  5. console.error('release AVRecorder failed and error is ' + err.message);
  6. }
  7. });

release9+

release(): Promise<void>

異步方式釋放音視頻錄制資源。通過Promise獲取返回值。

釋放音視頻錄制資源之后,該AVRecorder實例不能再進行任何操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

返回值:

類型

說明

Promise<void>

異步釋放音視頻錄制資源方法的Promise返回值。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400105

Service died. Return by callback.

示例:

  1. avRecorder.release().then(() => {
  2. console.info('release AVRecorder success');
  3. }).catch((err) => {
  4. console.error('release AVRecorder failed and catch error is ' + err.message);
  5. });

on('stateChange')9+

on(type: 'stateChange', callback: (state: AVRecorderState, reason: StateChangeReason) => void): void

訂閱錄制狀態(tài)機AVRecorderState切換的事件,當 AVRecorderState狀態(tài)機發(fā)生變化時,會通過訂閱的回調(diào)方法通知用戶。用戶只能訂閱一個狀態(tài)機切換事件的回調(diào)方法,當用戶重復訂閱時,以最后一次訂閱的回調(diào)接口為準。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

狀態(tài)機切換事件回調(diào)類型,支持的事件:'stateChange',用戶操作和系統(tǒng)都會觸發(fā)此事件。

callback

function

狀態(tài)機切換事件回調(diào)方法:

state: AVRecorderState,表示當前播放狀態(tài) ;

reason: StateChangeReason,表示當前播放狀態(tài)的切換原因。

示例:

  1. avRecorder.on('stateChange', async (state, reason) => {
  2. console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
  3. });

off('stateChange')9+

off(type: 'stateChange'): void

取消訂閱播放狀態(tài)機AVRecorderState切換的事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

狀態(tài)機切換事件回調(diào)類型,支持的事件:'stateChange',用戶操作和系統(tǒng)都會觸發(fā)此事件。

示例:

  1. avRecorder.off('stateChange');

on('error')9+

on(type: 'error', callback: ErrorCallback): void

訂閱AVRecorder的錯誤事件,該事件僅用于錯誤提示,不需要用戶停止播控動作。如果此時AVRecorderState也切至error狀態(tài),用戶需要通過reset()或者release()退出錄制操作。

用戶只能訂閱一個錯誤事件的回調(diào)方法,當用戶重復訂閱時,以最后一次訂閱的回調(diào)接口為準。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錄制錯誤事件回調(diào)類型'error'。

- 'error':錄制過程中發(fā)生錯誤,觸發(fā)該事件。

callback

ErrorCallback

錄制錯誤事件回調(diào)方法。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.on('error', (err) => {
  2. console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
  3. });

off('error')9+

off(type: 'error'): void

取消訂閱錄制錯誤事件,取消后不再接收到AVRecorder的錯誤事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錄制錯誤事件回調(diào)類型'error'。

- 'error':錄制過程中發(fā)生錯誤,觸發(fā)該事件。

錯誤碼:

以下錯誤碼的詳細介紹請參見媒體錯誤碼。

錯誤碼ID

錯誤信息

5400103

IO error. Return by callback.

5400105

Service died. Return by callback.

示例:

  1. avRecorder.off('error');

AVRecorderState9+

音視頻錄制的狀態(tài)機??赏ㄟ^state屬性獲取當前狀態(tài)。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

類型

說明

idle

string

閑置狀態(tài)。此時可以調(diào)用prepare()方法設置錄制參數(shù),進入prepared狀態(tài)。AVRecorder剛被創(chuàng)建,或者在任何非released狀態(tài)下調(diào)用reset()方法,均進入idle狀態(tài)。

prepared

string

參數(shù)設置完成。此時可以調(diào)用start()方法開始錄制,進入started狀態(tài)。

started

string

正在錄制。此時可以調(diào)用pause()方法暫停錄制,進入paused狀態(tài)。也可以調(diào)用stop()方法結(jié)束錄制,進入stopped狀態(tài)。

paused

string

錄制暫停。此時可以調(diào)用resume()方法繼續(xù)錄制,進入started狀態(tài)。也可以調(diào)用stop()方法結(jié)束錄制,進入stopped狀態(tài)。

stopped

string

錄制停止。此時可以調(diào)用prepare()方法設置錄制參數(shù),重新進入prepared狀態(tài)。

released

string

錄制資源釋放。此時不能再進行任何操作。在任何其他狀態(tài)下,均可以通過調(diào)用release()方法進入released狀態(tài)。

error

string

錯誤狀態(tài)。當AVRecorder實例發(fā)生不可逆錯誤,會轉(zhuǎn)換至當前狀態(tài)。切換至error狀態(tài)時會伴隨on('error')事件,該事件會上報詳細錯誤原因。在error狀態(tài)時,用戶需要調(diào)用reset()方法重置AVRecorder實例,或者調(diào)用release()方法釋放資源。

AVRecorderConfig9+

表示音視頻錄制的參數(shù)設置。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

類型

必填

說明

audioSourceType

AudioSourceType

選擇錄制的音頻源類型。選擇音頻錄制時必填。

videoSourceType

VideoSourceType

選擇錄制的視頻源類型。選擇視頻錄制時必填。

profile

AVRecorderProfile

錄制的profile,必要參數(shù)。

url

string

錄制輸出URL:fd://xx (fd number) ,必要參數(shù)。

rotation

number

錄制的視頻旋轉(zhuǎn)角度,僅支持0,90,180,270,默認值為0。

location

Location

錄制的地理位置,默認不記錄地理位置信息。

通過audioSourceType和videoSourceType區(qū)分純音頻錄制、純視頻錄制或音視頻錄制。純音頻錄制時,僅需要設置audioSourceType;純視頻錄制時,僅需要設置videoSourceType;音視頻錄制時,audioSourceType和videoSourceType均需要設置。

AVRecorderProfile9+

音視頻錄制的配置文件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

類型

必填

說明

audioBitrate

number

音頻編碼比特率,選擇音頻錄制時必填。

audioChannels

number

音頻采集聲道數(shù),選擇音頻錄制時必填。

audioCodec

CodecMimeType

音頻編碼格式,選擇音頻錄制時必填。當前僅支持AUDIO_AAC。

audioSampleRate

number

音頻采樣率,選擇音頻錄制時必填。

fileFormat

ContainerFormatType

文件的容器格式,必要參數(shù)。

videoBitrate

number

視頻編碼比特率,選擇視頻錄制時必填。

videoCodec

CodecMimeType

視頻編碼格式,選擇視頻錄制時必填。需要查詢設備支持的編碼能力(包括編碼格式,分辨率大小等)。

videoFrameWidth

number

視頻幀的寬,選擇視頻錄制時必填。

videoFrameHeight

number

視頻幀的高,選擇視頻錄制時必填。

videoFrameRate

number

視頻幀率,選擇視頻錄制時必填。

AudioSourceType9+

表示視頻錄制中音頻源類型的枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

說明

AUDIO_SOURCE_TYPE_DEFAULT

0

默認的音頻輸入源類型。

AUDIO_SOURCE_TYPE_MIC

1

表示MIC的音頻輸入源。

VideoSourceType9+

表示視頻錄制中視頻源類型的枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder

名稱

說明

VIDEO_SOURCE_TYPE_SURFACE_YUV

0

輸入surface中攜帶的是raw data。

VIDEO_SOURCE_TYPE_SURFACE_ES

1

輸入surface中攜帶的是ES data。

ContainerFormatType8+

表示容器格式類型的枚舉,縮寫為CFT。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

CFT_MPEG_4

'mp4'

視頻的容器格式,MP4。

CFT_MPEG_4A

'm4a'

音頻的容器格式,M4A。

Location

視頻錄制的地理位置。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

類型

必填

說明

latitude

number

地理位置的緯度。

longitude

number

地理位置的經(jīng)度。

media.createAudioPlayer(deprecated)

createAudioPlayer(): AudioPlayer

同步方式創(chuàng)建音頻播放實例。

說明

從API version 6開始支持,從API version 9開始廢棄,建議使用createAVPlayer替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

返回值:

類型

說明

AudioPlayer

返回AudioPlayer類實例,失敗時返回null??捎糜谝纛l播放、暫停、停止等操作。

示例:

  1. let audioPlayer = media.createAudioPlayer();

media.createVideoPlayer(deprecated)

createVideoPlayer(callback: AsyncCallback<VideoPlayer>): void

異步方式創(chuàng)建視頻播放實例,通過注冊回調(diào)函數(shù)獲取返回值。

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用createAVPlayer替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<VideoPlayer>

回調(diào)函數(shù)。異步返回VideoPlayer實例,失敗時返回null??捎糜诠芾砗筒シ乓曨l媒體。

示例:

  1. let videoPlayer;
  2. media.createVideoPlayer((error, video) => {
  3. if (video != null) {
  4. videoPlayer = video;
  5. console.info('video createVideoPlayer success');
  6. } else {
  7. console.error(`video createVideoPlayer fail, error:${error}`);
  8. }
  9. });

media.createVideoPlayer(deprecated)

createVideoPlayer(): Promise<VideoPlayer>

異步方式創(chuàng)建視頻播放實例,通過Promise獲取返回值。

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用createAVPlayer替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<VideoPlayer>

Promise對象。異步返回VideoPlayer實例,失敗時返回null??捎糜诠芾砗筒シ乓曨l媒體。

示例:

  1. let videoPlayer;
  2. media.createVideoPlayer().then((video) => {
  3. if (video != null) {
  4. videoPlayer = video;
  5. console.info('video createVideoPlayer success');
  6. } else {
  7. console.info('video createVideoPlayer fail');
  8. }
  9. }).catch((error) => {
  10. console.error(`video catchCallback, error:${error}`);
  11. });

media.createAudioRecorder(deprecated)

createAudioRecorder(): AudioRecorder

創(chuàng)建音頻錄制的實例來控制音頻的錄制。

一臺設備只允許創(chuàng)建一個錄制實例。

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用createAVRecorder替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

返回值:

類型

說明

AudioRecorder

返回AudioRecorder類實例,失敗時返回null??捎糜阡浿埔纛l媒體。

示例:

  1. let audioRecorder = media.createAudioRecorder();

MediaErrorCode(deprecated)

媒體服務錯誤類型枚舉。

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用媒體錯誤碼替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.Core

名稱

說明

MSERR_OK

0

表示操作成功。

MSERR_NO_MEMORY

1

表示申請內(nèi)存失敗,系統(tǒng)可能無可用內(nèi)存。

MSERR_OPERATION_NOT_PERMIT

2

表示無權(quán)限執(zhí)行此操作。

MSERR_INVALID_VAL

3

表示傳入入?yún)o效。

MSERR_IO

4

表示發(fā)生IO錯誤。

MSERR_TIMEOUT

5

表示操作超時。

MSERR_UNKNOWN

6

表示未知錯誤。

MSERR_SERVICE_DIED

7

表示服務端失效。

MSERR_INVALID_STATE

8

表示在當前狀態(tài)下,不允許執(zhí)行此操作。

MSERR_UNSUPPORTED

9

表示在當前版本下,不支持此操作。

AudioPlayer(deprecated)

說明

從API version 6開始支持,從API version 9開始廢棄,建議使用AVPlayer替代。

音頻播放管理類,用于管理和播放音頻媒體。在調(diào)用AudioPlayer的方法前,需要先通過createAudioPlayer()構(gòu)建一個AudioPlayer實例。

屬性

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

名稱

類型

可讀

可寫

說明

src

string

音頻媒體URI,支持當前主流的音頻格式(m4a、aac、mp3、ogg、wav)。

支持路徑示例

1. fd類型播放:fd://xx

2. http網(wǎng)絡播放: http://xx

3. https網(wǎng)絡播放: https://xx

4. hls網(wǎng)絡播放路徑:http://xx或者https://xx

需要權(quán)限: ohos.permission.READ_MEDIA 或 ohos.permission.INTERNET。

fdSrc9+

AVFileDescriptor

音頻媒體文件描述,使用場景:應用中的音頻資源被連續(xù)存儲在同一個文件中。

使用示例

假設一個連續(xù)存儲的音樂文件:

音樂1(地址偏移:0,字節(jié)長度:100)

音樂2(地址偏移:101,字節(jié)長度:50)

音樂3(地址偏移:151,字節(jié)長度:150)

1. 播放音樂1:AVFileDescriptor { fd = 資源句柄; offset = 0; length = 100; }

2. 播放音樂2:AVFileDescriptor { fd = 資源句柄; offset = 101; length = 50; }

3. 播放音樂3:AVFileDescriptor { fd = 資源句柄; offset = 151; length = 150; }

假設是一個獨立的音樂文件: 請使用src=fd://xx

loop

boolean

音頻循環(huán)播放屬性,設置為'true'表示循環(huán)播放。

audioInterruptMode9+

audio.InterruptMode

音頻焦點模型。

currentTime

number

音頻的當前播放位置,單位為毫秒(ms)。

duration

number

音頻時長,單位為毫秒(ms)。

state

AudioState

可以查詢音頻播放的狀態(tài),該狀態(tài)不可作為調(diào)用play/pause/stop等狀態(tài)切換的觸發(fā)條件。

play

play(): void

開始播放音頻資源,需在dataLoad事件成功觸發(fā)后,才能調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

  1. audioPlayer.on('play', () => { //設置'play'事件回調(diào)
  2. console.log('audio play success');
  3. });
  4. audioPlayer.play();

pause

pause(): void

暫停播放音頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

  1. audioPlayer.on('pause', () => { //設置'pause'事件回調(diào)
  2. console.log('audio pause success');
  3. });
  4. audioPlayer.pause();

stop

stop(): void

停止播放音頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

  1. audioPlayer.on('stop', () => { //設置'stop'事件回調(diào)
  2. console.log('audio stop success');
  3. });
  4. audioPlayer.stop();

reset7+

reset(): void

重置播放音頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

  1. audioPlayer.on('reset', () => { //設置'reset'事件回調(diào)
  2. console.log('audio reset success');
  3. });
  4. audioPlayer.reset();

seek

seek(timeMs: number): void

跳轉(zhuǎn)到指定播放位置。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

timeMs

number

指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍[0, duration]。

示例:

  1. audioPlayer.on('timeUpdate', (seekDoneTime) => { //設置'timeUpdate'事件回調(diào)
  2. if (seekDoneTime == null) {
  3. console.info('audio seek fail');
  4. return;
  5. }
  6. console.log('audio seek success. seekDoneTime: ' + seekDoneTime);
  7. });
  8. audioPlayer.seek(30000); //seek到30000ms的位置

setVolume

setVolume(vol: number): void

設置音量。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

vol

number

指定的相對音量大小,取值范圍為[0.00-1.00],1表示最大音量,即100%。

示例:

  1. audioPlayer.on('volumeChange', () => { //設置'volumeChange'事件回調(diào)
  2. console.log('audio volumeChange success');
  3. });
  4. audioPlayer.setVolume(1); //設置音量到100%

release

release(): void

釋放音頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

示例:

  1. audioPlayer.release();
  2. audioPlayer = undefined;

getTrackDescription8+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

通過回調(diào)方式獲取音頻軌道信息。需在dataLoad事件成功觸發(fā)后,才能調(diào)用。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<MediaDescription>>

音頻軌道信息MediaDescription數(shù)組回調(diào)方法。

示例:

  1. function printfDescription(obj) {
  2. for (let item in obj) {
  3. let property = obj[item];
  4. console.info('audio key is ' + item);
  5. console.info('audio value is ' + property);
  6. }
  7. }
  8. audioPlayer.getTrackDescription((error, arrList) => {
  9. if (arrList != null) {
  10. for (let i = 0; i < arrList.length; i++) {
  11. printfDescription(arrList[i]);
  12. }
  13. } else {
  14. console.log(`audio getTrackDescription fail, error:${error}`);
  15. }
  16. });

getTrackDescription8+

getTrackDescription(): Promise<Array<MediaDescription>>

通過Promise方式獲取音頻軌道信息。需在dataLoad事件成功觸發(fā)后,才能調(diào)用

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

返回值:

類型

說明

Promise<Array<MediaDescription>>

音頻軌道信息MediaDescription數(shù)組Promise返回值。

示例:

  1. function printfDescription(obj) {
  2. for (let item in obj) {
  3. let property = obj[item];
  4. console.info('audio key is ' + item);
  5. console.info('audio value is ' + property);
  6. }
  7. }
  8. let arrayDescription = null
  9. audioPlayer.getTrackDescription().then((arrList) => {
  10. if (arrList != null) {
  11. arrayDescription = arrList;
  12. } else {
  13. console.log('audio getTrackDescription fail');
  14. }
  15. }).catch((error) => {
  16. console.info(`audio catchCallback, error:${error}`);
  17. });
  18. for (let i = 0; i < arrayDescription.length; i++) {
  19. printfDescription(arrayDescription[i]);
  20. }

on('bufferingUpdate')8+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

開始訂閱音頻緩存更新事件。僅網(wǎng)絡播放支持該訂閱事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

音頻緩存事件回調(diào)類型,支持的事件:'bufferingUpdate'。

callback

function

音頻緩存事件回調(diào)方法。

BufferingInfoType為BUFFERING_PERCENT或CACHED_DURATION時,value值有效,否則固定為0。

示例:

  1. audioPlayer.on('bufferingUpdate', (infoType, value) => {
  2. console.log('audio bufferingInfo type: ' + infoType);
  3. console.log('audio bufferingInfo value: ' + value);
  4. });

on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')

on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void

開始訂閱音頻播放事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放事件回調(diào)類型,支持的事件包括:'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange'。

- 'play':完成play()調(diào)用,音頻開始播放,觸發(fā)該事件。

- 'pause':完成pause()調(diào)用,音頻暫停播放,觸發(fā)該事件。

- 'stop':完成stop()調(diào)用,音頻停止播放,觸發(fā)該事件。

- 'reset':完成reset()調(diào)用,播放器重置,觸發(fā)該事件。

- 'dataLoad':完成音頻數(shù)據(jù)加載后觸發(fā)該事件,即src屬性設置完成后觸發(fā)該事件。

- 'finish':完成音頻播放后觸發(fā)該事件。

- 'volumeChange':完成setVolume()調(diào)用,播放音量改變后觸發(fā)該事件。

callback

() => void

播放事件回調(diào)方法。

示例:

  1. import fs from '@ohos.file.fs';
  2. let audioPlayer = media.createAudioPlayer(); //創(chuàng)建一個音頻播放實例
  3. audioPlayer.on('dataLoad', () => { //設置'dataLoad'事件回調(diào),src屬性設置成功后,觸發(fā)此回調(diào)
  4. console.info('audio set source success');
  5. audioPlayer.play(); //開始播放,并觸發(fā)'play'事件回調(diào)
  6. });
  7. audioPlayer.on('play', () => { //設置'play'事件回調(diào)
  8. console.info('audio play success');
  9. audioPlayer.seek(30000); //調(diào)用seek方法,并觸發(fā)'timeUpdate'事件回調(diào)
  10. });
  11. audioPlayer.on('pause', () => { //設置'pause'事件回調(diào)
  12. console.info('audio pause success');
  13. audioPlayer.stop(); //停止播放,并觸發(fā)'stop'事件回調(diào)
  14. });
  15. audioPlayer.on('reset', () => { //設置'reset'事件回調(diào)
  16. console.info('audio reset success');
  17. audioPlayer.release(); //釋放播放實例資源
  18. audioPlayer = undefined;
  19. });
  20. audioPlayer.on('timeUpdate', (seekDoneTime) => { //設置'timeUpdate'事件回調(diào)
  21. if (seekDoneTime == null) {
  22. console.info('audio seek fail');
  23. return;
  24. }
  25. console.info('audio seek success, and seek time is ' + seekDoneTime);
  26. audioPlayer.setVolume(0.5); //設置音量為50%,并觸發(fā)'volumeChange'事件回調(diào)
  27. });
  28. audioPlayer.on('volumeChange', () => { //設置'volumeChange'事件回調(diào)
  29. console.info('audio volumeChange success');
  30. audioPlayer.pause(); //暫停播放,并觸發(fā)'pause'事件回調(diào)
  31. });
  32. audioPlayer.on('finish', () => { //設置'finish'事件回調(diào)
  33. console.info('audio play finish');
  34. audioPlayer.stop(); //停止播放,并觸發(fā)'stop'事件回調(diào)
  35. });
  36. audioPlayer.on('error', (error) => { //設置'error'事件回調(diào)
  37. console.error(`audio error called, error: ${error}`);
  38. });
  39. // 用戶選擇音頻設置fd(本地播放)
  40. let fdPath = 'fd://';
  41. // path路徑的碼流可通過"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,將其推送到設備上
  42. let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
  43. fs.open(path).then((file) => {
  44. fdPath = fdPath + '' + file.fd;
  45. console.info('open fd success fd is' + fdPath);
  46. audioPlayer.src = fdPath; //設置src屬性,并觸發(fā)'dataLoad'事件回調(diào)
  47. }, (err) => {
  48. console.info('open fd failed err is' + err);
  49. }).catch((err) => {
  50. console.info('open fd failed err is' + err);
  51. });

on('timeUpdate')

on(type: 'timeUpdate', callback: Callback<number>): void

開始訂閱音頻播放時間更新事件。處于播放狀態(tài)時,每隔1s上報一次該事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放事件回調(diào)類型,支持的事件包括:'timeUpdate'。

- 'timeUpdate':音頻播放時間戳更新,開始播放后自動觸發(fā)該事件。

callback

Callback<number>

播放事件回調(diào)方法?;卣{(diào)方法入?yún)楦潞蟮臅r間戳。

示例:

  1. audioPlayer.on('timeUpdate', (newTime) => { //設置'timeUpdate'事件回調(diào)
  2. if (newTime == null) {
  3. console.info('audio timeUpadate fail');
  4. return;
  5. }
  6. console.log('audio timeUpadate success. seekDoneTime: ' + newTime);
  7. });
  8. audioPlayer.play(); //開始播放后,自動觸發(fā)時間戳更新事件

on('error')

on(type: 'error', callback: ErrorCallback): void

開始訂閱音頻播放錯誤事件,當上報error錯誤事件后,用戶需處理error事件,退出播放操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放錯誤事件回調(diào)類型,支持的事件包括:'error'。

- 'error':音頻播放中發(fā)生錯誤,觸發(fā)該事件。

callback

ErrorCallback

播放錯誤事件回調(diào)方法。

示例:

  1. audioPlayer.on('error', (error) => { //設置'error'事件回調(diào)
  2. console.error(`audio error called, error: ${error}`);
  3. });
  4. audioPlayer.setVolume(3); //設置volume為無效值,觸發(fā)'error'事件

AudioState(deprecated)

音頻播放的狀態(tài)機??赏ㄟ^state屬性獲取當前狀態(tài)。

說明

從API version 6開始支持,從API version 9開始廢棄,建議使用AVPlayerState替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer

名稱

類型

說明

idle

string

音頻播放空閑,dataload/reset成功后處于此狀態(tài)。

playing

string

音頻正在播放,play成功后處于此狀態(tài)。

paused

string

音頻暫停播放,pause成功后處于此狀態(tài)。

stopped

string

音頻播放停止,stop/播放結(jié)束后處于此狀態(tài)。

error

string

錯誤狀態(tài)。

VideoPlayer(deprecated)

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用AVPlayer替代。

視頻播放管理類,用于管理和播放視頻媒體。在調(diào)用VideoPlayer的方法前,需要先通過createVideoPlayer()構(gòu)建一個VideoPlayer實例。

屬性

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

名稱

類型

可讀

可寫

說明

url8+

string

視頻媒體URL,支持當前主流的視頻格式(mp4、mpeg-ts、webm、mkv)。

支持路徑示例

1. fd類型播放:fd://xx

2. http網(wǎng)絡播放: http://xx

3. https網(wǎng)絡播放: https://xx

4. hls網(wǎng)絡播放路徑:http://xx或者https://xx

fdSrc9+

AVFileDescriptor

視頻媒體文件描述,使用場景:應用中的視頻資源被連續(xù)存儲在同一個文件中。

使用示例

假設一個連續(xù)存儲的音樂文件:

視頻1(地址偏移:0,字節(jié)長度:100)

視頻2(地址偏移:101,字節(jié)長度:50)

視頻3(地址偏移:151,字節(jié)長度:150)

1. 播放視頻1:AVFileDescriptor { fd = 資源句柄; offset = 0; length = 100; }

2. 播放視頻2:AVFileDescriptor { fd = 資源句柄; offset = 101; length = 50; }

3. 播放視頻3:AVFileDescriptor { fd = 資源句柄; offset = 151; length = 150; }

假設是一個獨立的視頻文件: 請使用src=fd://xx

loop8+

boolean

視頻循環(huán)播放屬性,設置為'true'表示循環(huán)播放。

videoScaleType9+

VideoScaleType

視頻縮放模式。

audioInterruptMode9+

audio.InterruptMode

音頻焦點模型。

currentTime8+

number

視頻的當前播放位置,單位為毫秒(ms)。

duration8+

number

視頻時長,單位為毫秒(ms),返回-1表示直播模式。

state8+

VideoPlayState

視頻播放的狀態(tài)。

width8+

number

視頻寬,單位為像素(px)。

height8+

number

視頻高,單位為像素(px)。

setDisplaySurface8+

setDisplaySurface(surfaceId: string, callback: AsyncCallback<void>): void

通過回調(diào)方式設置SurfaceId。

*注意:SetDisplaySurface需要在設置url和Prepare之間,無音頻的視頻流必須設置Surface否則Prepare失敗。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

surfaceId

string

SurfaceId

callback

AsyncCallback<void>

設置SurfaceId的回調(diào)方法。

示例:

  1. let surfaceId = null;
  2. videoPlayer.setDisplaySurface(surfaceId, (err) => {
  3. if (err == null) {
  4. console.info('setDisplaySurface success!');
  5. } else {
  6. console.error('setDisplaySurface fail!');
  7. }
  8. });

setDisplaySurface8+

setDisplaySurface(surfaceId: string): Promise<void>

通過Promise方式設置SurfaceId。

*注意:SetDisplaySurface需要在設置url和Prepare之間,無音頻的視頻流必須設置Surface否則Prepare失敗。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

surfaceId

string

SurfaceId

返回值:

類型

說明

Promise<void>

設置SurfaceId的Promise返回值。

示例:

  1. let surfaceId = null;
  2. videoPlayer.setDisplaySurface(surfaceId).then(() => {
  3. console.info('setDisplaySurface success');
  4. }).catch((error) => {
  5. console.error(`video catchCallback, error:${error}`);
  6. });

prepare8+

prepare(callback: AsyncCallback<void>): void

通過回調(diào)方式準備播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

準備播放視頻的回調(diào)方法。

示例:

  1. videoPlayer.prepare((err) => {
  2. if (err == null) {
  3. console.info('prepare success!');
  4. } else {
  5. console.error('prepare fail!');
  6. }
  7. });

prepare8+

prepare(): Promise<void>

通過Promise方式準備播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

準備播放視頻的Promise返回值。

示例:

  1. videoPlayer.prepare().then(() => {
  2. console.info('prepare success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

play8+

play(callback: AsyncCallback<void>): void;

通過回調(diào)方式開始播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

開始播放視頻的回調(diào)方法。

示例:

  1. videoPlayer.play((err) => {
  2. if (err == null) {
  3. console.info('play success!');
  4. } else {
  5. console.error('play fail!');
  6. }
  7. });

play8+

play(): Promise<void>;

通過Promise方式開始播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

開始播放視頻的Promise返回值。

示例:

  1. videoPlayer.play().then(() => {
  2. console.info('play success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

pause8+

pause(callback: AsyncCallback<void>): void

通過回調(diào)方式暫停播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

暫停播放視頻的回調(diào)方法。

示例:

  1. videoPlayer.pause((err) => {
  2. if (err == null) {
  3. console.info('pause success!');
  4. } else {
  5. console.info('pause fail!');
  6. }
  7. });

pause8+

pause(): Promise<void>

通過Promise方式暫停播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

暫停播放視頻的Promise返回值。

示例:

  1. videoPlayer.pause().then(() => {
  2. console.info('pause success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

stop8+

stop(callback: AsyncCallback<void>): void

通過回調(diào)方式停止播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

停止播放視頻的回調(diào)方法。

示例:

  1. videoPlayer.stop((err) => {
  2. if (err == null) {
  3. console.info('stop success!');
  4. } else {
  5. console.error('stop fail!');
  6. }
  7. });

stop8+

stop(): Promise<void>

通過Promise方式停止播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

停止播放視頻的Promise返回值。

示例:

  1. videoPlayer.stop().then(() => {
  2. console.info('stop success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

reset8+

reset(callback: AsyncCallback<void>): void

通過回調(diào)方式重置播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

切換播放視頻的回調(diào)方法。

示例:

  1. videoPlayer.reset((err) => {
  2. if (err == null) {
  3. console.info('reset success!');
  4. } else {
  5. console.error('reset fail!');
  6. }
  7. });

reset8+

reset(): Promise<void>

通過Promise方式重置播放視頻。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

切換播放視頻的Promise返回值。

示例:

  1. videoPlayer.reset().then(() => {
  2. console.info('reset success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

seek8+

seek(timeMs: number, callback: AsyncCallback<number>): void

通過回調(diào)方式跳轉(zhuǎn)到指定播放位置,默認跳轉(zhuǎn)到指定時間點的上一個關(guān)鍵幀。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

timeMs

number

指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍為[0, duration]。

callback

AsyncCallback<number>

跳轉(zhuǎn)到指定播放位置的回調(diào)方法。

示例:

  1. let seekTime = 5000;
  2. videoPlayer.seek(seekTime, (err, result) => {
  3. if (err == null) {
  4. console.info('seek success!');
  5. } else {
  6. console.error('seek fail!');
  7. }
  8. });

seek8+

seek(timeMs: number, mode:SeekMode, callback: AsyncCallback<number>): void

通過回調(diào)方式跳轉(zhuǎn)到指定播放位置。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

timeMs

number

指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍為[0, duration]。

mode

SeekMode

跳轉(zhuǎn)模式。

callback

AsyncCallback<number>

跳轉(zhuǎn)到指定播放位置的回調(diào)方法。

示例:

  1. import media from '@ohos.multimedia.media'
  2. let seekTime = 5000;
  3. videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err, result) => {
  4. if (err == null) {
  5. console.info('seek success!');
  6. } else {
  7. console.error('seek fail!');
  8. }
  9. });

seek8+

seek(timeMs: number, mode?:SeekMode): Promise<number>

通過Promise方式跳轉(zhuǎn)到指定播放位置,如果沒有設置mode則跳轉(zhuǎn)到指定時間點的上一個關(guān)鍵幀。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

timeMs

number

指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍為[0, duration]。

mode

SeekMode

基于視頻I幀的跳轉(zhuǎn)模式,默認為SEEK_PREV_SYNC模式。

返回值:

類型

說明

Promise<number>

跳轉(zhuǎn)到指定播放位置的Promise返回值,單位ms。

示例:

  1. import media from '@ohos.multimedia.media'
  2. let seekTime = 5000;
  3. videoPlayer.seek(seekTime).then((seekDoneTime) => { // seekDoneTime表示seek完成后的時間點
  4. console.info('seek success');
  5. }).catch((error) => {
  6. console.error(`video catchCallback, error:${error}`);
  7. });
  8. videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
  9. console.info('seek success');
  10. }).catch((error) => {
  11. console.error(`video catchCallback, error:${error}`);
  12. });

setVolume8+

setVolume(vol: number, callback: AsyncCallback<void>): void

通過回調(diào)方式設置音量。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

vol

number

指定的相對音量大小,取值范圍為[0.00-1.00],1表示最大音量,即100%。

callback

AsyncCallback<void>

設置音量的回調(diào)方法。

示例:

  1. let vol = 0.5;
  2. videoPlayer.setVolume(vol, (err, result) => {
  3. if (err == null) {
  4. console.info('setVolume success!');
  5. } else {
  6. console.error('setVolume fail!');
  7. }
  8. });

setVolume8+

setVolume(vol: number): Promise<void>

通過Promise方式設置音量。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

vol

number

指定的相對音量大小,取值范圍為[0.00-1.00],1表示最大音量,即100%。

返回值:

類型

說明

Promise<void>

設置音量的Promise返回值。

示例:

  1. let vol = 0.5;
  2. videoPlayer.setVolume(vol).then(() => {
  3. console.info('setVolume success');
  4. }).catch((error) => {
  5. console.error(`video catchCallback, error:${error}`);
  6. });

release8+

release(callback: AsyncCallback<void>): void

通過回調(diào)方式釋放視頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<void>

釋放視頻資源的回調(diào)方法。

示例:

  1. videoPlayer.release((err) => {
  2. if (err == null) {
  3. console.info('release success!');
  4. } else {
  5. console.error('release fail!');
  6. }
  7. });

release8+

release(): Promise<void>

通過Promise方式釋放視頻資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<void>

釋放視頻資源的Promise返回值。

示例:

  1. videoPlayer.release().then(() => {
  2. console.info('release success');
  3. }).catch((error) => {
  4. console.error(`video catchCallback, error:${error}`);
  5. });

getTrackDescription8+

getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void

通過回調(diào)方式獲取視頻軌道信息。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<MediaDescription>>

視頻軌道信息MediaDescription數(shù)組回調(diào)方法。

示例:

  1. function printfDescription(obj) {
  2. for (let item in obj) {
  3. let property = obj[item];
  4. console.info('video key is ' + item);
  5. console.info('video value is ' + property);
  6. }
  7. }
  8. videoPlayer.getTrackDescription((error, arrList) => {
  9. if ((arrList) != null) {
  10. for (let i = 0; i < arrList.length; i++) {
  11. printfDescription(arrList[i]);
  12. }
  13. } else {
  14. console.log(`video getTrackDescription fail, error:${error}`);
  15. }
  16. });

getTrackDescription8+

getTrackDescription(): Promise<Array<MediaDescription>>

通過Promise方式獲取視頻軌道信息。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

類型

說明

Promise<Array<MediaDescription>>

視頻軌道信息MediaDescription數(shù)組Promise返回值。

示例:

  1. function printfDescription(obj) {
  2. for (let item in obj) {
  3. let property = obj[item];
  4. console.info('video key is ' + item);
  5. console.info('video value is ' + property);
  6. }
  7. }
  8. let arrayDescription;
  9. videoPlayer.getTrackDescription().then((arrList) => {
  10. if (arrList != null) {
  11. arrayDescription = arrList;
  12. } else {
  13. console.log('video getTrackDescription fail');
  14. }
  15. }).catch((error) => {
  16. console.info(`video catchCallback, error:${error}`);
  17. });
  18. for (let i = 0; i < arrayDescription.length; i++) {
  19. printfDescription(arrayDescription[i]);
  20. }

setSpeed8+

setSpeed(speed:number, callback: AsyncCallback<number>): void

通過回調(diào)方式設置播放速度。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

speed

number

指定播放視頻速度,具體見PlaybackSpeed。

callback

AsyncCallback<number>

設置播放速度的回調(diào)方法。

示例:

  1. import media from '@ohos.multimedia.media'
  2. let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
  3. videoPlayer.setSpeed(speed, (err, result) => {
  4. if (err == null) {
  5. console.info('setSpeed success!');
  6. } else {
  7. console.error('setSpeed fail!');
  8. }
  9. });

setSpeed8+

setSpeed(speed:number): Promise<number>

通過Promise方式設置播放速度。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

speed

number

指定播放視頻速度,具體見PlaybackSpeed。

返回值:

類型

說明

Promise<number>

播放速度Promise返回值,具體見PlaybackSpeed

示例:

  1. import media from '@ohos.multimedia.media'
  2. let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
  3. videoPlayer.setSpeed(speed).then(() => {
  4. console.info('setSpeed success');
  5. }).catch((error) => {
  6. console.error(`video catchCallback, error:${error}`);
  7. });

on('playbackCompleted')8+

on(type: 'playbackCompleted', callback: Callback<void>): void

開始監(jiān)聽視頻播放完成事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放完成事件回調(diào)類型,支持的事件:'playbackCompleted'。

callback

function

視頻播放完成事件回調(diào)方法。

示例:

  1. videoPlayer.on('playbackCompleted', () => {
  2. console.info('playbackCompleted success!');
  3. });

on('bufferingUpdate')8+

on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void

開始監(jiān)聽視頻緩存更新事件。僅網(wǎng)絡播放支持該訂閱事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻緩存事件回調(diào)類型,支持的事件:'bufferingUpdate'。

callback

function

視頻緩存事件回調(diào)方法。

BufferingInfoType為BUFFERING_PERCENT或CACHED_DURATION時,value值有效,否則固定為0。

示例:

  1. videoPlayer.on('bufferingUpdate', (infoType, value) => {
  2. console.log('video bufferingInfo type: ' + infoType);
  3. console.log('video bufferingInfo value: ' + value);
  4. });

on('startRenderFrame')8+

on(type: 'startRenderFrame', callback: Callback<void>): void

開始監(jiān)聽視頻播放首幀送顯上報事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放首幀送顯上報事件回調(diào)類型,支持的事件:'startRenderFrame'。

callback

Callback<void>

視頻播放首幀送顯上報事件回調(diào)方法。

示例:

  1. videoPlayer.on('startRenderFrame', () => {
  2. console.info('startRenderFrame success!');
  3. });

on('videoSizeChanged')8+

on(type: 'videoSizeChanged', callback: (width: number, height: number) => void): void

開始監(jiān)聽視頻播放寬高變化事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

視頻播放寬高變化事件回調(diào)類型,支持的事件:'videoSizeChanged'。

callback

function

視頻播放寬高變化事件回調(diào)方法,width表示寬,height表示高。

示例:

  1. videoPlayer.on('videoSizeChanged', (width, height) => {
  2. console.log('video width is: ' + width);
  3. console.log('video height is: ' + height);
  4. });

on('error')8+

on(type: 'error', callback: ErrorCallback): void

開始監(jiān)聽視頻播放錯誤事件,當上報error錯誤事件后,用戶需處理error事件,退出播放操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

參數(shù):

參數(shù)名

類型

必填

說明

type

string

播放錯誤事件回調(diào)類型,支持的事件包括:'error'。

- 'error':視頻播放中發(fā)生錯誤,觸發(fā)該事件。

callback

ErrorCallback

播放錯誤事件回調(diào)方法。

示例:

  1. videoPlayer.on('error', (error) => { // 設置'error'事件回調(diào)
  2. console.error(`video error called, error: ${error}`);
  3. });
  4. videoPlayer.url = 'fd://error'; //設置錯誤的播放地址,觸發(fā)'error'事件

VideoPlayState(deprecated)

視頻播放的狀態(tài)機,可通過state屬性獲取當前狀態(tài)。

說明

從API version 8開始支持,從API version 9開始廢棄,建議使用AVPlayerState替代。

系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer

名稱

類型

說明

idle

string

視頻播放空閑。

prepared

string

視頻播放準備。

playing

string

視頻正在播放。

paused

string

視頻暫停播放。

stopped

string

視頻播放停止。

error

string

錯誤狀態(tài)。

AudioRecorder(deprecated)

說明

從API version 6開始支持,從API version 9開始廢棄,建議使用AVRecorder替代。

音頻錄制管理類,用于錄制音頻媒體。在調(diào)用AudioRecorder的方法前,需要先通過createAudioRecorder() 構(gòu)建一個AudioRecorder實例。

prepare

prepare(config: AudioRecorderConfig): void

錄音準備。

需要權(quán)限: ohos.permission.MICROPHONE

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

參數(shù):

參數(shù)名

類型

必填

說明

config

AudioRecorderConfig

配置錄音的相關(guān)參數(shù),包括音頻輸出URI、編碼格式、采樣率、聲道數(shù)、輸出格式等。

示例:

  1. let audioRecorderConfig = {
  2. audioEncoder : media.AudioEncoder.AAC_LC,
  3. audioEncodeBitRate : 22050,
  4. audioSampleRate : 22050,
  5. numberOfChannels : 2,
  6. format : media.AudioOutputFormat.AAC_ADTS,
  7. uri : 'fd://1', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
  8. location : { latitude : 30, longitude : 130},
  9. }
  10. audioRecorder.on('prepare', () => { //設置'prepare'事件回調(diào)
  11. console.log('prepare success');
  12. });
  13. audioRecorder.prepare(audioRecorderConfig);

start

start(): void

開始錄制,需在prepare事件成功觸發(fā)后,才能調(diào)用start方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('start', () => { //設置'start'事件回調(diào)
  2. console.log('audio recorder start success');
  3. });
  4. audioRecorder.start();

pause

pause():void

暫停錄制,需要在start事件成功觸發(fā)后,才能調(diào)用pause方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('pause', () => { //設置'pause'事件回調(diào)
  2. console.log('audio recorder pause success');
  3. });
  4. audioRecorder.pause();

resume

resume():void

恢復錄制,需要在pause事件成功觸發(fā)后,才能調(diào)用resume方法。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('resume', () => { //設置'resume'事件回調(diào)
  2. console.log('audio recorder resume success');
  3. });
  4. audioRecorder.resume();

stop

stop(): void

停止錄音。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('stop', () => { //設置'stop'事件回調(diào)
  2. console.log('audio recorder stop success');
  3. });
  4. audioRecorder.stop();

release

release(): void

釋放錄音資源。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('release', () => { //設置'release'事件回調(diào)
  2. console.log('audio recorder release success');
  3. });
  4. audioRecorder.release();
  5. audioRecorder = undefined;

reset

reset(): void

重置錄音。

進行重置錄音之前,需要先調(diào)用stop()停止錄音。重置錄音之后,需要調(diào)用prepare()設置錄音參數(shù)項,才能再次進行錄音。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

  1. audioRecorder.on('reset', () => { //設置'reset'事件回調(diào)
  2. console.log('audio recorder reset success');
  3. });
  4. audioRecorder.reset();

on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')

on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void

開始訂閱音頻錄制事件。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錄制事件回調(diào)類型,支持的事件包括:'prepare' | 'start' | 'pause' | ’resume‘ | 'stop' | 'release' | 'reset'。

- 'prepare' :完成prepare調(diào)用,音頻錄制參數(shù)設置完成,觸發(fā)該事件。

- 'start' :完成start調(diào)用,音頻錄制開始,觸發(fā)該事件。

- 'pause': 完成pause調(diào)用,音頻暫停錄制,觸發(fā)該事件。

- 'resume': 完成resume調(diào)用,音頻恢復錄制,觸發(fā)該事件。

- 'stop' :完成stop調(diào)用,音頻停止錄制,觸發(fā)該事件。

- 'release' :完成release調(diào)用,音頻釋放錄制資源,觸發(fā)該事件。

- 'reset':完成reset調(diào)用,音頻重置為初始狀態(tài),觸發(fā)該事件。

callback

()=>void

錄制事件回調(diào)方法。

示例:

  1. let audioRecorder = media.createAudioRecorder(); // 創(chuàng)建一個音頻錄制實例
  2. let audioRecorderConfig = {
  3. audioEncoder : media.AudioEncoder.AAC_LC,
  4. audioEncodeBitRate : 22050,
  5. audioSampleRate : 22050,
  6. numberOfChannels : 2,
  7. format : media.AudioOutputFormat.AAC_ADTS,
  8. uri : 'fd://xx', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
  9. location : { latitude : 30, longitude : 130},
  10. }
  11. audioRecorder.on('error', (error) => { // 設置'error'事件回調(diào)
  12. console.info(`audio error called, error: ${error}`);
  13. });
  14. audioRecorder.on('prepare', () => { // 設置'prepare'事件回調(diào)
  15. console.log('prepare success');
  16. audioRecorder.start(); // 開始錄制,并觸發(fā)'start'事件回調(diào)
  17. });
  18. audioRecorder.on('start', () => { // 設置'start'事件回調(diào)
  19. console.log('audio recorder start success');
  20. });
  21. audioRecorder.on('pause', () => { // 設置'pause'事件回調(diào)
  22. console.log('audio recorder pause success');
  23. });
  24. audioRecorder.on('resume', () => { // 設置'resume'事件回調(diào)
  25. console.log('audio recorder resume success');
  26. });
  27. audioRecorder.on('stop', () => { // 設置'stop'事件回調(diào)
  28. console.log('audio recorder stop success');
  29. });
  30. audioRecorder.on('release', () => { // 設置'release'事件回調(diào)
  31. console.log('audio recorder release success');
  32. });
  33. audioRecorder.on('reset', () => { // 設置'reset'事件回調(diào)
  34. console.log('audio recorder reset success');
  35. });
  36. audioRecorder.prepare(audioRecorderConfig) // 設置錄制參數(shù) ,并觸發(fā)'prepare'事件回調(diào)

on('error')

on(type: 'error', callback: ErrorCallback): void

開始訂閱音頻錄制錯誤事件,當上報error錯誤事件后,用戶需處理error事件,退出錄制操作。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

參數(shù):

參數(shù)名

類型

必填

說明

type

string

錄制錯誤事件回調(diào)類型'error'。

- 'error':音頻錄制過程中發(fā)生錯誤,觸發(fā)該事件。

callback

ErrorCallback

錄制錯誤事件回調(diào)方法。

示例:

  1. let audioRecorderConfig = {
  2. audioEncoder : media.AudioEncoder.AAC_LC,
  3. audioEncodeBitRate : 22050,
  4. audioSampleRate : 22050,
  5. numberOfChannels : 2,
  6. format : media.AudioOutputFormat.AAC_ADTS,
  7. uri : 'fd://xx', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
  8. location : { latitude : 30, longitude : 130},
  9. }
  10. audioRecorder.on('error', (error) => { // 設置'error'事件回調(diào)
  11. console.error(`audio error called, error: ${error}`);
  12. });
  13. audioRecorder.prepare(audioRecorderConfig); // prepare不設置參數(shù),觸發(fā)'error'事件

AudioRecorderConfig(deprecated)

說明

從API version 6開始支持,從API version 9開始廢棄,建議使用AVRecorderConfig替代。

表示音頻的錄音配置。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

名稱

類型

必填

說明

audioEncoder

AudioEncoder

音頻編碼格式,默認設置為AAC_LC。

說明: 從API version 8開始廢棄,建議使用audioEncoderMime替代。

audioEncodeBitRate

number

音頻編碼比特率,默認值為48000。

audioSampleRate

number

音頻采集采樣率,默認值為48000。

numberOfChannels

number

音頻采集聲道數(shù),默認值為2。

format

AudioOutputFormat

音頻輸出封裝格式,默認設置為MPEG_4。

說明: 從API version 8開始廢棄,建議使用fileFormat替代。

location

Location

音頻采集的地理位置。

uri

string

音頻輸出URI:fd://xx (fd number)

文件需要由調(diào)用者創(chuàng)建,并賦予適當?shù)臋?quán)限。

audioEncoderMime8+

CodecMimeType

音頻編碼格式。

fileFormat8+

ContainerFormatType

音頻編碼格式。

AudioEncoder(deprecated)

說明

從API version 6開始支持,從API version 8開始廢棄,建議使用CodecMimeType替代。

表示音頻編碼格式的枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

名稱

說明

DEFAULT

0

默認編碼格式。

僅做接口定義,暫不支持使用。

AMR_NB

1

AMR-NB(Adaptive Multi Rate-Narrow Band Speech Codec) 編碼格式。

僅做接口定義,暫不支持使用。

AMR_WB

2

AMR-WB(Adaptive Multi Rate-Wide Band Speech Codec) 編碼格式。

僅做接口定義,暫不支持使用。

AAC_LC

3

AAC-LC(Advanced Audio Coding Low Complexity)編碼格式。

HE_AAC

4

HE_AAC(High-Efficiency Advanced Audio Coding)編碼格式。

僅做接口定義,暫不支持使用。

AudioOutputFormat(deprecated)

說明

從API version 6開始支持,從API version 8 開始廢棄,建議使用ContainerFormatType替代。

表示音頻封裝格式的枚舉。

系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder

名稱

說明

DEFAULT

0

默認封裝格式。

僅做接口定義,暫不支持使用。

MPEG_4

2

封裝為MPEG-4格式。

AMR_NB

3

封裝為AMR_NB格式。

僅做接口定義,暫不支持使用。

AMR_WB

4

封裝為AMR_WB格式。

僅做接口定義,暫不支持使用。

AAC_ADTS

6

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號