uni-app live-pusher在vue文件下无法正常使用 会出现闪退 Android并且无法切换至前置摄像头

发布于 1周前 作者 itying888 来自 Uni-App

uni-app live-pusher在vue文件下无法正常使用 会出现闪退 Android并且无法切换至前置摄像头

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 window10
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 Android
手机系统版本号 Android 11
手机厂商 小米
手机机型 小米11
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 正操操作

预期结果:

  • 解决在vue下无法使用live-pusher

实际结果:

  • 无法使用前置摄像头,并出现闪退

bug描述:

app平台的 3.4.1+ vue页面已支持 live-pusher,3.4.1以前的版本 需编写条件编译代码,使用 plus.video.LivePusher,业务指南、规范文档。还是推荐直接使用nvue里的live-pusher组件。 在vue下无法使用live-pusher的前置摄像头,nvue是可以的

下载测试文件


2 回复

使用live-pusher的前置摄像头时,会卡住


在使用 uni-applive-pusher 组件时,出现闪退且无法切换至前置摄像头的问题,可能是由于以下几个原因导致的。以下是一些可能的解决方案和排查步骤:

1. 权限问题

  • 检查权限:确保在 manifest.json 中已经正确配置了摄像头和麦克风权限。
    {
      "permission": {
        "android": {
          "camera": {
            "description": "需要摄像头权限"
          },
          "recordAudio": {
            "description": "需要麦克风权限"
          }
        }
      }
    }
  • 动态请求权限:在代码中动态请求权限,确保用户已经授权。
    uni.authorize({
      scope: 'scope.camera',
      success() {
        console.log('摄像头权限已授权');
      },
      fail() {
        console.log('摄像头权限未授权');
      }
    });
    
    uni.authorize({
      scope: 'scope.record',
      success() {
        console.log('麦克风权限已授权');
      },
      fail() {
        console.log('麦克风权限未授权');
      }
    });

2. live-pusher 配置问题

  • 检查 live-pusher 配置:确保 live-pusher 组件的配置正确,特别是 camera 属性。
    <live-pusher
      id="pusher"
      url="rtmp://your-rtmp-url"
      mode="SD"
      autopush
      :camera="camera"
      @statechange="onStateChange"
    ></live-pusher>
    export default {
      data() {
        return {
          camera: 'front' // 或者 'back'
        };
      },
      methods: {
        onStateChange(e) {
          console.log('state change:', e.detail);
        }
      }
    };

3. 切换摄像头

  • 切换摄像头的方法:确保在切换摄像头时,正确更新 camera 属性。
    methods: {
      switchCamera() {
        this.camera = this.camera === 'front' ? 'back' : 'front';
      }
    }

4. 闪退问题

  • 日志排查:查看 Android 的日志输出,定位闪退的具体原因。可以使用 adb logcat 命令来查看日志。
  • 内存问题:确保应用没有因为内存不足或其他资源问题导致闪退。
  • 版本兼容性:检查 uni-applive-pusher 的版本是否兼容,尝试更新到最新版本。

5. 其他可能的原因

  • 设备兼容性:某些 Android 设备可能存在兼容性问题,尝试在其他设备上测试。
  • 网络问题:确保网络连接稳定,特别是在推流时。

6. 调试工具

  • 使用 HBuilderX 调试:使用 HBuilderX 的调试工具,查看控制台输出和错误信息,帮助定位问题。

7. 官方文档和社区

  • 查阅官方文档:参考 uni-app 官方文档 中的 live-pusher 部分,确保使用方法正确。
  • 社区支持:在 DCloud 社区 中搜索相关问题,或提问寻求帮助。

示例代码

以下是一个简单的 live-pusher 使用示例:

<template>
  <view>
    <live-pusher
      id="pusher"
      url="rtmp://your-rtmp-url"
      mode="SD"
      autopush
      :camera="camera"
      @statechange="onStateChange"
    ></live-pusher>
    <button @click="switchCamera">切换摄像头</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      camera: 'front'
    };
  },
  methods: {
    switchCamera() {
      this.camera = this.camera === 'front' ? 'back' : 'front';
    },
    onStateChange(e) {
      console.log('state change:', e.detail);
    }
  }
};
</script>
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!