接口说明
接口名 |
功能描述 |
---|---|
Recorder() |
创建Recorder实例。 |
setSource(Source source) |
设置音视频源。 |
setAudioProperty(AudioProperty property) |
设置音频属性。 |
setVideoProperty(VideoProperty property) |
设置视频属性。 |
setStorageProperty(StorageProperty property) |
设置音视频存储属性。 |
prepare() |
准备录制资源。 |
start() |
开始录制。 |
stop() |
停止录制。 |
pause() |
暂停录制。 |
resume() |
恢复录制。 |
reset() |
重置录制。 |
setRecorderLocation(float latitude, float longitude) |
设置视频的经纬度。 |
setOutputFormat(int outputFormat) |
设置输出文件格式。 |
getVideoSurface() |
获取视频窗口。 |
setRecorderProfile(RecorderProfile profile) |
设置媒体录制配置信息。 |
registerRecorderListener(IRecorderListener listener) |
注册媒体录制回调。 |
release() |
释放媒体录制资源。 |
开发步骤
- 调用Recorder()方法,创建Recorder实例。
- 构造数据源对象,并调用Recorder实例的setSource(Source source)方法,设置媒体源,代码示例如下:
Recorder recorder = new Recorder();
Source source = new Source();
source.setRecorderAudioSource(Recorder.AudioSource.MIC);
source.setRecorderVideoSource(Recorder.VideoSource.SURFACE);
recorder.setSource(source);
- 调用setOutputFormat(int outputFormat)方法,设置录制文件存储格式。
- (可选)构造音频属性AudioProperty对象(不设置音频则是只录视频),并调用Recorder实例的setAudioProperty(AudioProperty property)方法,设置录制的音频属性,代码示例如下:
AudioProperty audioProperty = new AudioProperty.Builder()
.setRecorderNumChannels(2)
.setRecorderSamplingRate(192000)
.setRecorderAudioEncoder(Recorder.AudioEncoder.AAC)
.setRecorderBitRate(48000)
.build();
recorder.setAudioProperty(audioProperty);
构造存储属性StorageProperty对象,并调用Recorder实例的setStorageProperty(StorageProperty property)方法,设置录制的存储属性,代码示例如下:
String path = “/sdcard/audiotestRecord.mp4”;
StorageProperty storageProperty = new StorageProperty.Builder()
.setRecorderPath(path)
.setRecorderMaxDurationMs(1000000)
.setRecorderMaxFileSizeBytes(1000000)
.build();
recorder.setStorageProperty(storageProperty);
(可选)构造视频属性VideoProperty对象,并调用Recorder实例的setVideoProperty(VideoProperty property)方法,设置录制的视频属性,代码示例如下:
VideoProperty videoProperty = new VideoProperty.Builder()
.setRecorderVideoEncoder(Recorder.VideoEncoder.H264)
.setRecorderWidth(3840)
.setRecorderDegrees(90)
.setRecorderHeight(2160)
.setRecorderBitRate(40000000)
.setRecorderRate(30)
.setRecorderFps(30)
.build();
recorder.setVideoProperty(videoProperty);
recorder.prepare();
- 调用prepare(),准备录制。录制请参考《相机开发指导》
- (可选)构造录制回调,首先构造对象IRecorderListener,IRecorderListener需要实现onError(int what, int extra),实现录制过程收到错误信息时做相应的操作。下面的代码例子中录制异常时,打印了相关的日志信息,代码示例如下:
private HiLogLabel TAG = new HiLogLabel(HiLog.DEBUG, 0xD000500, “MainAblityTest”);
class RecorderErrorAndInfoListener implements IRecorderListener {
@Override
public void onError(int what, int extra) {
}
@Override
public void onMessage(int what, int extra) {
}
}
IRecorderListener listener = new RecorderErrorAndInfoListener() {
@Override
public void onError(int what, int extra) {
HiLog.error(TAG, “EncodeWriteFileListener onError what:%{public}d, extra:%{public}d”, what, extra);
}
}
- 调用start()方法,开始录制。
- (可选)调用pause()方法和resume()方法,可以实现暂停和恢复录制。
- 调用 stop()方法停止录制。
- 录制结束后,调用release()释放资源。