uni-app中plus.video.createLivePusher 部分安卓手机无法正常切换到前置摄像头,画面卡死

发布于 1周前 作者 vueper 来自 uni-app

uni-app中plus.video.createLivePusher 部分安卓手机无法正常切换到前置摄像头,画面卡死

项目信息

项目创建方式 开发环境 版本号
2 回复

请问这个问题解决了吗


uni-app 中使用 plus.video.createLivePusher 创建直播推流对象时,如果遇到部分安卓手机无法正常切换到前置摄像头且画面卡死的问题,通常是由于设备兼容性或API调用不当引起的。以下是一个示例代码,展示了如何正确地创建直播推流对象,并在不同设备上切换摄像头。

首先,确保你已经正确引入了 uni-app5+ App(HBuilderX)的相关依赖。

// 创建一个直播推流对象
let livePusher = plus.video.createLivePusher({
    top: '0px',
    left: '0px',
    width: '100%',
    height: '100%',
    position: 'absolute',
    success: function(e) {
        console.log('Live Pusher Created:', e);
    },
    fail: function(e) {
        console.error('Live Pusher Create Failed:', e);
    }
});

// 切换摄像头函数
function switchCamera() {
    if (livePusher) {
        let currentCamera = livePusher.getCamera();
        let newCamera = (currentCamera === 'front') ? 'back' : 'front';
        livePusher.setCamera(newCamera, {
            success: function(e) {
                console.log('Camera Switched to:', newCamera);
            },
            fail: function(e) {
                console.error('Camera Switch Failed:', e);
                // 尝试恢复原始摄像头,防止应用崩溃
                livePusher.setCamera(currentCamera, {
                    success: function() {
                        console.log('Camera Reset to:', currentCamera);
                    },
                    fail: function(err) {
                        console.error('Camera Reset Failed:', err);
                    }
                });
            }
        });
    }
}

// 监听页面显示事件,确保DOM已加载
document.addEventListener('plusready', function() {
    // 示例:按钮点击事件切换摄像头
    document.getElementById('switchCameraBtn').addEventListener('click', switchCamera);
});

// HTML 示例
// <button id="switchCameraBtn">Switch Camera</button>

注意事项

  1. 权限问题:确保在 manifest.json 中已经声明了摄像头权限。
  2. 设备兼容性:不同安卓设备对 plus.video API 的支持程度不同,特别是在摄像头切换上。部分低端设备或定制系统可能存在兼容性问题。
  3. 错误处理:在切换摄像头失败时,尝试恢复原始摄像头,防止应用崩溃。
  4. 调试信息:利用 console.logconsole.error 打印调试信息,帮助定位问题。

如果以上代码仍然无法解决问题,建议检查具体设备的系统日志,或尝试在设备厂商提供的开发者社区中寻求帮助,因为某些问题可能是由设备特定的系统或硬件限制引起的。

回到顶部