问题现象
业务场景:朋友圈发送视频,一般限制大小是15s。所以是否可以通过参数来控制拍摄视频的最大时长,比如30秒或者60秒等?
背景知识
- 系统相机开发可参考通过系统相机拍照和录像,开发者调用picker方法会直接跳转到系统相机页面,功能完备齐全。
- 自定义相机开发需要开发者自行开发相机拍照与录像功能。
解决方案
- 使用系统相机时,可以通过相机配置选项PickerProfiles中的videoDuration设置录制的最大时长,默认单位是秒。
let pickerProfile: picker.PickerProfile = {
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK,
// 录制的最大时长(单位:秒)
videoDuration: 5
};
let pickerResult: picker.PickerResult = await picker.pick(context,
[picker.PickerMediaType.PHOTO, picker.PickerMediaType.VIDEO], pickerProfile); - 使用自定义相机录制视频,可以通过配置音视频参数AVRecorderConfig中的maxDuration设置录制的最大时长,单位为秒。
let aVRecorderConfig: media.AVRecorderConfig = {
audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,
videoSourceType: media.VideoSourceType.VIDEO_SOURCE_TYPE_SURFACE_YUV,
profile: aVRecorderProfile,
url: `fd://${file.fd.toString()}`, // 文件需先由调用者创建,赋予读写权限,将文件fd传给此参数,eg.fd://45--file:///data/media/01.mp4
metadata: avMetadata,
maxDuration: 5
};