1、同时录制音频和视频
try {
const audioRes = await audioStartRecording();
console.log('==startRecord 启动==init2===>', audioRes)
if (audioRes) {
await sleep(200);
const camaraRes = await videoStartRecording(timeoutCallback);
console.log('==startRecord 启动==init===>', audioRes, camaraRes)
if (camaraRes === RecordCallbackType.success) {
if (cameraFrame) {
extractFrame();
}
resolve({
audioRecordRes: audioRes,
videoRecordRes: camaraRes
})
} else {
console.log('==startRecord 失败===init=camaraRes=>' );
reject();
}
} else {
console.log('==startRecord 失败===init==audioRes==>', );
reject();
}
} catch(e) {
console.log('==startRecord catch=====>', e)
reject(e)
};
1、启动音频录制
const videoStartRecording = (callback?: any) => new Promise((resolve, reject) => {
console.log('videoStartRecording:启动开始录视频', recordPending.current);
cameraContext.current = wx.createCameraContext();
cameraContext.current?.startRecord({
timeout: 300,
success: () => {
console.log('startRecord-video: 开始录制了!');
resolve(RecordCallbackType.success);
},
timeoutCallback: () => {
callback?.()
reject(RecordCallbackType.timeoutCallback);
console.log('startRecord-video: 录制超时了!');
},
fail: (data) => {
console.log('startRecord-video: fail-录制失败了!', data);
},
complete: (data) => {
if (data.errMsg === 'operateCamera:ok') {
resolve(RecordCallbackType.success);
} else {
resolve(RecordCallbackType.complete);
}
console.log('startRecord-video: fail-complete-录制完成了!', data);
}
});
})
3、启动视频录制
const videoStartRecording = (callback?: any) => new Promise((resolve, reject) => {
console.log('videoStartRecording:启动开始录视频', recordPending.current);
cameraContext.current = wx.createCameraContext();
cameraContext.current?.startRecord({
timeout: 300,
success: () => {
console.log('startRecord-video: 开始录制了!');
resolve(RecordCallbackType.success);
},
timeoutCallback: () => {
callback?.()
reject(RecordCallbackType.timeoutCallback);
console.log('startRecord-video: 录制超时了!');
},
fail: (data) => {
console.log('startRecord-video: fail-录制失败了!', data);
},
complete: (data) => {
if (data.errMsg === 'operateCamera:ok') {
resolve(RecordCallbackType.success);
} else {
resolve(RecordCallbackType.complete);
}
console.log('startRecord-video: fail-complete-录制完成了!', data);
}
});
})
4、结束录制
const allRes = Promise.all([audioStopRecording(), videoStopRecording()]);
allRes.then(values => {
if (cameraFrame) {
offExtractFrame();
}
recordPending.current = false;
resolve({
audio: values[0],
video: values[1],
framePics: fileObj.current.framePics,
isIncludedVideo: !isCludedVideo,
})
}).catch(e => {
reject(e);
});
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。
存在问题的机型: iQoo 15、iQoo 10、vivo S30、iQOO Z9、ⅤiVO X100、vivo X100 Pro、vivo X100、ViVOX 100、VIVO S30、VIVO Y300i 其他机型就没有问题