flutter - 如何在 Better Player - Flutter 中播放 Google Drive 中的视频?

标签 flutter google-drive-api flutter-web exoplayer flutter-video-player

在我的应用程序中,我已经与谷歌登录集成,并且成功访问了我的谷歌驱动器文件夹和视频文件(mp4)。但更好的播放器可以通过修改网址来播放公共(public)视频,例如 https://drive.google.com/uc?id=my_video_file_id。 我想开发一个像NplayerKudoplayer这样的应用程序。

有人可以指导我一些 Nplayer 或 Kudoplayer 的场景吗?并指导我如何使用更好的播放器播放私有(private)驱动器的视频。谢谢。

最佳答案

终于经过很长时间的研究,我得到了解决方案:-)

此问题的摘要答案

  • 别忘了添加 headersBetterPlayerDataSource

  • 不要使用此格式 "https://drive.google.com/uc?export=view&id=${fileId}"

  • 使用此格式 "https://www.googleapis.com/drive/v3/files/${fileId}?alt=media"


对于像我一样面临问题的人,请按照以下步骤操作

  • 启用 Drive API
  • 将 Google 登录与适当的 Scpoe 集成到您的应用中,对我来说driveReadonlyScope就足够了。
  • 检索 fileId

我坚持的下一步是

  • 别忘了添加headersBetterPlayerDataSource
  • 不要使用此格式 "https://drive.google.com/uc?export=view&id=${fileId}"
  • 使用此格式 "https://www.googleapis.com/drive/v3/files/${fileId}?alt=media"

像这样

BetterPlayerDataSource betterPlayerDataSource = BetterPlayerDataSource(
  BetterPlayerDataSourceType.network,
    "https://www.googleapis.com/drive/v3/files/$fileId?alt=media",
    videoExtension: ".mp4",
    headers: getDataFromCache(CacheManagerKey.authHeader),
 );

authHeader当你调用signWithGoogle函数时可以得到, 我保存它并稍后检索。在 signWithGoogle函数,你可以使用这个获取 authHeader

Map<String, String> authHeader = await googleSignIn.currentUser!.authHeaders;

奖励 - 为您查询。

  • 获取与我分享的数据 = > q: "'sharedWithMe = true and (mimeType = 'video/mp4' or mimeType = 'application/vnd.google-apps.folder')"
  • 获取共享云端硬盘数据 => q: "'shared_drive_id' in parents and trashed=false and (mimeType = 'video/mp4' or mimeType = 'application/vnd.google-apps.folder')" ,
  • 获取我的硬盘数据 => q: "'root' in parents and trashed=false and (mimeType = 'video/mp4' or mimeType = 'application/vnd.google-apps.folder')" ,

关于flutter - 如何在 Better Player - Flutter 中播放 Google Drive 中的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73539853/

相关文章:

flutter - 为什么 Dart Uri 用 "+"替换空格?

flutter - 在Firestore文档中搜索数据/值/关键字

javascript - 如何获取一行并将该行和文本字符串合并为一个新行

debugging - 如何在Flutter web中调试或打印?

flutter - 如何在同一台机器上同时使用 Flutter stable 和 dev SDK?

flutter - 如何在 Flutter Web 应用程序中保存和下载文本文件

flutter - 如何在彩色矩形内制作透明圆

flutter - Flutter:从文本小部件获取单个单词

php - 使用 cron 执行 PHP 将文件上传到 Google 驱动器

ruby - 是否有可能 'unload' ('un-require' ) 一个 Ruby 库?