uni-app 5+ gallery.pick 选择 195m 视频后 app 崩溃

uni-app 5+ gallery.pick 选择 195m 视频后 app 崩溃

信息项 内容
开发环境 HBuilderX
版本号 3.2.2
项目创建 无相关描述

示例代码:

pickConfig = {  
    animation: false,  
    filename: '_doc/images/',  
    filter: 'none',  
    multiple: true,  
    maximum: 9,  
    onmaxed: function() {  
        plus.nativeUI.toast('你最多只能选择' + pickConfig.maximum + '个图片或者视频')  
    },  
    popover: {},  
    selected: [],  
    system: false,  
    confirmText: '发送',  
    compress: true  
};  

plus.gallery.pick(function(res) {  
console.log(res)//这都没走。  
},function(e){},pickConfig)

操作步骤:

plus.gallery.pick(function(res) {
console.log(res)//这都没走。
},function(e){},pickConfig)

点击按钮,执行 plus.gallery.pick 选择图片和视频


### 预期结果:


选择成功

实际结果:

app 崩溃


更多关于uni-app 5+ gallery.pick 选择 195m 视频后 app 崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

??这个 bug 凉凉?

更多关于uni-app 5+ gallery.pick 选择 195m 视频后 app 崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html


问题分析:

根据你的描述,plus.gallery.pick 在选择大体积视频(195MB)时导致应用崩溃,且未进入回调函数。这通常与以下原因有关:

  1. 内存溢出:处理大视频时,系统可能因内存不足而崩溃。compress: true 在视频场景下可能触发压缩操作,进一步加剧内存压力。
  2. 视频处理超时:系统相册或底层模块处理大文件时耗时过长,引发应用无响应或崩溃。
  3. HBuilderX 版本兼容性:3.2.2 版本可能存在已知的 gallery.pick 处理大文件的缺陷。

解决方案:

  1. 关闭压缩选项:针对视频选择,建议将 compress 设为 false,避免立即触发高内存占用的压缩操作。
pickConfig.compress = false;
  1. 限制文件类型和大小:通过 filter 参数限制可选文件类型,或在前端选择后通过回调检查文件大小,若超过阈值则提示用户重新选择。
// 示例:仅允许选择视频
pickConfig.filter = "video";
  1. 更新开发工具:升级 HBuilderX 至最新稳定版,修复可能存在的底层兼容性问题。

  2. 分步处理大文件:选择视频后,先获取文件路径,再使用 plus.io 接口分段读取或使用后端处理,避免前端一次性加载整个文件。

修改后的配置建议:

pickConfig = {  
    animation: false,  
    filename: '_doc/images/',  
    filter: 'video', // 限制为视频,减少无关文件干扰
    multiple: false, // 单次选择大文件时建议关闭多选
    maximum: 1,  
    onmaxed: function() {  
        plus.nativeUI.toast('最多选择1个视频')  
    },  
    popover: {},  
    selected: [],  
    system: false,  
    confirmText: '发送',  
    compress: false // 关键:关闭压缩
};
回到顶部