uni-app中plus.gallery.pick多选视频无法使用uni.getVideoInfo获取视频信息

uni-app中plus.gallery.pick多选视频无法使用uni.getVideoInfo获取视频信息

plus.gallery.pick:使用此方法选择视频,单选时地址为:file:///var/xxx,此时可以使用uni.getVideoInfo获取视频信息,多选时地址为:file:///file:/var/xxx,此时需要将格式处理成单选的格式才可以使用uni.getVideoInfo获取视频信息。这个问题是昨天我打包ios更新后发现的问题,安卓暂时还没有测试,之前是没有问题的,之前的基座也没有问题,重新打包最新基座会出现

1 回复

更多关于uni-app中plus.gallery.pick多选视频无法使用uni.getVideoInfo获取视频信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,如果你发现使用plus.gallery.pick进行多选视频后,无法通过uni.getVideoInfo获取视频信息,这通常是因为plus.gallery.pick返回的是本地文件路径,而uni.getVideoInfo主要用于获取网络视频的信息。对于本地文件,你需要使用不同的方法来获取其详细信息。

以下是一个处理多选视频并获取其本地信息的示例代码。这里我们将使用plus.io模块来读取视频文件的详细信息,比如时长、大小等。

// 引入必要的模块
const gallery = plus.gallery;
const io = plus.io;

// 选择视频文件
gallery.pick({
    maximum: 9, // 最大选择数量
    filter: "video", // 只选择视频
    success: function (e) {
        let files = e.files;
        files.forEach(file => {
            // 获取文件路径
            let filePath = file.toLocalURL();
            
            // 读取文件信息
            io.resolveLocalFileSystemURL(filePath, function (entry) {
                entry.file(function (file) {
                    // 获取文件大小
                    let size = file.size;
                    
                    // 这里可以通过其他方式获取视频时长等信息,例如使用ffmpeg等第三方库
                    // 注意:直接通过plus API无法获取本地视频时长,需要借助第三方库
                    console.log('File Name: ' + entry.name);
                    console.log('File Size: ' + size + ' bytes');
                    
                    // 示例:假设你有一个ffmpeg的封装可以获取时长
                    // getVideoDuration(filePath).then(duration => {
                    //     console.log('Video Duration: ' + duration + ' seconds');
                    // });
                }, function (e) {
                    console.error('Error reading file: ' + JSON.stringify(e));
                });
            }, function (e) {
                console.error('Error resolving file URL: ' + JSON.stringify(e));
            });
        });
    },
    fail: function (e) {
        console.error('Failed to pick files: ' + JSON.stringify(e));
    }
});

// 假设的获取视频时长的函数(需要引入ffmpeg等库)
// function getVideoDuration(filePath) {
//     return new Promise((resolve, reject) => {
//         // 使用ffmpeg或其他库获取时长
//         // 例如:ffmpeg.ffprobe(filePath, (err, metadata) => {
//         //     if (err) reject(err);
//         //     resolve(metadata.format.duration);
//         // });
//     });
// }

请注意,直接通过plus API无法获取本地视频的时长信息。为了获取视频的时长,你可能需要引入第三方库,如ffmpeg,来解析视频文件。上面的代码中提供了一个假设的getVideoDuration函数占位符,你需要根据实际情况实现它。

此外,确保你的项目中已经正确配置了相关依赖和权限,以便能够访问和读取本地文件系统。

回到顶部