HarmonyOS API:@ohos.multimedia.media (媒体服务)

joytrian
发布于 2023-4-4 16:00
浏览
0收藏

版本:v3.1 Beta

@ohos.multimedia.media (媒体服务)

VideoPlayer8+

视频播放管理类,用于管理和播放视频媒体。在调用VideoPlayer的方法前,需要先通过​​createVideoPlayer()​​​构建一个​​VideoPlayer​​实例。

视频播放demo可参考:​​视频播放开发指导​

属性

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称

类型

可读

可写

说明

url8+

string

视频媒体URL,支持当前主流的视频格式(mp4、mpeg-ts、webm、mkv)。

支持路径示例

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



HarmonyOS API:@ohos.multimedia.media (媒体服务)-鸿蒙开发者社区



2. http网络播放: ​​http://xx​

3. https网络播放: ​​https://xx​

4. hls网络播放路径:​​http://xx或者https://xx​

fdSrc9+

​AVFileDescriptor​

视频媒体文件描述,使用场景:应用中的视频资源被连续存储在同一个文件中。

使用示例

假设一个连续存储的音乐文件:

视频1(地址偏移:0,字节长度:100)

视频2(地址偏移:101,字节长度:50)

视频3(地址偏移:151,字节长度: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

视频循环播放属性,设置为'true'表示循环播放。

currentTime8+

number

视频的当前播放位置,单位为毫秒(ms)。

duration8+

number

视频时长,单位为毫秒(ms),返回-1表示直播模式。

state8+

​VideoPlayState​

视频播放的状态。

width8+

number

视频宽,单位为像素(px)。

height8+

number

视频高,单位为像素(px)。

setDisplaySurface8+

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

通过回调方式设置SurfaceId。

*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

SurfaceId

string

SurfaceId

callback

AsyncCallback<void>

设置SurfaceId的回调方法。

示例:

let SurfaceId = null;
videoPlayer.setDisplaySurface(SurfaceId, (err) => {
    if (err == null) {
        console.info('setDisplaySurface success!');
    } else {
        console.info('setDisplaySurface fail!');
    }
});

setDisplaySurface8+

setDisplaySurface(SurfaceId: string): Promise<void>

通过Promise方式设置SurfaceId。

*注意:SetDisplaySurface需要在设置url和Prepare之间,无音频的视频流必须设置Surface否则Prepare失败。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

SurfaceId

string

SurfaceId

返回值:

类型

说明

Promise<void>

设置SurfaceId的Promise返回值。

示例:

let SurfaceId = null;
videoPlayer.setDisplaySurface(SurfaceId).then(() => {
    console.info('setDisplaySurface success');
}).catch((error) => {
   console.info(`video catchCallback, error:${error}`);
});

prepare8+

prepare(callback: AsyncCallback<void>): void

通过回调方式准备播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

准备播放视频的回调方法。

示例:

videoPlayer.prepare((err) => {
    if (err == null) {
        console.info('prepare success!');
    } else {
        console.info('prepare fail!');
    }
});

prepare8+

prepare(): Promise<void>

通过Promise方式准备播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

准备播放视频的Promise返回值。

示例:

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

play8+

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

通过回调方式开始播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

开始播放视频的回调方法。

示例:

videoPlayer.play((err) => {
    if (err == null) {
        console.info('play success!');
    } else {
        console.info('play fail!');
    }
});

play8+

play(): Promise<void>;

通过Promise方式开始播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

开始播放视频的Promise返回值。

示例:

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

pause8+

pause(callback: AsyncCallback<void>): void

通过回调方式暂停播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

暂停播放视频的回调方法。

示例:

videoPlayer.pause((err) => {
    if (err == null) {
        console.info('pause success!');
    } else {
        console.info('pause fail!');
    }
});

pause8+

pause(): Promise<void>

通过Promise方式暂停播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

暂停播放视频的Promise返回值。

示例:

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

stop8+

stop(callback: AsyncCallback<void>): void

通过回调方式停止播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

停止播放视频的回调方法。

示例:

videoPlayer.stop((err) => {
    if (err == null) {
        console.info('stop success!');
    } else {
        console.info('stop fail!');
    }
});

stop8+

stop(): Promise<void>

通过Promise方式停止播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

停止播放视频的Promise返回值。

示例:

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

reset8+

reset(callback: AsyncCallback<void>): void

通过回调方式重置播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

切换播放视频的回调方法。

示例:

videoPlayer.reset((err) => {
    if (err == null) {
        console.info('reset success!');
    } else {
        console.info('reset fail!');
    }
});

reset8+

reset(): Promise<void>

通过Promise方式重置播放视频。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

切换播放视频的Promise返回值。

示例:

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

seek8+

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

通过回调方式跳转到指定播放位置,默认跳转到指定时间点的下一个关键帧。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

timeMs

number

指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。

callback

AsyncCallback<number>

跳转到指定播放位置的回调方法。

示例:

let seekTime = 5000;
videoPlayer.seek(seekTime, (err, result) => {
    if (err == null) {
        console.info('seek success!');
    } else {
        console.info('seek fail!');
    }
});

seek8+

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

通过回调方式跳转到指定播放位置。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

timeMs

number

指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。

mode

​SeekMode​

跳转模式。

callback

AsyncCallback<number>

跳转到指定播放位置的回调方法。

示例:

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.info('seek fail!');
    }
});

