【问题标题】:How to play audio files from Google Drive (Swift 5)如何从 Google Drive (Swift 5) 播放音频文件
【发布时间】:2020-10-16 05:43:55
【问题描述】:

在我的项目中,我使用了 Google Drive API。我得到了用户文件的列表,并且可以将它们保存到设备内存中。 我也希望能够直接从 Google Drive 播放音频文件,但我就是做不到。 AVPlayer 不想使用我传输给他的 URL 链接播放音频文件。但是,如果我将此链接粘贴到任何浏览器中,则会播放该曲目。 有没有人遇到过这个问题并且知道如何解决这个问题?如果有任何帮助,我将不胜感激。 我的代码看起来像这样(它是一个简化版本):

import AVKit

class MyVC: UIViewController {
...
var player: AVPlayer!
...
private func playTrack() {
   let url = URL(string: "https://drive.google.com/uc?export=open&id=XXXXX" //where XXXXX is an item id
   let playerItem: AVPlayerItem = AVPlayerItem(url: url!)
   player = AVPlayer(playerItem: playerItem)
   player!.play()
   }
}

例如,我传输到 AVPlayer 的 URL 链接如下所示:

https://drive.google.com/uc?export=open&id=1JzuAhQ-7R01wLhtD8zEN_sC5nvFlt7wU

但如果我将它粘贴到浏览器中,它会自动更改并如下所示:

https://doc-0g-1s-docs.googleusercontent.com/docs/securesc/anu2dlv0j1ugsoh1pb6b8qpkkt7k1j6k/hp3dnmru336i1cpkk4f5p4bstc83b30f/1602827400000/02426681720429398713/02426681720429398713/1JzuAhQ-7R01wLhtD8zEN_sC5nvFlt7wU?e=open&authuser=0&nonce=4dd9dhoo6he8g&user=02426681720429398713&hash=o87f0k3t4iv19ugae899urmcjd14ogiq

也许这很重要。

【问题讨论】:

  • 所以提供的 URL 需要任何 google session 的身份验证或没有身份验证,它会工作吗?
  • 当然是认证成功了,不然我就拿不到文件id了。我写的是例子中的代码被简化了。
  • 是的,您在身份验证后获得该 ID,但要访问特定 URL,您需要在其中传递您的令牌,否则您无法直接访问,这就是我在您的案例中看到的问题。
  • 但是为什么即使我没有登录谷歌它也能在浏览器中运行?
  • 例如,检查您的第二个 URL 是否正常工作,因为您的浏览器中有一个活动会话,因此它将获取用户会话详细信息并将其附加到您的项目 URL 中。

标签: ios swift google-drive-api avplayer


【解决方案1】:

您的文件应通过 Google Drive 中的直接链接共享以播放,以便您可以手动制作或使用 API,例如:

然后使用格式的直接链接:https://drive.google.com/uc?export=open&id=XXXXX

【讨论】:

  • 对不起,但我尝试使用这样的链接:_https://drive.google.com/file/d/1JzuAhQ-7R01wLhtD8zEN_sC5nvFlt7wU/view?usp=sharing 我也尝试遵循这个解决方案: stackoverflow.com/questions/55726883/… 但对我也没有帮助
  • 您应该首先共享对您文件的访问权限,然后使用drive.google.com/uc?export=open&id=XXXXX 格式的链接。我已经用我的谷歌驱动器的文件进行了测试,它工作正常。
  • 如您所见,我也在尝试对 URL 链接使用相同的格式。显然我在访问该文件时遇到了问题,您能否更详细地解释一下“您应该先共享对您的文件的访问权”的意思?
  • 默认情况下,您所有的文件都具有Restricted 访问权限,因此如果您通过设置Anyone with the link 共享文件,则它们可以通过直接、预览等链接访问。
  • 抱歉,我必须在哪里更改?
猜你喜欢
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2019-03-31
  • 1970-01-01
  • 2017-03-30
  • 2021-09-05
相关资源
最近更新 更多