收藏
回答

vivo大部分手机同时录制音频和视频时导致获取到的录音播放没有声音以及视频播放也没有声音

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug getRecorderManager、createCameraContext 微信安卓客户端 8.0.65 3.11.3
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);
            });


最后一次编辑于  2025-11-24
回答关注问题邀请回答
收藏

3 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2025-11-28

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2025-11-28
    有用
    回复
  • Am
    Am
    2025-11-24

    存在问题的机型: iQoo 15、iQoo 10、vivo S30、iQOO Z9、ⅤiVO  X100、vivo X100 Pro、vivo  X100、ViVOX 100、VIVO S30、VIVO Y300i 其他机型就没有问题

    2025-11-24
    有用
    回复 2
    • Z
      Z
      2025-12-11
      我们应该也遇到了,楼主你后来有解决吗
      2025-12-11
      回复
    • Am
      Am
      2025-12-23回复Z
      没 改需求了
      2025-12-23
      回复
  • 智能回答 智能回答 本次回答由AI生成
    2025-11-24
    有用
登录 后发表内容