seek8+

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

通过Promise方式跳转到指定播放位置,如果没有设置mode则跳转到指定时间点的下一个关键帧。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

timeMs

number

指定的跳转时间节点,单位毫秒(ms),取值范围为[0, duration]。

mode

​SeekMode​

跳转模式。

返回值:

类型

说明

Promise<number>

跳转到指定播放位置的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.info(`video catchCallback, error:${error}`);
});

videoPlayer.seek(seekTime, media.SeekMode.SEEK_NEXT_SYNC).then((seekDoneTime) => {
    console.info('seek success');
}).catch((error) => {
   console.info(`video catchCallback, error:${error}`);
});

setVolume8+

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

通过回调方式设置音量。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

vol

number

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

callback

AsyncCallback<void>

设置音量的回调方法。

示例:

let vol = 0.5;
videoPlayer.setVolume(vol, (err, result) => {
    if (err == null) {
        console.info('setVolume success!');
    } else {
        console.info('setVolume fail!');
    }
});

setVolume8+

setVolume(vol: number): Promise<void>

通过Promise方式设置音量。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

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.info(`video catchCallback, error:${error}`);
});

release8+

release(callback: AsyncCallback<void>): void

通过回调方式释放视频资源。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

释放视频资源的回调方法。

示例:

videoPlayer.release((err) => {
    if (err == null) {
        console.info('release success!');
    } else {
        console.info('release fail!');
    }
});

release8+

release(): Promise<void>

通过Promise方式释放视频资源。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<void>

释放视频资源的Promise返回值。

示例:

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

getTrackDescription8+

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

通过回调方式获取视频轨道信息。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

callback

AsyncCallback<Array<​​MediaDescription​​>>

视频轨道信息MediaDescription数组回调方法。

