Flutter imagepicker.pickvideo 返回 jpg

Posted

技术标签:

【中文标题】Flutter imagepicker.pickvideo 返回 jpg【英文标题】:Flutter imagepicker.pickvideo return jpg 【发布时间】:2021-01-30 17:16:04 【问题描述】:

我正在使用它来返回视频文件,但我得到了 .jpg

Future<File> getVideo() async 
     var video = await ImagePicker.pickVideo(
          source: ImageSource.gallery);
      return video;
    

我想ImagePicker.pickVideo() 返回视频文件而不是 .jpg 文件,以便我可以将此文件上传到 firebase,我该如何实现?

【问题讨论】:

【参考方案1】:

我假设您正在使用该软件包: https://pub.dev/packages/image_picker

pickVideo() 方法已被弃用,您需要将这些 API 替换为 getVideo()

正如存储库文档所解释的: https://github.com/flutter/plugins/tree/master/packages/image_picker/image_picker

这样写:

final _picker = ImagePicker();
PickedFile video = await _picker.getVideo(...)

但是我建议使用这个包作为替代方案: https://pub.dev/packages/flutter_document_picker

此包将允许您选择设备上的所有视频,包括从用户的 Google Drive 或 iCloud 提供商获取的视频。在这种情况下写这个:

FlutterDocumentPickerParams params = FlutterDocumentPickerParams(
      allowedUtiTypes: [
        'public.video',
        'public.mpeg',
        'public.mpeg-4-audio',
        'com.apple.protected-​mpeg-4-audio'
      ],
      allowedMimeTypes: [
        'video/mpeg',
        'video/x-flv',
        'video/mp4',
        'application/x-mpegURL',
        'video/quicktime',
        'video/x-msvideo',
        'video/x-ms-wmv',
        'video/ogg',
        'video/mp2t',
        'video/3gpp'
      ],
      invalidFileNameSymbols: ['/'],
    );

    return await FlutterDocumentPicker.openDocument(params: params);

您需要确保 iosandroid 上视频的 Mimes 和 Uti 类型设置正确。

【讨论】:

我试过了,但是当我将它转换为文件时,它仍然返回 jpg 尝试我当时建议的其他包 暂时试一试,如果它适合你,这是一个临时解决方法 能否通过返回文件的方式查看结果。所以尝试获取生成的视频文件的路径,然后 print()。检查从包 image_picker 返回的文件是否正确(因为它是视频文件而不是图像文件),或者它是您自己的代码。通常这是您代码中的错误。 感谢您建议使用 getVideo.. 并且在功能上它可以工作,但我困惑了几秒钟,因为它返回 jpg 文件但是当我在 firebase 中看到这个文件时,它被识别为视频.. 我只是好奇为什么它的名字包含'jpg'所以我认为这是它的扩展

以上是关于Flutter imagepicker.pickvideo 返回 jpg的主要内容,如果未能解决你的问题,请参考以下文章

[Flutter] flutter项目一直卡在 Running Gradle task 'assembleDebug'...

flutter 日志输出,Flutter打印日志,flutter log,flutter 真机日志

Flutter开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )

flutter与原生混编(iOS)

Flutter-布局

如何解决flutter gradle build error?C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 991