本模塊首批接口從API version 6開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。
媒體子系統(tǒng)為開發(fā)者提供一套簡單且易于理解的接口,使得開發(fā)者能夠方便接入系統(tǒng)并使用系統(tǒng)的媒體資源。
媒體子系統(tǒng)包含了音視頻相關(guān)媒體業(yè)務,提供以下常用功能:
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. |
示例:
- let avPlayer;
- media.createAVPlayer((error, video) => {
- if (video != null) {
- avPlayer = video;
- console.info('createAVPlayer success');
- } else {
- console.error(`createAVPlayer fail, error message:${error.message}`);
- }
- });
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. |
示例:
- let avPlayer;
- media.createAVPlayer().then((video) => {
- if (video != null) {
- avPlayer = video;
- console.info('createAVPlayer success');
- } else {
- console.error('createAVPlayer fail');
- }
- }).catch((error) => {
- console.error(`AVPlayer catchCallback, error message:${error.message}`);
- });
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. |
示例:
- let avRecorder;
- media.createAVRecorder((error, recorder) => {
- if (recorder != null) {
- avRecorder = recorder;
- console.info('createAVRecorder success');
- } else {
- console.error(`createAVRecorder fail, error message:${error.message}`);
- }
- });
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. |
示例:
- let avRecorder;
- media.createAVRecorder().then((recorder) => {
- if (recorder != null) {
- avRecorder = recorder;
- console.info('createAVRecorder success');
- } else {
- console.error('createAVRecorder fail');
- }
- }).catch((error) => {
- console.error(`createAVRecorder catchCallback, error message:${error.message}`);
- });
媒體錯誤碼類型枚舉
系統(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 | 表示不支持當前媒體資源的格式。 |
媒體類型枚舉。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
名稱 | 值 | 說明 |
---|---|---|
MEDIA_TYPE_AUD | 0 | 表示音頻。 |
MEDIA_TYPE_VID | 1 | 表示視頻。 |
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類型。 |
媒體信息描述枚舉。
系統(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)。 |
緩存事件類型枚舉。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
名稱 | 值 | 說明 |
---|---|---|
BUFFERING_START | 1 | 表示開始緩存。 |
BUFFERING_END | 2 | 表示結(jié)束緩存。 |
BUFFERING_PERCENT | 3 | 表示緩存百分比。 |
CACHED_DURATION | 4 | 表示緩存時長,單位為毫秒(ms)。 |
表示播放或錄制實例狀態(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)強制暫停或停止。 |
播放管理類,用于管理和播放媒體資源。在調(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+ | 是 | 是 | 媒體文件描述,只允許在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)屬性。 使用場景:視頻播放的窗口渲染,純音頻播放不用設置。 使用示例: |
loop9+ | boolean | 是 | 是 | 視頻循環(huán)播放屬性,默認'false',設置為'true'表示循環(huán)播放,動態(tài)屬性。 只允許在prepared/playing/paused/completed狀態(tài)下設置。 |
videoScaleType9+ | 是 | 是 | 視頻縮放模式,默認VIDEO_SCALE_TYPE_FIT_CROP,動態(tài)屬性。 只允許在prepared/playing/paused/completed狀態(tài)下設置。 | |
audioInterruptMode9+ | 是 | 是 | 音頻焦點模型,默認SHARE_MODE,動態(tài)屬性。 只允許在prepared/playing/paused/completed狀態(tài)下設置。 | |
state9+ | 是 | 否 | 音視頻播放的狀態(tài),全狀態(tài)有效,可查詢參數(shù)。 | |
currentTime9+ | number | 是 | 否 | 視頻的當前播放位置,單位為毫秒(ms),可查詢參數(shù)。 返回為(-1)表示無效值,prepared/playing/paused/completed狀態(tài)下有效。 |
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(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)的切換原因。 |
示例:
- avPlayer.on('stateChange', async (state, reason) => {
- switch (state) {
- case 'idle':
- console.info('state idle called')
- break;
- case 'initialized':
- console.info('initialized prepared called')
- break;
- case 'prepared':
- console.info('state prepared called')
- break;
- case 'playing':
- console.info('state playing called')
- break;
- case 'paused':
- console.info('state paused called')
- break;
- case 'completed':
- console.info('state completed called')
- break;
- case 'stopped':
- console.info('state stopped called')
- break;
- case 'released':
- console.info('state released called')
- break;
- case 'error':
- console.info('state error called')
- break;
- default:
- console.info('unkown state :' + state)
- break;
- }
- })
off(type: 'stateChange'): void
取消監(jiān)聽播放狀態(tài)機AVPlayerState切換的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 狀態(tài)機切換事件回調(diào)類型,取消注冊的事件:'stateChange' |
示例:
- avPlayer.off('stateChange')
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)。 |
示例:
- avPlayer.on('error', (error) => {
- console.error('error happened,and error message is :' + error.message)
- console.error('error happened,and error code is :' + error.code)
- })
off(type: 'error'): void
取消監(jiān)聽播放的錯誤事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 錯誤事件回調(diào)類型,取消注冊的事件:'error' |
示例:
- avPlayer.off('error')
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. |
示例:
- avPlayer.prepare((err) => {
- if (err == null) {
- console.info('prepare success');
- } else {
- console.error('prepare filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.prepare().then(() => {
- console.info('prepare success');
- }, (err) => {
- console.error('prepare filed,error message is :' + err.message)
- })
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. |
示例:
- avPlayer.play((err) => {
- if (err == null) {
- console.info('play success');
- } else {
- console.error('play filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.play().then(() => {
- console.info('play success');
- }, (err) => {
- console.error('play filed,error message is :' + err.message)
- })
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. |
示例:
- avPlayer.pause((err) => {
- if (err == null) {
- console.info('pause success');
- } else {
- console.error('pause filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.pause().then(() => {
- console.info('pause success');
- }, (err) => {
- console.error('pause filed,error message is :' + err.message)
- })
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. |
示例:
- avPlayer.stop((err) => {
- if (err == null) {
- console.info('stop success');
- } else {
- console.error('stop filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.stop().then(() => {
- console.info('stop success');
- }, (err) => {
- console.error('stop filed,error message is :' + err.message)
- })
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. |
示例:
- avPlayer.reset((err) => {
- if (err == null) {
- console.info('reset success');
- } else {
- console.error('reset filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.reset().then(() => {
- console.info('reset success');
- }, (err) => {
- console.error('reset filed,error message is :' + err.message)
- })
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. |
示例:
- avPlayer.release((err) => {
- if (err == null) {
- console.info('reset success');
- } else {
- console.error('release filed,error message is :' + err.message)
- }
- })
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. |
示例:
- avPlayer.release().then(() => {
- console.info('release success');
- }, (err) => {
- console.error('release filed,error message is :' + err.message)
- })
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. |
示例:
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('audio key is ' + item);
- console.info('audio value is ' + property);
- }
- }
- avPlayer.getTrackDescription((error, arrList) => {
- if ((arrList) != null) {
- for (let i = 0; i < arrList.length; i++) {
- printfDescription(arrList[i]);
- }
- } else {
- console.log(`video getTrackDescription fail, error:${error}`);
- }
- });
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. |
示例:
- let arrayDescription;
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('audio key is ' + item);
- console.info('audio value is ' + property);
- }
- }
- avPlayer.getTrackDescription().then((arrList) => {
- if (arrList != null) {
- arrayDescription = arrList;
- } else {
- console.log('video getTrackDescription fail');
- }
- }).catch((error) => {
- console.info(`video catchCallback, error:${error}`);
- });
- for (let i = 0; i < arrayDescription.length; i++) {
- printfDescription(arrayDescription[i]);
- }
seek(timeMs: number, mode?:SeekMode): void
跳轉(zhuǎn)到指定播放位置,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過seekDone事件確認是否生效。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
示例:
- let seekTime = 1000
- avPlayer.seek(seekTime, media.SeekMode.SEEK_PREV_SYNC)
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僅代表完成用戶某一次請求。 |
示例:
- avPlayer.on('seekDone', (seekDoneTime:number) => {
- console.info('seekDone success,and seek time is:' + seekDoneTime)
- })
off(type: 'seekDone'): void
取消監(jiān)聽seek生效的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | seek生效的事件回調(diào)類型,取消注冊的事件:'seekDone'。 |
示例:
- avPlayer.off('seekDone')
setSpeed(speed: PlaybackSpeed): void
設置倍速模式,只能在prepared/playing/paused/complete狀態(tài)調(diào)用,可以通過speedDone事件確認是否生效。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
speed | 是 | 指定播放倍速模式。 |
示例:
- avPlayer.setSpeed(media.PlaybackSpeed.SPEED_FORWARD_2_00_X)
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。 |
示例:
- avPlayer.on('speedDone', (speed:number) => {
- console.info('speedDone success,and speed value is:' + speed)
- })
off(type: 'speedDone'): void
取消監(jiān)聽setSpeed生效的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | setSpeed生效的事件回調(diào)類型,取消注冊的事件:'speedDone'。 |
示例:
- avPlayer.off('speedDone')
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)。 |
示例:
- let bitrate = 96000
- avPlayer.setBitrate(bitrate)
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)方法,上報生效的比特率。 |
示例:
- avPlayer.on('bitrateDone', (bitrate:number) => {
- console.info('bitrateDone success,and bitrate value is:' + bitrate)
- })
off(type: 'bitrateDone'): void
取消監(jiān)聽setBitrate生效的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | setBitrate生效的事件回調(diào)類型,取消注冊的事件:'bitrateDone'。 |
示例:
- avPlayer.off('bitrateDone')
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,則不支持指定比特率。 |
示例:
- avPlayer.on('availableBitrates', (bitrates: Array<number>) => {
- console.info('availableBitrates success,and availableBitrates length is:' + bitrates.length)
- })
off(type: 'availableBitrates'): void
取消監(jiān)聽HLS協(xié)議流可用的比特率列表。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | HLS協(xié)議可用比特率上報事件回調(diào)類型,取消注冊的事件:'availableBitrates'。 |
示例:
- avPlayer.off('availableBitrates')
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%。 |
示例:
- let volume = 1.0
- avPlayer.setVolume(volume)
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)方法,上報生效的媒體音量。 |
示例:
- avPlayer.on('volumeChange', (vol:number) => {
- console.info('volumeChange success,and new volume is :' + vol)
- })
off(type: 'volumeChange'): void
取消監(jiān)聽setVolume生效的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | setVolume生效的事件回調(diào)類型,取消注冊的事件:'volumeChange'。 |
示例:
- avPlayer.off('volumeChange')
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)方法。 |
示例:
- avPlayer.on('endOfStream', () => {
- console.info('endOfStream success')
- })
off(type: 'endOfStream'): void
取消監(jiān)聽資源播放至結(jié)尾的事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 資源播放至結(jié)尾的事件回調(diào)類型,取消注冊的事件:'endOfStream'。 |
示例:
- avPlayer.off('endOfStream')
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 | 是 | 當前時間。 |
示例:
- avPlayer.on('timeUpdate', (time:number) => {
- console.info('timeUpdate success,and new time is :' + time)
- })
off(type: 'timeUpdate'): void
取消監(jiān)聽資源播放當前時間。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 時間更新的回調(diào)類型,取消注冊的事件:'timeUpdate'。 |
示例:
- avPlayer.off('timeUpdate')
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 | 是 | 資源時長。 |
示例:
- avPlayer.on('durationUpdate', (duration) => {
- console.info('durationUpdate success,new duration is :' + duration)
- })
off(type: 'durationUpdate'): void
取消監(jiān)聽資源播放資源的時長。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 時長更新的回調(diào)類型,取消注冊的事件:'durationUpdate'。 |
示例:
- avPlayer.off('durationUpdate')
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。 |
示例:
- avPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
- console.info('bufferingUpdate success,and infoType value is:' + infoType + ', value is :' + value)
- })
off(type: 'bufferingUpdate'): void
取消監(jiān)聽音視頻緩存更新事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 播放緩存事件回調(diào)類型,取消注冊的事件:'bufferingUpdate'。 |
示例:
- avPlayer.off('bufferingUpdate')
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)方法。 |
示例:
- avPlayer.on('startRenderFrame', () => {
- console.info('startRenderFrame success')
- })
off(type: 'startRenderFrame'): void
取消監(jiān)聽視頻播放開始首幀渲染的更新事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 視頻播放開始首幀渲染事件回調(diào)類型,取消注冊的事件:'startRenderFrame'。 |
示例:
- avPlayer.off('startRenderFrame')
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表示高。 |
示例:
- avPlayer.on('videoSizeChange', (width: number, height: number) => {
- console.info('videoSizeChange success,and width is:' + width + ', height is :' + height)
- })
off(type: 'videoSizeChange'): void
取消監(jiān)聽視頻播放寬高變化事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 視頻播放寬高變化事件回調(diào)類型,取消注冊的事件:'videoSizeChange'。 |
示例:
- avPlayer.off('videoSizeChange')
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 | 是 | 音頻焦點變化事件回調(diào)方法。 |
示例:
- import audio from '@ohos.multimedia.audio';
- avPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
- console.info('audioInterrupt success,and InterruptEvent info is:' + info)
- })
off(type: 'audioInterrupt'): void
取消監(jiān)聽音頻焦點變化事件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
type | string | 是 | 音頻焦點變化事件回調(diào)類型,取消注冊的事件:'audioInterrupt'。 |
示例:
- avPlayer.off('audioInterrupt')
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ù)播放和播控操作的,不需要客戶端設計容錯機制。 |
音視頻文件資源描述,一種特殊資源的播放方式,使用場景:應用中的音頻資源被連續(xù)存儲在同一個文件中,需要根據(jù)偏移量和長度進行播放。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
fd | number | 是 | 資源句柄,通過resourceManager.getRawFileDescriptor獲取。 |
offset | number | 是 | 資源偏移量,需要基于預置資源的信息輸入,非法值會造成音視頻資源解析錯誤。 |
length | number | 是 | 資源長度,需要基于預置資源的信息輸入,非法值會造成音視頻資源解析錯誤。 |
視頻播放的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)鍵幀,建議向前快進的時候用這個枚舉值。 |
視頻播放的倍速枚舉,可通過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倍。 |
枚舉,視頻縮放模式。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
名稱 | 值 | 說明 |
---|---|---|
VIDEO_SCALE_TYPE_FIT | 0 | 視頻拉伸至與窗口等大。 |
VIDEO_SCALE_TYPE_FIT_CROP | 1 | 保持視頻寬高比拉伸至填滿窗口,內(nèi)容可能會有裁剪。 |
通過key-value方式獲取媒體信息。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
示例:
- import media from '@ohos.multimedia.media'
- function printfItemDescription(obj, key) {
- let property = obj[key];
- console.info('audio key is ' + key); // 通過key值獲取對應的value。key值具體可見[MediaDescriptionKey]
- console.info('audio value is ' + property); //對應key值得value。其類型可為任意類型,具體key對應value的類型可參考[MediaDescriptionKey]
- }
- let audioPlayer = media.createAudioPlayer();
- audioPlayer.getTrackDescription((error, arrList) => {
- if (arrList != null) {
- for (let i = 0; i < arrList.length; i++) {
- printfItemDescription(arrList[i], media.MediaDescriptionKey.MD_KEY_TRACK_TYPE); //打印出每條軌道MD_KEY_TRACK_TYPE的值
- }
- } else {
- console.log(`audio getTrackDescription fail, error:${error}`);
- }
- });
音視頻錄制管理類,用于音視頻媒體錄制。在調(diào)用AVRecorder的方法前,需要先通過createAVRecorder()構(gòu)建一個AVRecorder實例。
音視頻錄制demo可參考:使用AVRecorder開發(fā)音頻錄制功能
注意,使用相機進行視頻錄制時,需要與相機模塊配合,當前相機模塊僅對系統(tǒng)應用開放。
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 | 是 | 配置音視頻錄制的相關(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. |
示例:
- // 配置參數(shù)以實際硬件設備支持的范圍為準
- let AVRecorderProfile = {
- audioBitrate : 48000,
- audioChannels : 2,
- audioCodec : media.CodecMimeType.AUDIO_AAC,
- audioSampleRate : 48000,
- fileFormat : media.ContainerFormatType.CFT_MPEG_4,
- videoBitrate : 2000000,
- videoCodec : media.CodecMimeType.VIDEO_AVC,
- videoFrameWidth : 640,
- videoFrameHeight : 480,
- videoFrameRate : 30
- }
- let AVRecorderConfig = {
- audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
- videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
- profile : AVRecorderProfile,
- url : 'fd://', // 文件需先由調(diào)用者創(chuàng)建,賦予讀寫權(quán)限,將文件fd傳給此參數(shù),eg.fd://45
- rotation : 0, // 合理值0、90、180、270,非合理值prepare接口將報錯
- location : { latitude : 30, longitude : 130 }
- }
- avRecorder.prepare(AVRecorderConfig, (err) => {
- if (err == null) {
- console.info('prepare success');
- } else {
- console.error('prepare failed and error is ' + err.message);
- }
- })
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 | 是 | 配置音視頻錄制的相關(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. |
示例:
- // 配置參數(shù)以實際硬件設備支持的范圍為準
- let AVRecorderProfile = {
- audioBitrate : 48000,
- audioChannels : 2,
- audioCodec : media.CodecMimeType.AUDIO_AAC,
- audioSampleRate : 48000,
- fileFormat : media.ContainerFormatType.CFT_MPEG_4,
- videoBitrate : 2000000,
- videoCodec : media.CodecMimeType.VIDEO_AVC,
- videoFrameWidth : 640,
- videoFrameHeight : 480,
- videoFrameRate : 30
- }
- let AVRecorderConfig = {
- audioSourceType : media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
- videoSourceType : media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
- profile : AVRecorderProfile,
- url : 'fd://', // 文件需先由調(diào)用者創(chuàng)建,賦予讀寫權(quán)限,將文件fd傳給此參數(shù),eg.fd://45
- rotation : 0, // 合理值0、90、180、270,非合理值prepare接口報錯
- location : { latitude : 30, longitude : 130 }
- }
- avRecorder.prepare(AVRecorderConfig).then(() => {
- console.info('prepare success');
- }).catch((err) => {
- console.error('prepare failed and catch error is ' + err.message);
- });
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. |
示例:
- let surfaceID = null; // 該surfaceID用于傳遞給相機接口創(chuàng)造videoOutput
- avRecorder.getInputSurface((err, surfaceId) => {
- if (err == null) {
- console.info('getInputSurface success');
- surfaceID = surfaceId;
- } else {
- console.error('getInputSurface failed and error is ' + err.message);
- }
- });
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. |
示例:
- let surfaceID = null; // 該surfaceID用于傳遞給相機接口創(chuàng)造videoOutput
- avRecorder.getInputSurface().then((surfaceId) => {
- console.info('getInputSurface success');
- surfaceID = surfaceId;
- }).catch((err) => {
- console.error('getInputSurface failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.start((err) => {
- if (err == null) {
- console.info('start AVRecorder success');
- } else {
- console.error('start AVRecorder failed and error is ' + err.message);
- }
- });
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. |
示例:
- avRecorder.start().then(() => {
- console.info('start AVRecorder success');
- }).catch((err) => {
- console.error('start AVRecorder failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.pause((err) => {
- if (err == null) {
- console.info('pause AVRecorder success');
- } else {
- console.error('pause AVRecorder failed and error is ' + err.message);
- }
- });
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. |
示例:
- avRecorder.pause().then(() => {
- console.info('pause AVRecorder success');
- }).catch((err) => {
- console.error('pause AVRecorder failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.resume((err) => {
- if (err == null) {
- console.info('resume AVRecorder success');
- } else {
- console.error('resume AVRecorder failed and error is ' + err.message);
- }
- });
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. |
示例:
- avRecorder.resume().then(() => {
- console.info('resume AVRecorder success');
- }).catch((err) => {
- console.error('resume AVRecorder failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.stop((err) => {
- if (err == null) {
- console.info('stop AVRecorder success');
- } else {
- console.error('stop AVRecorder failed and error is ' + err.message);
- }
- });
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. |
示例:
- avRecorder.stop().then(() => {
- console.info('stop AVRecorder success');
- }).catch((err) => {
- console.error('stop AVRecorder failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.reset((err) => {
- if (err == null) {
- console.info('reset AVRecorder success');
- } else {
- console.error('reset AVRecorder failed and error is ' + err.message);
- }
- });
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. |
示例:
- avRecorder.reset().then(() => {
- console.info('reset AVRecorder success');
- }).catch((err) => {
- console.error('reset AVRecorder failed and catch error is ' + err.message);
- });
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. |
示例:
- avRecorder.release((err) => {
- if (err == null) {
- console.info('release AVRecorder success');
- } else {
- console.error('release AVRecorder failed and error is ' + err.message);
- }
- });
release(): Promise<void>
異步方式釋放音視頻錄制資源。通過Promise獲取返回值。
釋放音視頻錄制資源之后,該AVRecorder實例不能再進行任何操作。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder
返回值:
類型 | 說明 |
---|---|
Promise<void> | 異步釋放音視頻錄制資源方法的Promise返回值。 |
錯誤碼:
以下錯誤碼的詳細介紹請參見媒體錯誤碼。
錯誤碼ID | 錯誤信息 |
---|---|
5400105 | Service died. Return by callback. |
示例:
- avRecorder.release().then(() => {
- console.info('release AVRecorder success');
- }).catch((err) => {
- console.error('release AVRecorder failed and catch error is ' + err.message);
- });
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)的切換原因。 |
示例:
- avRecorder.on('stateChange', async (state, reason) => {
- console.info('case state has changed, new state is :' + state + ',and new reason is : ' + reason);
- });
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ā)此事件。 |
示例:
- avRecorder.off('stateChange');
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. |
示例:
- avRecorder.on('error', (err) => {
- console.info('case avRecorder.on(error) called, errMessage is ' + err.message);
- });
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. |
示例:
- avRecorder.off('error');
音視頻錄制的狀態(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()方法釋放資源。 |
表示音視頻錄制的參數(shù)設置。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
audioSourceType | 否 | 選擇錄制的音頻源類型。選擇音頻錄制時必填。 | |
videoSourceType | 否 | 選擇錄制的視頻源類型。選擇視頻錄制時必填。 | |
profile | 是 | 錄制的profile,必要參數(shù)。 | |
url | string | 是 | 錄制輸出URL:fd://xx (fd number) |
rotation | number | 否 | 錄制的視頻旋轉(zhuǎn)角度,僅支持0,90,180,270,默認值為0。 |
location | 否 | 錄制的地理位置,默認不記錄地理位置信息。 |
通過audioSourceType和videoSourceType區(qū)分純音頻錄制、純視頻錄制或音視頻錄制。純音頻錄制時,僅需要設置audioSourceType;純視頻錄制時,僅需要設置videoSourceType;音視頻錄制時,audioSourceType和videoSourceType均需要設置。
音視頻錄制的配置文件。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
audioBitrate | number | 否 | 音頻編碼比特率,選擇音頻錄制時必填。 |
audioChannels | number | 否 | 音頻采集聲道數(shù),選擇音頻錄制時必填。 |
audioCodec | 否 | 音頻編碼格式,選擇音頻錄制時必填。當前僅支持AUDIO_AAC。 | |
audioSampleRate | number | 否 | 音頻采樣率,選擇音頻錄制時必填。 |
fileFormat | 是 | 文件的容器格式,必要參數(shù)。 | |
videoBitrate | number | 否 | 視頻編碼比特率,選擇視頻錄制時必填。 |
videoCodec | 否 | 視頻編碼格式,選擇視頻錄制時必填。需要查詢設備支持的編碼能力(包括編碼格式,分辨率大小等)。 | |
videoFrameWidth | number | 否 | 視頻幀的寬,選擇視頻錄制時必填。 |
videoFrameHeight | number | 否 | 視頻幀的高,選擇視頻錄制時必填。 |
videoFrameRate | number | 否 | 視頻幀率,選擇視頻錄制時必填。 |
表示視頻錄制中音頻源類型的枚舉。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder
名稱 | 值 | 說明 |
---|---|---|
AUDIO_SOURCE_TYPE_DEFAULT | 0 | 默認的音頻輸入源類型。 |
AUDIO_SOURCE_TYPE_MIC | 1 | 表示MIC的音頻輸入源。 |
表示視頻錄制中視頻源類型的枚舉。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AVRecorder
名稱 | 值 | 說明 |
---|---|---|
VIDEO_SOURCE_TYPE_SURFACE_YUV | 0 | 輸入surface中攜帶的是raw data。 |
VIDEO_SOURCE_TYPE_SURFACE_ES | 1 | 輸入surface中攜帶的是ES data。 |
表示容器格式類型的枚舉,縮寫為CFT。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
名稱 | 值 | 說明 |
---|---|---|
CFT_MPEG_4 | 'mp4' | 視頻的容器格式,MP4。 |
CFT_MPEG_4A | 'm4a' | 音頻的容器格式,M4A。 |
視頻錄制的地理位置。
系統(tǒng)能力: SystemCapability.Multimedia.Media.Core
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
latitude | number | 是 | 地理位置的緯度。 |
longitude | number | 是 | 地理位置的經(jīng)度。 |
createAudioPlayer(): AudioPlayer
同步方式創(chuàng)建音頻播放實例。
從API version 6開始支持,從API version 9開始廢棄,建議使用createAVPlayer替代。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
返回值:
類型 | 說明 |
---|---|
返回AudioPlayer類實例,失敗時返回null??捎糜谝纛l播放、暫停、停止等操作。 |
示例:
- let audioPlayer = media.createAudioPlayer();
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媒體。 |
示例:
- let videoPlayer;
- media.createVideoPlayer((error, video) => {
- if (video != null) {
- videoPlayer = video;
- console.info('video createVideoPlayer success');
- } else {
- console.error(`video createVideoPlayer fail, error:${error}`);
- }
- });
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媒體。 |
示例:
- let videoPlayer;
- media.createVideoPlayer().then((video) => {
- if (video != null) {
- videoPlayer = video;
- console.info('video createVideoPlayer success');
- } else {
- console.info('video createVideoPlayer fail');
- }
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
createAudioRecorder(): AudioRecorder
創(chuàng)建音頻錄制的實例來控制音頻的錄制。
一臺設備只允許創(chuàng)建一個錄制實例。
從API version 8開始支持,從API version 9開始廢棄,建議使用createAVRecorder替代。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
返回值:
類型 | 說明 |
---|---|
返回AudioRecorder類實例,失敗時返回null??捎糜阡浿埔纛l媒體。 |
示例:
- let audioRecorder = media.createAudioRecorder();
媒體服務錯誤類型枚舉。
從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 | 表示在當前版本下,不支持此操作。 |
從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+ | 是 | 是 | 音頻媒體文件描述,使用場景:應用中的音頻資源被連續(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+ | 是 | 是 | 音頻焦點模型。 | |
currentTime | number | 是 | 否 | 音頻的當前播放位置,單位為毫秒(ms)。 |
duration | number | 是 | 否 | 音頻時長,單位為毫秒(ms)。 |
state | 是 | 否 | 可以查詢音頻播放的狀態(tài),該狀態(tài)不可作為調(diào)用play/pause/stop等狀態(tài)切換的觸發(fā)條件。 |
play(): void
開始播放音頻資源,需在dataLoad事件成功觸發(fā)后,才能調(diào)用。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
示例:
- audioPlayer.on('play', () => { //設置'play'事件回調(diào)
- console.log('audio play success');
- });
- audioPlayer.play();
pause(): void
暫停播放音頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
示例:
- audioPlayer.on('pause', () => { //設置'pause'事件回調(diào)
- console.log('audio pause success');
- });
- audioPlayer.pause();
stop(): void
停止播放音頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
示例:
- audioPlayer.on('stop', () => { //設置'stop'事件回調(diào)
- console.log('audio stop success');
- });
- audioPlayer.stop();
reset(): void
重置播放音頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
示例:
- audioPlayer.on('reset', () => { //設置'reset'事件回調(diào)
- console.log('audio reset success');
- });
- audioPlayer.reset();
seek(timeMs: number): void
跳轉(zhuǎn)到指定播放位置。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
timeMs | number | 是 | 指定的跳轉(zhuǎn)時間節(jié)點,單位毫秒(ms),取值范圍[0, duration]。 |
示例:
- audioPlayer.on('timeUpdate', (seekDoneTime) => { //設置'timeUpdate'事件回調(diào)
- if (seekDoneTime == null) {
- console.info('audio seek fail');
- return;
- }
- console.log('audio seek success. seekDoneTime: ' + seekDoneTime);
- });
- audioPlayer.seek(30000); //seek到30000ms的位置
setVolume(vol: number): void
設置音量。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
vol | number | 是 | 指定的相對音量大小,取值范圍為[0.00-1.00],1表示最大音量,即100%。 |
示例:
- audioPlayer.on('volumeChange', () => { //設置'volumeChange'事件回調(diào)
- console.log('audio volumeChange success');
- });
- audioPlayer.setVolume(1); //設置音量到100%
release(): void
釋放音頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
示例:
- audioPlayer.release();
- audioPlayer = undefined;
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)方法。 |
示例:
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('audio key is ' + item);
- console.info('audio value is ' + property);
- }
- }
- audioPlayer.getTrackDescription((error, arrList) => {
- if (arrList != null) {
- for (let i = 0; i < arrList.length; i++) {
- printfDescription(arrList[i]);
- }
- } else {
- console.log(`audio getTrackDescription fail, error:${error}`);
- }
- });
getTrackDescription(): Promise<Array<MediaDescription>>
通過Promise方式獲取音頻軌道信息。需在dataLoad事件成功觸發(fā)后,才能調(diào)用
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioPlayer
返回值:
類型 | 說明 |
---|---|
Promise<Array<MediaDescription>> | 音頻軌道信息MediaDescription數(shù)組Promise返回值。 |
示例:
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('audio key is ' + item);
- console.info('audio value is ' + property);
- }
- }
- let arrayDescription = null
- audioPlayer.getTrackDescription().then((arrList) => {
- if (arrList != null) {
- arrayDescription = arrList;
- } else {
- console.log('audio getTrackDescription fail');
- }
- }).catch((error) => {
- console.info(`audio catchCallback, error:${error}`);
- });
- for (let i = 0; i < arrayDescription.length; i++) {
- printfDescription(arrayDescription[i]);
- }
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。 |
示例:
- audioPlayer.on('bufferingUpdate', (infoType, value) => {
- console.log('audio bufferingInfo type: ' + infoType);
- console.log('audio bufferingInfo value: ' + value);
- });
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)方法。 |
示例:
- import fs from '@ohos.file.fs';
- let audioPlayer = media.createAudioPlayer(); //創(chuàng)建一個音頻播放實例
- audioPlayer.on('dataLoad', () => { //設置'dataLoad'事件回調(diào),src屬性設置成功后,觸發(fā)此回調(diào)
- console.info('audio set source success');
- audioPlayer.play(); //開始播放,并觸發(fā)'play'事件回調(diào)
- });
- audioPlayer.on('play', () => { //設置'play'事件回調(diào)
- console.info('audio play success');
- audioPlayer.seek(30000); //調(diào)用seek方法,并觸發(fā)'timeUpdate'事件回調(diào)
- });
- audioPlayer.on('pause', () => { //設置'pause'事件回調(diào)
- console.info('audio pause success');
- audioPlayer.stop(); //停止播放,并觸發(fā)'stop'事件回調(diào)
- });
- audioPlayer.on('reset', () => { //設置'reset'事件回調(diào)
- console.info('audio reset success');
- audioPlayer.release(); //釋放播放實例資源
- audioPlayer = undefined;
- });
- audioPlayer.on('timeUpdate', (seekDoneTime) => { //設置'timeUpdate'事件回調(diào)
- if (seekDoneTime == null) {
- console.info('audio seek fail');
- return;
- }
- console.info('audio seek success, and seek time is ' + seekDoneTime);
- audioPlayer.setVolume(0.5); //設置音量為50%,并觸發(fā)'volumeChange'事件回調(diào)
- });
- audioPlayer.on('volumeChange', () => { //設置'volumeChange'事件回調(diào)
- console.info('audio volumeChange success');
- audioPlayer.pause(); //暫停播放,并觸發(fā)'pause'事件回調(diào)
- });
- audioPlayer.on('finish', () => { //設置'finish'事件回調(diào)
- console.info('audio play finish');
- audioPlayer.stop(); //停止播放,并觸發(fā)'stop'事件回調(diào)
- });
- audioPlayer.on('error', (error) => { //設置'error'事件回調(diào)
- console.error(`audio error called, error: ${error}`);
- });
- // 用戶選擇音頻設置fd(本地播放)
- let fdPath = 'fd://';
- // path路徑的碼流可通過"hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" 命令,將其推送到設備上
- let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
- fs.open(path).then((file) => {
- fdPath = fdPath + '' + file.fd;
- console.info('open fd success fd is' + fdPath);
- audioPlayer.src = fdPath; //設置src屬性,并觸發(fā)'dataLoad'事件回調(diào)
- }, (err) => {
- console.info('open fd failed err is' + err);
- }).catch((err) => {
- console.info('open fd failed err is' + err);
- });
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間戳。 |
示例:
- audioPlayer.on('timeUpdate', (newTime) => { //設置'timeUpdate'事件回調(diào)
- if (newTime == null) {
- console.info('audio timeUpadate fail');
- return;
- }
- console.log('audio timeUpadate success. seekDoneTime: ' + newTime);
- });
- audioPlayer.play(); //開始播放后,自動觸發(fā)時間戳更新事件
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)方法。 |
示例:
- audioPlayer.on('error', (error) => { //設置'error'事件回調(diào)
- console.error(`audio error called, error: ${error}`);
- });
- audioPlayer.setVolume(3); //設置volume為無效值,觸發(fā)'error'事件
音頻播放的狀態(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)。 |
從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+ | 是 | 是 | 視頻媒體文件描述,使用場景:應用中的視頻資源被連續(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+ | 是 | 是 | 視頻縮放模式。 | |
audioInterruptMode9+ | 是 | 是 | 音頻焦點模型。 | |
currentTime8+ | number | 是 | 否 | 視頻的當前播放位置,單位為毫秒(ms)。 |
duration8+ | number | 是 | 否 | 視頻時長,單位為毫秒(ms),返回-1表示直播模式。 |
state8+ | 是 | 否 | 視頻播放的狀態(tài)。 | |
width8+ | number | 是 | 否 | 視頻寬,單位為像素(px)。 |
height8+ | number | 是 | 否 | 視頻高,單位為像素(px)。 |
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)方法。 |
示例:
- let surfaceId = null;
- videoPlayer.setDisplaySurface(surfaceId, (err) => {
- if (err == null) {
- console.info('setDisplaySurface success!');
- } else {
- console.error('setDisplaySurface fail!');
- }
- });
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返回值。 |
示例:
- let surfaceId = null;
- videoPlayer.setDisplaySurface(surfaceId).then(() => {
- console.info('setDisplaySurface success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
prepare(callback: AsyncCallback<void>): void
通過回調(diào)方式準備播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 準備播放視頻的回調(diào)方法。 |
示例:
- videoPlayer.prepare((err) => {
- if (err == null) {
- console.info('prepare success!');
- } else {
- console.error('prepare fail!');
- }
- });
prepare(): Promise<void>
通過Promise方式準備播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 準備播放視頻的Promise返回值。 |
示例:
- videoPlayer.prepare().then(() => {
- console.info('prepare success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
play(callback: AsyncCallback<void>): void;
通過回調(diào)方式開始播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 開始播放視頻的回調(diào)方法。 |
示例:
- videoPlayer.play((err) => {
- if (err == null) {
- console.info('play success!');
- } else {
- console.error('play fail!');
- }
- });
play(): Promise<void>;
通過Promise方式開始播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 開始播放視頻的Promise返回值。 |
示例:
- videoPlayer.play().then(() => {
- console.info('play success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
pause(callback: AsyncCallback<void>): void
通過回調(diào)方式暫停播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 暫停播放視頻的回調(diào)方法。 |
示例:
- videoPlayer.pause((err) => {
- if (err == null) {
- console.info('pause success!');
- } else {
- console.info('pause fail!');
- }
- });
pause(): Promise<void>
通過Promise方式暫停播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 暫停播放視頻的Promise返回值。 |
示例:
- videoPlayer.pause().then(() => {
- console.info('pause success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
stop(callback: AsyncCallback<void>): void
通過回調(diào)方式停止播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 停止播放視頻的回調(diào)方法。 |
示例:
- videoPlayer.stop((err) => {
- if (err == null) {
- console.info('stop success!');
- } else {
- console.error('stop fail!');
- }
- });
stop(): Promise<void>
通過Promise方式停止播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 停止播放視頻的Promise返回值。 |
示例:
- videoPlayer.stop().then(() => {
- console.info('stop success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
reset(callback: AsyncCallback<void>): void
通過回調(diào)方式重置播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 切換播放視頻的回調(diào)方法。 |
示例:
- videoPlayer.reset((err) => {
- if (err == null) {
- console.info('reset success!');
- } else {
- console.error('reset fail!');
- }
- });
reset(): Promise<void>
通過Promise方式重置播放視頻。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 切換播放視頻的Promise返回值。 |
示例:
- videoPlayer.reset().then(() => {
- console.info('reset success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
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)方法。 |
示例:
- let seekTime = 5000;
- videoPlayer.seek(seekTime, (err, result) => {
- if (err == null) {
- console.info('seek success!');
- } else {
- console.error('seek fail!');
- }
- });
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 | 是 | 跳轉(zhuǎn)模式。 | |
callback | AsyncCallback<number> | 是 | 跳轉(zhuǎn)到指定播放位置的回調(diào)方法。 |
示例:
- import media from '@ohos.multimedia.media'
- let seekTime = 5000;
- videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC, (err, result) => {
- if (err == null) {
- console.info('seek success!');
- } else {
- console.error('seek fail!');
- }
- });
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 | 否 | 基于視頻I幀的跳轉(zhuǎn)模式,默認為SEEK_PREV_SYNC模式。 |
返回值:
類型 | 說明 |
---|---|
Promise<number> | 跳轉(zhuǎn)到指定播放位置的Promise返回值,單位ms。 |
示例:
- import media from '@ohos.multimedia.media'
- let seekTime = 5000;
- videoPlayer.seek(seekTime).then((seekDoneTime) => { // seekDoneTime表示seek完成后的時間點
- console.info('seek success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
- videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
- console.info('seek success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
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)方法。 |
示例:
- let vol = 0.5;
- videoPlayer.setVolume(vol, (err, result) => {
- if (err == null) {
- console.info('setVolume success!');
- } else {
- console.error('setVolume fail!');
- }
- });
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返回值。 |
示例:
- let vol = 0.5;
- videoPlayer.setVolume(vol).then(() => {
- console.info('setVolume success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
release(callback: AsyncCallback<void>): void
通過回調(diào)方式釋放視頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<void> | 是 | 釋放視頻資源的回調(diào)方法。 |
示例:
- videoPlayer.release((err) => {
- if (err == null) {
- console.info('release success!');
- } else {
- console.error('release fail!');
- }
- });
release(): Promise<void>
通過Promise方式釋放視頻資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<void> | 釋放視頻資源的Promise返回值。 |
示例:
- videoPlayer.release().then(() => {
- console.info('release success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
getTrackDescription(callback: AsyncCallback<Array<MediaDescription>>): void
通過回調(diào)方式獲取視頻軌道信息。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
callback | AsyncCallback<Array<MediaDescription>> | 是 | 視頻軌道信息MediaDescription數(shù)組回調(diào)方法。 |
示例:
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('video key is ' + item);
- console.info('video value is ' + property);
- }
- }
- videoPlayer.getTrackDescription((error, arrList) => {
- if ((arrList) != null) {
- for (let i = 0; i < arrList.length; i++) {
- printfDescription(arrList[i]);
- }
- } else {
- console.log(`video getTrackDescription fail, error:${error}`);
- }
- });
getTrackDescription(): Promise<Array<MediaDescription>>
通過Promise方式獲取視頻軌道信息。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
返回值:
類型 | 說明 |
---|---|
Promise<Array<MediaDescription>> | 視頻軌道信息MediaDescription數(shù)組Promise返回值。 |
示例:
- function printfDescription(obj) {
- for (let item in obj) {
- let property = obj[item];
- console.info('video key is ' + item);
- console.info('video value is ' + property);
- }
- }
- let arrayDescription;
- videoPlayer.getTrackDescription().then((arrList) => {
- if (arrList != null) {
- arrayDescription = arrList;
- } else {
- console.log('video getTrackDescription fail');
- }
- }).catch((error) => {
- console.info(`video catchCallback, error:${error}`);
- });
- for (let i = 0; i < arrayDescription.length; i++) {
- printfDescription(arrayDescription[i]);
- }
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)方法。 |
示例:
- import media from '@ohos.multimedia.media'
- let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
- videoPlayer.setSpeed(speed, (err, result) => {
- if (err == null) {
- console.info('setSpeed success!');
- } else {
- console.error('setSpeed fail!');
- }
- });
setSpeed(speed:number): Promise<number>
通過Promise方式設置播放速度。
系統(tǒng)能力: SystemCapability.Multimedia.Media.VideoPlayer
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
speed | number | 是 | 指定播放視頻速度,具體見PlaybackSpeed。 |
返回值:
類型 | 說明 |
---|---|
Promise<number> | 播放速度Promise返回值,具體見PlaybackSpeed。 |
示例:
- import media from '@ohos.multimedia.media'
- let speed = media.PlaybackSpeed.SPEED_FORWARD_2_00_X;
- videoPlayer.setSpeed(speed).then(() => {
- console.info('setSpeed success');
- }).catch((error) => {
- console.error(`video catchCallback, error:${error}`);
- });
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)方法。 |
示例:
- videoPlayer.on('playbackCompleted', () => {
- console.info('playbackCompleted success!');
- });
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。 |
示例:
- videoPlayer.on('bufferingUpdate', (infoType, value) => {
- console.log('video bufferingInfo type: ' + infoType);
- console.log('video bufferingInfo value: ' + value);
- });
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)方法。 |
示例:
- videoPlayer.on('startRenderFrame', () => {
- console.info('startRenderFrame success!');
- });
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表示高。 |
示例:
- videoPlayer.on('videoSizeChanged', (width, height) => {
- console.log('video width is: ' + width);
- console.log('video height is: ' + height);
- });
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)方法。 |
示例:
- videoPlayer.on('error', (error) => { // 設置'error'事件回調(diào)
- console.error(`video error called, error: ${error}`);
- });
- videoPlayer.url = 'fd://error'; //設置錯誤的播放地址,觸發(fā)'error'事件
視頻播放的狀態(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)。 |
從API version 6開始支持,從API version 9開始廢棄,建議使用AVRecorder替代。
音頻錄制管理類,用于錄制音頻媒體。在調(diào)用AudioRecorder的方法前,需要先通過createAudioRecorder() 構(gòu)建一個AudioRecorder實例。
prepare(config: AudioRecorderConfig): void
錄音準備。
需要權(quán)限: ohos.permission.MICROPHONE
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
參數(shù):
參數(shù)名 | 類型 | 必填 | 說明 |
---|---|---|---|
config | 是 | 配置錄音的相關(guān)參數(shù),包括音頻輸出URI、編碼格式、采樣率、聲道數(shù)、輸出格式等。 |
示例:
- let audioRecorderConfig = {
- audioEncoder : media.AudioEncoder.AAC_LC,
- audioEncodeBitRate : 22050,
- audioSampleRate : 22050,
- numberOfChannels : 2,
- format : media.AudioOutputFormat.AAC_ADTS,
- uri : 'fd://1', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
- location : { latitude : 30, longitude : 130},
- }
- audioRecorder.on('prepare', () => { //設置'prepare'事件回調(diào)
- console.log('prepare success');
- });
- audioRecorder.prepare(audioRecorderConfig);
start(): void
開始錄制,需在prepare事件成功觸發(fā)后,才能調(diào)用start方法。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('start', () => { //設置'start'事件回調(diào)
- console.log('audio recorder start success');
- });
- audioRecorder.start();
pause():void
暫停錄制,需要在start事件成功觸發(fā)后,才能調(diào)用pause方法。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('pause', () => { //設置'pause'事件回調(diào)
- console.log('audio recorder pause success');
- });
- audioRecorder.pause();
resume():void
恢復錄制,需要在pause事件成功觸發(fā)后,才能調(diào)用resume方法。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('resume', () => { //設置'resume'事件回調(diào)
- console.log('audio recorder resume success');
- });
- audioRecorder.resume();
stop(): void
停止錄音。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('stop', () => { //設置'stop'事件回調(diào)
- console.log('audio recorder stop success');
- });
- audioRecorder.stop();
release(): void
釋放錄音資源。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('release', () => { //設置'release'事件回調(diào)
- console.log('audio recorder release success');
- });
- audioRecorder.release();
- audioRecorder = undefined;
reset(): void
重置錄音。
進行重置錄音之前,需要先調(diào)用stop()停止錄音。重置錄音之后,需要調(diào)用prepare()設置錄音參數(shù)項,才能再次進行錄音。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
示例:
- audioRecorder.on('reset', () => { //設置'reset'事件回調(diào)
- console.log('audio recorder reset success');
- });
- audioRecorder.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)方法。 |
示例:
- let audioRecorder = media.createAudioRecorder(); // 創(chuàng)建一個音頻錄制實例
- let audioRecorderConfig = {
- audioEncoder : media.AudioEncoder.AAC_LC,
- audioEncodeBitRate : 22050,
- audioSampleRate : 22050,
- numberOfChannels : 2,
- format : media.AudioOutputFormat.AAC_ADTS,
- uri : 'fd://xx', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
- location : { latitude : 30, longitude : 130},
- }
- audioRecorder.on('error', (error) => { // 設置'error'事件回調(diào)
- console.info(`audio error called, error: ${error}`);
- });
- audioRecorder.on('prepare', () => { // 設置'prepare'事件回調(diào)
- console.log('prepare success');
- audioRecorder.start(); // 開始錄制,并觸發(fā)'start'事件回調(diào)
- });
- audioRecorder.on('start', () => { // 設置'start'事件回調(diào)
- console.log('audio recorder start success');
- });
- audioRecorder.on('pause', () => { // 設置'pause'事件回調(diào)
- console.log('audio recorder pause success');
- });
- audioRecorder.on('resume', () => { // 設置'resume'事件回調(diào)
- console.log('audio recorder resume success');
- });
- audioRecorder.on('stop', () => { // 設置'stop'事件回調(diào)
- console.log('audio recorder stop success');
- });
- audioRecorder.on('release', () => { // 設置'release'事件回調(diào)
- console.log('audio recorder release success');
- });
- audioRecorder.on('reset', () => { // 設置'reset'事件回調(diào)
- console.log('audio recorder reset success');
- });
- audioRecorder.prepare(audioRecorderConfig) // 設置錄制參數(shù) ,并觸發(fā)'prepare'事件回調(diào)
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)方法。 |
示例:
- let audioRecorderConfig = {
- audioEncoder : media.AudioEncoder.AAC_LC,
- audioEncodeBitRate : 22050,
- audioSampleRate : 22050,
- numberOfChannels : 2,
- format : media.AudioOutputFormat.AAC_ADTS,
- uri : 'fd://xx', // 文件需先由調(diào)用者創(chuàng)建,并給予適當?shù)臋?quán)限
- location : { latitude : 30, longitude : 130},
- }
- audioRecorder.on('error', (error) => { // 設置'error'事件回調(diào)
- console.error(`audio error called, error: ${error}`);
- });
- audioRecorder.prepare(audioRecorderConfig); // prepare不設置參數(shù),觸發(fā)'error'事件
從API version 6開始支持,從API version 9開始廢棄,建議使用AVRecorderConfig替代。
表示音頻的錄音配置。
系統(tǒng)能力: SystemCapability.Multimedia.Media.AudioRecorder
名稱 | 類型 | 必填 | 說明 |
---|---|---|---|
audioEncoder | 否 | 音頻編碼格式,默認設置為AAC_LC。 說明: 從API version 8開始廢棄,建議使用audioEncoderMime替代。 | |
audioEncodeBitRate | number | 否 | 音頻編碼比特率,默認值為48000。 |
audioSampleRate | number | 否 | 音頻采集采樣率,默認值為48000。 |
numberOfChannels | number | 否 | 音頻采集聲道數(shù),默認值為2。 |
format | 否 | 音頻輸出封裝格式,默認設置為MPEG_4。 說明: 從API version 8開始廢棄,建議使用fileFormat替代。 | |
location | 否 | 音頻采集的地理位置。 | |
uri | string | 是 | 音頻輸出URI:fd://xx (fd number) 文件需要由調(diào)用者創(chuàng)建,并賦予適當?shù)臋?quán)限。 |
audioEncoderMime8+ | 否 | 音頻編碼格式。 | |
fileFormat8+ | 否 | 音頻編碼格式。 |
從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)編碼格式。 僅做接口定義,暫不支持使用。 |
從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 |
更多建議: