diff --git a/android/src/main/java/com/chavesgu/images_picker/ImagesPickerPlugin.java b/android/src/main/java/com/chavesgu/images_picker/ImagesPickerPlugin.java index 169be90..4ff75f4 100644 --- a/android/src/main/java/com/chavesgu/images_picker/ImagesPickerPlugin.java +++ b/android/src/main/java/com/chavesgu/images_picker/ImagesPickerPlugin.java @@ -258,12 +258,15 @@ public void run() { map.put("path", path); String thumbPath; + double duration = 0; if (media.getMimeType().contains("image")) { thumbPath = path; } else { thumbPath = createVideoThumb(path); + duration = media.getDuration()/1000.0; } map.put("thumbPath", thumbPath); + map.put("duration", duration); int size = getFileSize(path); map.put("size", size); diff --git a/ios/Classes/SwiftImagesPickerPlugin.swift b/ios/Classes/SwiftImagesPickerPlugin.swift index 90ec9ec..a338138 100644 --- a/ios/Classes/SwiftImagesPickerPlugin.swift +++ b/ios/Classes/SwiftImagesPickerPlugin.swift @@ -83,7 +83,12 @@ public class SwiftImagesPickerPlugin: NSObject, FlutterPlugin { let videoUrl = avasset as! AVURLAsset; let url = videoUrl.url; // TODO: mov to mp4 - resArr.append(self.resolveVideo(url: url)); + let dir =self.resolveVideo(url: url); + // let audioDuration = videoUrl.duration; + // let audioDurationSeconds = CMTimeGetSeconds(audioDuration); + //dir.updateValue(audioDurationSeconds, forKey: "duration"); + + resArr.append(dir); group.leave(); }) } else { @@ -298,7 +303,12 @@ public class SwiftImagesPickerPlugin: NSObject, FlutterPlugin { let urlStr = url.absoluteString; let path = (urlStr as NSString).substring(from: 7); dir.updateValue(path, forKey: "path"); - + + let video = AVURLAsset(url:url); + let audioDuration = video.duration; + + let audioDurationSeconds = CMTimeGetSeconds(audioDuration); + dir.updateValue(audioDurationSeconds, forKey: "duration"); // 获取视频封面图 if let thumb = self.getVideoThumbPath(url: path) { let thumbData = thumb.jpegData(compressionQuality: 1); // 转Data diff --git a/lib/images_picker.dart b/lib/images_picker.dart index a5b50cc..23f359f 100644 --- a/lib/images_picker.dart +++ b/lib/images_picker.dart @@ -48,6 +48,7 @@ class ImagesPicker { path: image["path"], size: ((image["size"] ?? 0) / 1024).toDouble(), thumbPath: image["thumbPath"], + duration: image["duration"] ?? 0, ); return media; }).toList(); @@ -96,6 +97,7 @@ class ImagesPicker { path: image["path"], size: ((image["size"] ?? 0) / 1024).toDouble(), thumbPath: image["thumbPath"], + duration: image["duration"] ?? 0, ); return media; }).toList(); @@ -194,9 +196,9 @@ class Media { /// 文件大小 double size; - Media({ - required this.path, - this.thumbPath, - required this.size, - }); + // 时长 仅视频有效 + double? duration; + + Media( + {required this.path, this.thumbPath, required this.size, this.duration}); }