猿问

如何使用google drive api托管或流式传输在google drive中上传的视频

我正在开发网络应用程序,我需要通过谷歌驱动器 api 流式传输在谷歌驱动器中上传的视频。我已经创建了服务帐户来上传文件、查看文件和授予权限。相反,我授予了在特定域中共享文件的权限,我正在尝试从子域访问文件,如下所示。在这里作为示例,我正在使用 w3school.com 来访问流视频。

以下是我授予域权限的代码:**我也尝试授予电子邮件权限,然后视频成功播放**


https://developers.google.com/drive/api/v3/manage-sharing


 $domainPermission = new Google_Service_Drive_Permission(array(

        'type' => 'domain',

        'role' => 'reader',

        'domain' => 'w3schools.com'

    ));

    $request = $driveService->permissions->create(

        $fileId, $domainPermission, array('fields' => 'id'));

    $batch->add($request, 'domain');

 $results = $batch->execute();

要让网络链接流式传输视频如下:


$service = new Google_Service_Drive($client);


$fileId = 'xxxxxxxxxxxxxxxxxw5e4zLE5mLv9lYob';


$argument = array(

                  "fields"=>"webViewLink",

                  );

  $file = $service->files->get($fileId,  $argument);


  echo "<pre>";

  print_r($file);


it give's webviewlink as follow's 

https://drive.google.com/file/d/xxxxxxxxxxxxxxxxw5e4zLE5mLv9lYob/view?usp=drivesdk


Now to stream video example html code is like this 

<!DOCTYPE html>

<html>

<body>


<video width="320" height="240" controls>

  <source src="https://drive.google.com/file/d/xxxxxxxxxxx5mLv9lYob/view?usp=drivesdk" type="video/mp4">

</video>



</body>

</html>`

我无法在我的子域或主域中播放此视频,例如:webaccess.w3schools.com 或 w3schools.com


过程中可能出现什么错误。请帮忙谢谢。


侃侃无极
浏览 230回答 1
1回答

一只名叫tom的猫

我认为您的问题是由于跨域读取阻塞 (CORB)。所以在你的情况下,如何使用webContentLink而不是webViewLink?就像下面的网址。https://drive.google.com/uc?id=xxxxxxxxxxx5mLv9lYob&export=download当你的 HTML 被修改时,它变成如下。修改后的 HTML:<!DOCTYPE html><html><body><video width="320" height="240" controls>&nbsp; <source src="https://drive.google.com/uc?id=xxxxxxxxxxx5mLv9lYob&export=download" type="video/mp4"></video></body></html>笔记:在这种情况下,需要共享视频文件。请注意这一点。参考:Drive API 文件如果这不能解决您的问题,我深表歉意。
随时随地看视频慕课网APP
我要回答