示例:

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}`);
    }
});

getTrackDescription8+

getTrackDescription(): Promise<Array<MediaDescription>>

通过Promise方式获取视频轨道信息。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

返回值:

类型

说明

Promise<Array<​​MediaDescription​​>>

视频轨道信息MediaDescription数组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]);
}

setSpeed8+

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

通过回调方式设置播放速度。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

speed

number

指定播放视频速度,具体见​​PlaybackSpeed​​。

callback

AsyncCallback<number>

设置播放速度的回调方法。

示例:

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.info('setSpeed fail!');
    }
});

setSpeed8+

setSpeed(speed:number): Promise<number>

通过Promise方式设置播放速度。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

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.info(`video catchCallback, error:${error}`);
});

on('playbackCompleted')8+

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

开始监听视频播放完成事件。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

type

string

视频播放完成事件回调类型,支持的事件:'playbackCompleted'。

callback

function

视频播放完成事件回调方法。

示例:

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

on('bufferingUpdate')8+

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

开始监听视频缓存更新事件。仅网络播放支持该订阅事件。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

type

string

视频缓存事件回调类型,支持的事件:'bufferingUpdate'。

callback

function

视频缓存事件回调方法。

​BufferingInfoType​​为BUFFERING_PERCENT时,value值有效,否则固定为0。

示例:

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

on('startRenderFrame')8+

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

开始监听视频播放首帧送显上报事件。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

type

string

视频播放首帧送显上报事件回调类型,支持的事件:'startRenderFrame'。

callback

Callback<void>

视频播放首帧送显上报事件回调方法。

示例:

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

on('videoSizeChanged')8+

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

开始监听视频播放宽高变化事件。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

type

string

视频播放宽高变化事件回调类型,支持的事件:'videoSizeChanged'。

callback

function

视频播放宽高变化事件回调方法,width表示宽,height表示高。

示例:

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

on('error')8+

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

开始监听视频播放错误事件,当上报error错误事件后,用户需处理error事件,退出播放操作。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

参数:

参数名

类型

必填

说明

type

string

播放错误事件回调类型,支持的事件包括:'error'。

- 'error':视频播放中发生错误,触发该事件。

callback

ErrorCallback

播放错误事件回调方法。

示例:

videoPlayer.on('error', (error) => {      // 设置'error'事件回调
    console.info(`video error called, error: ${error}`);
});
videoPlayer.url = 'fd://error';  //设置错误的播放地址,触发'error'事件

VideoPlayState8+

视频播放的状态机,可通过state属性获取当前状态。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称

类型

说明

idle

string

视频播放空闲。

prepared

string

视频播放准备。

playing

string

视频正在播放。

paused

string

视频暂停播放。

stopped

string

视频播放停止。

error

string

错误状态。

SeekMode8+

视频播放的Seek模式枚举,可通过seek方法作为参数传递下去。

系统能力: SystemCapability.Multimedia.Media.Core

名称

说明

SEEK_NEXT_SYNC

0

表示跳转到指定时间点的下一个关键帧,建议向后快进的时候用这个枚举值。

SEEK_PREV_SYNC

1

表示跳转到指定时间点的上一个关键帧,建议向前快进的时候用这个枚举值。

PlaybackSpeed8+

视频播放的倍速枚举,可通过setSpeed方法作为参数传递下去。

系统能力: 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+

枚举,视频缩放模式。

系统能力: SystemCapability.Multimedia.Media.VideoPlayer

名称

说明

VIDEO_SCALE_TYPE_FIT

0

视频拉伸至与窗口等大。

MediaDescription8+

通过key-value方式获取媒体信息。

系统能力: 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}`);
    }
});

AudioRecorder

音频录制管理类,用于录制音频媒体。在调用AudioRecorder的方法前,需要先通过​​createAudioRecorder()​​​ 构建一个​​AudioRecorder​​实例。

音频录制demo可参考:​​音频录制开发指导​

prepare

prepare(config: AudioRecorderConfig): void

录音准备。

需要权限: ohos.permission.MICROPHONE

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名

类型

必填

说明

config

​AudioRecorderConfig​

配置录音的相关参数,包括音频输出URI、编码格式、采样率、声道数、输出格式等。

示例:

let audioRecorderConfig = {
    audioEncoder : media.AudioEncoder.AAC_LC,
    audioEncodeBitRate : 22050,
    audioSampleRate : 22050,
    numberOfChannels : 2,
    format : media.AudioOutputFormat.AAC_ADTS,
    uri : 'fd://1',       // 文件需先由调用者创建,并给予适当的权限
    location : { latitude : 30, longitude : 130},
}
audioRecorder.on('prepare', () => {    //设置'prepare'事件回调
    console.log('prepare success');
});
audioRecorder.prepare(audioRecorderConfig);

