uni-app 使用plus.gallery.pick选择多个视频时加载时间长

uni-app 使用plus.gallery.pick选择多个视频时加载时间长

示例代码:

res => {},  
err => {},  
{  
  maximum: 20,  
  animation: true,  
  filter: 'video',  
  multiple: true,  
  permissionAlert: true  
}

操作步骤:

  • 使用 API 选择视频多个,就会出现

预期结果:

  • 期望 加载时间短点,加载时间长这样影响用户体验

实际结果:

  1. 选择多个视频,加载时间较长
  2. 选择了之前的视频之后,提示从icloud同步照片

bug描述:

  • 使用 plus.gallery.pick
  1. 选择多个视频,加载时间较长
  2. 选择了之前的视频之后,提示从icloud同步照片

image



| 信息类别       | 详细信息               |
|----------------|------------------------|
| 产品分类       | uniapp/App             |
| PC开发环境操作系统 | Windows                |
| PC开发环境操作系统版本号 | Windows 10 专业版 20H2 |
| HBuilderX类型    | 正式                   |
| HBuilderX版本号  | 3.1.22                 |
| 手机系统        | iOS                    |
| 手机系统版本号    | iOS 13.4               |
| 手机厂商        | 苹果                   |
| 手机机型        | iphone8                |
| 页面类型        | vue                    |
| 打包方式        | 云端                   |
| 项目创建方式     | HBuilderX              |

更多关于uni-app 使用plus.gallery.pick选择多个视频时加载时间长的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

视频需要有个转码压缩的过程,时间就是比较长;
图片在iCloud上的话,需要先下载到本地就会提示正在同步;

更多关于uni-app 使用plus.gallery.pick选择多个视频时加载时间长的实战教程也可以访问 https://www.itying.com/category-93-b0.html


您好,可以想办法优化一下吗?还是这个已经优化过了呢

plus.gallery.pick 在 iOS 上选择多个视频时加载时间长,主要与 iOS 系统相册的实现机制有关。当选择多个视频(尤其是高清或 iCloud 存储的视频)时,系统需要从 iCloud 下载或从本地准备视频数据,这个过程是系统级行为,应用层无法直接控制其速度。

针对加载时间长的问题,可以尝试以下优化方案:

  1. 限制选择数量:通过 maximum 参数减少单次选择的视频数量,例如设为 5 或 10,以降低系统一次性处理的数据量。
  2. 使用系统相册的“优化存储”模式:用户开启 iCloud 照片库的“优化 iPhone 存储空间”后,系统会自动管理本地和云端数据,可能减少同步等待时间(需用户手动设置)。
  3. 分步处理:先让用户选择视频,获取到文件路径后,在后台异步处理视频(如上传、压缩),避免主线程阻塞,提升界面响应速度。
  4. 降级到非多选模式:如果业务允许,考虑使用 multiple: false 单次选择单个视频,多次操作来累积选择。

关于 iCloud 同步提示:这是 iOS 系统的正常行为。当用户选择的视频存储在 iCloud 且未完全下载到本地时,系统会自动触发下载并显示同步提示。应用无法屏蔽此提示,因为它属于系统级相册功能的一部分。

代码调整示例

plus.gallery.pick(
  res => {
    // 异步处理视频,避免阻塞
    this.handleVideosAsync(res.files);
  },
  err => {},
  {
    maximum: 10, // 减少单次选择数量
    filter: 'video',
    multiple: true,
    system: false // 确保使用系统相册(默认值)
  }
);
回到顶部