在我的应用程序中,我已经与谷歌登录集成,并且成功访问了我的谷歌驱动器文件夹和视频文件(mp4)。但更好的播放器可以通过修改网址来播放公共(public)视频,例如 https://drive.google.com/uc?id=my_video_file_id
。
我想开发一个像Nplayer或Kudoplayer这样的应用程序。
有人可以指导我一些 Nplayer 或 Kudoplayer 的场景吗?并指导我如何使用更好的播放器播放私有(private)驱动器的视频。谢谢。
最佳答案
终于经过很长时间的研究,我得到了解决方案:-)
此问题的摘要答案
别忘了添加
headers
在BetterPlayerDataSource
不要使用此格式
"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
我坚持的下一步是
- 别忘了添加
headers
在BetterPlayerDataSource
- 不要使用此格式
"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/