start

start(): void

开始录制,需在​​prepare​​事件成功触发后,才能调用start方法。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('start', () => {    //设置'start'事件回调
    console.log('audio recorder start success');
});
audioRecorder.start();

pause

pause():void

暂停录制,需要在​​start​​事件成功触发后,才能调用pause方法。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('pause', () => {    //设置'pause'事件回调
    console.log('audio recorder pause success');
});
audioRecorder.pause();

resume

resume():void

恢复录制,需要在​​pause​​事件成功触发后,才能调用resume方法。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('resume', () => {    //设置'resume'事件回调
    console.log('audio recorder resume success');
});
audioRecorder.resume();

stop

stop(): void

停止录音。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('stop', () => {    //设置'stop'事件回调
    console.log('audio recorder stop success');
});
audioRecorder.stop();

release

release(): void

释放录音资源。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('release', () => {    //设置'release'事件回调
    console.log('audio recorder release success');
});
audioRecorder.release();
audioRecorder = undefined;

reset

reset(): void

重置录音。

进行重置录音之前,需要先调用​​stop()​​​停止录音。重置录音之后,需要调用​​prepare()​​设置录音参数项,才能再次进行录音。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

示例:

audioRecorder.on('reset', () => {    //设置'reset'事件回调
    console.log('audio recorder reset success');
});
audioRecorder.reset();

on('prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset')

on(type: 'prepare' | 'start' | 'pause' | 'resume' | 'stop' | 'release' | 'reset', callback: () => void): void

开始订阅音频录制事件。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名

类型

必填

说明

type

string

录制事件回调类型,支持的事件包括:'prepare' | 'start' | 'pause' | ’resume‘ | 'stop' | 'release' | 'reset'。

- 'prepare' :完成​​prepare​​调用,音频录制参数设置完成,触发该事件。

- 'start' :完成​​start​​调用,音频录制开始,触发该事件。

- 'pause': 完成​​pause​​调用,音频暂停录制,触发该事件。

- 'resume': 完成​​resume​​调用,音频恢复录制,触发该事件。

- 'stop' :完成​​stop​​调用,音频停止录制,触发该事件。

- 'release' :完成​​release​​调用,音频释放录制资源,触发该事件。

- 'reset':完成​​reset​​调用,音频重置为初始状态,触发该事件。

callback

()=>void

录制事件回调方法。

示例:

let audioRecorder = media.createAudioRecorder();                                  // 创建一个音频录制实例
let audioRecorderConfig = {
    audioEncoder : media.AudioEncoder.AAC_LC,
    audioEncodeBitRate : 22050,
    audioSampleRate : 22050,
    numberOfChannels : 2,
    format : media.AudioOutputFormat.AAC_ADTS,
    uri : 'fd://xx',                                                            // 文件需先由调用者创建,并给予适当的权限
    location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error) => {                                             // 设置'error'事件回调
    console.info(`audio error called, error: ${error}`);
});
audioRecorder.on('prepare', () => {                                              // 设置'prepare'事件回调
    console.log('prepare success');
    audioRecorder.start();                                                       // 开始录制,并触发'start'事件回调
});
audioRecorder.on('start', () => {                                                 // 设置'start'事件回调
    console.log('audio recorder start success');
});
audioRecorder.on('pause', () => {                                                 // 设置'pause'事件回调
    console.log('audio recorder pause success');
});
audioRecorder.on('resume', () => {                                                 // 设置'resume'事件回调
    console.log('audio recorder resume success');
});
audioRecorder.on('stop', () => {                                                 // 设置'stop'事件回调
    console.log('audio recorder stop success');
});
audioRecorder.on('release', () => {                                                 // 设置'release'事件回调
    console.log('audio recorder release success');
});
audioRecorder.on('reset', () => {                                                 // 设置'reset'事件回调
    console.log('audio recorder reset success');
});
audioRecorder.prepare(audioRecorderConfig)                                       // 设置录制参数 ,并触发'prepare'事件回调

