a***@newxsy.com
a***@newxsy.com
  • 发布:2022-07-30 18:48
  • 更新:2025-01-12 13:37
  • 阅读:2009

【急急急急】livePusher组件,snapshot拍照方法不走回调,并且调用多次APP就闪退

分类:uni-app

安卓APP端
问题1:调用snapshot不触发回调
问题2:多次调用snapshot,APP会闪退

已经换了2个手机试,都是这样

2022-07-30 18:48 负责人:无 分享
已邀请:
a***@newxsy.com

a***@newxsy.com (作者)

//拍照  
      this.livePusher.snapshot({  
        success: (e) => {  
          console.log(e);  
        },  
        complete: (err) => {  
          console.log(err)  
        }  
      })
a***@newxsy.com

a***@newxsy.com (作者)

没人吗

a***@newxsy.com

a***@newxsy.com (作者)

没人吗

你听说我好吗

你听说我好吗

一样 我的是华为闪退 别的都ok 只希望华为速度倒闭

星拾夜暝

星拾夜暝

首先,关于 snapshot 拍照方法不走回调的问题,可能是由于以下原因导致的:

参数设置错误:在使用 snapshot 方法时,需要正确设置相应的参数,包括图片质量、保存路径等。如果参数设置不正确,则可能导致无法触发回调的问题。

回调函数未正确绑定:在使用 snapshot 方法时,需要正确绑定相应的回调函数,确保在拍照完成后能够正确执行相应的回调操作。如果回调函数未正确绑定,则可能导致无法触发回调的问题。

关于 APP 闪退的问题,可能是由于以下原因导致的:

内存泄漏:在多次调用 snapshot 方法时,可能会产生内存泄漏的问题,导致 APP 闪退。

调用过于频繁:在多次调用 snapshot 方法时,如果调用过于频繁,可能会导致系统资源不足,从而导致 APP 闪退。

针对以上问题,可以尝试以下解决方法:

检查参数设置和回调函数绑定是否正确,确保在使用 snapshot 方法时能够正确触发回调操作。

减少 snapshot 方法的调用次数,避免调用过于频繁,从而导致内存泄漏和系统资源不足的问题。

另外,可以在调试过程中使用调试工具,查看具体的报错信息,从而更准确地定位问题所在。
注意:
检查是否正确使用了livePusher组件的snapshot方法,确保传入了正确的参数。

检查是否在调用snapshot方法之前已经调用了stop方法,如果是,则可能会导致snapshot方法不走回调。

检查是否在调用snapshot方法之前已经调用了destroy方法,如果是,则可能会导致snapshot方法不走回调。

检查是否在调用snapshot方法之前已经调用了pause方法,如果是,则可能会导致snapshot方法不走回调。

检查是否在调用snapshot方法之前已经调用了resume方法,如果是,则可能会导致snapshot方法不走回调。

如果调用snapshot方法时APP闪退,可能是由于内存泄漏等原因导致的,可以通过调用系统的内存清理方法来解决。

1***@qq.com

1***@qq.com - twj

我试了uniapp的组件和html5联盟的,都是会出现闪退的情况,uniapp的我用的文档里的例子,点三次就闪退,请问你的有解决吗

6***@qq.com

6***@qq.com - regouhui

可能是什么页面的响应式导致live-pusher组件内部被重新渲染了,导致ref拿到的对象不一致,控制live-pusher只渲染一次就可以了,我vue3写的nvue,live-pusher标签加上v-once问题就解决了

1***@qq.com

1***@qq.com

被折磨了很多天,今天终于在一篇问题中看到了解决方案,就是每次拍照成功后关闭原来的livepusher,重新创建就不会闪退了

initLivePusher() {  
                if (this.pusher) {  
                    this.pusher.close(); // 关闭现有的LivePusher  
                    this.pusher = null  
                }  
                // 创建 livePusher 对象  
                this.pusher = plus.video.createLivePusher('livepusher', {  
                    url: '',  
                    top: '70%',  
                    left: '0px',  
                    width: '100px',  
                    height: '100px',  
                    position: 'fixed',  
                    aspect: '9:16',  
                    muted: true,  
                    'z-index': 99,  
                    'border-radius': '0px',  
                })  
                // 获取当前页面的 webview  
                const currentWebview = this.$mp.page.$getAppWebview()  
                // 将 livePusher 添加到当前页面的 webview 中  
                currentWebview.append(this.pusher)  
            },  
            autoTakePhoto() {  
                if (!this.isTakingPhoto) {  
                    this.isTakingPhoto = true  
                    this.capturedImage = ''  
                    if (this.pusher) {  
                        this.pusher.snapshot(  
                            (res) => {  
                                console.log('拍照成功,图片路径:', res)  
                                //多次调用拍照会导致应用闪退,重新建立新的直播流  
                                this.initLivePusher()  
                            },  
                            (err) => {  
                                console.error('拍照失败:', err)  
                                // 对于不同设备的兼容性处理  
                                if (err.code === -1) {  
                                    console.error('设备不支持此功能,请尝试使用其他设备')  
                                } else {  
                                    console.error('其他错误导致拍照失败:', err)  
                                }  
                            }  
                        )  
                    } else {  
                        console.error('pusher 未正确初始化')  
                    }  
                } else {  
                    console.log('正在拍照,请稍候')  
                }  
            },
  • b***@biovascula.com

    为啥我连 this.livePusher.snapshot 都不执行

    2025-02-07 15:44

  • 1***@qq.com

    回复 b***@biovascula.com: 我是没法用官方的LivePusher,nvue也用不了,所以用到5+app的api,这个真的巨难开发,全是bug,正常你页面显示了画面是不会不能调用的

    2025-02-14 19:03

要回复问题请先登录注册