on('error')

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

开始订阅音频录制错误事件,当上报error错误事件后,用户需处理error事件,退出录制操作。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

参数:

参数名

类型

必填

说明

type

string

录制错误事件回调类型'error'。

- 'error':音频录制过程中发生错误,触发该事件。

callback

ErrorCallback

录制错误事件回调方法。

示例:

let audioRecorderConfig = {
    audioEncoder : media.AudioEncoder.AAC_LC,
    audioEncodeBitRate : 22050,
    audioSampleRate : 22050,
    numberOfChannels : 2,
    format : media.AudioOutputFormat.AAC_ADTS,
    uri : 'fd://xx',                                                     // 文件需先由调用者创建,并给予适当的权限
    location : { latitude : 30, longitude : 130},
}
audioRecorder.on('error', (error) => {                                  // 设置'error'事件回调
    console.info(`audio error called, error: ${error}`); 
});
audioRecorder.prepare(audioRecorderConfig);                            // prepare不设置参数,触发'error'事件

AudioRecorderConfig

表示音频的录音配置。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

名称

类型

必填

说明

audioEncoder(deprecated)

​AudioEncoder​

音频编码格式,默认设置为AAC_LC。

说明: 从API Version 8 开始废弃,建议使用audioEncoderMime替代。

audioEncodeBitRate

number

音频编码比特率,默认值为48000。

audioSampleRate

number

音频采集采样率,默认值为48000。

numberOfChannels

number

音频采集声道数,默认值为2。

format(deprecated)

​AudioOutputFormat​

音频输出封装格式,默认设置为MPEG_4。

说明: 从API Version 8 开始废弃,建议使用fileFormat替代。

location

​Location​

音频采集的地理位置。

uri

string

音频输出URI:fd://xx (fd number)


HarmonyOS API:@ohos.multimedia.media (媒体服务)-鸿蒙开发者社区


文件需要由调用者创建,并赋予适当的权限。

audioEncoderMime8+

​CodecMimeType​

音频编码格式。

fileFormat8+

​ContainerFormatType​

音频编码格式。

AudioEncoder(deprecated)

说明

从 API Version 8 开始废弃,建议使用​​CodecMimeType​​替代。


表示音频编码格式的枚举。

系统能力: 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 8 开始废弃,建议使用​​ContainerFormatType​​替代。


表示音频封装格式的枚举。

系统能力: SystemCapability.Multimedia.Media.AudioRecorder

名称

说明

DEFAULT

0

默认封装格式。

仅做接口定义,暂不支持使用。

MPEG_4

2

封装为MPEG-4格式。

AMR_NB

3

封装为AMR_NB格式。

仅做接口定义,暂不支持使用。

AMR_WB

4

封装为AMR_WB格式。

仅做接口定义,暂不支持使用。

AAC_ADTS

6

封装为ADTS(Audio Data Transport Stream)格式,是AAC音频的传输流格式。

ContainerFormatType8+

表示容器格式类型的枚举,缩写为CFT。

系统能力: SystemCapability.Multimedia.Media.Core

名称

说明

CFT_MPEG_4

'mp4'

视频的容器格式,MP4。

CFT_MPEG_4A

'm4a'

音频的容器格式,M4A。

Location

视频录制的地理位置。

系统能力: SystemCapability.Multimedia.Media.Core

名称

类型

必填

说明

latitude

number

地理位置的纬度。

longitude

number

地理位置的经度。


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-media-0000001427902672-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001427902672__audiorecorderconfig​


已于2023-4-4 16:00:21修改
收藏
回复
举报
回复
    相关推荐