【问题标题】:Stream Google Drive Content to Chromecast将 Google 云端硬盘内容流式传输到 Chromecast
【发布时间】:2019-03-27 04:06:06
【问题描述】:

我正在尝试构建一个应用程序,用户可以在其中播放谷歌驱动器存储的本地内容并进行投射。

根据谷歌驱动器文档Google Drive Developers Docs,我必须发出这样的http请求:

GET https://www.googleapis.com/drive/v3/files/0B9jNhSvVjoIVM3dKcGRKRmVIOVU?alt=media
Authorization: Bearer <ACCESS_TOKEN>

要在本地播放它,我使用的是exoplayer,它工作得非常顺利,我的问题是当我尝试投射内容时。

我想我已经阅读了来自 google cast 开发者网站 Google Cast Developers Docs 的所有关于发送者和接收者应用程序的文档,但我无法投射内容。

当我调试时接收器应用程序正在获取403 error,因为它需要身份验证。 403 Error on browser.

这个错误是因为我无法设置 HTTP 标头“Authorization: Bearer ACCESS_TOKEN”,因为据我所知没有设置 HTTP 标头的选项。 p>

我什至向 google Here 开了一个问题单,我在其中请求将该功能包含在通用接收器应用程序中,这样我们就不必仅为该功能托管接收器应用程序。他们回答了这个

"您将需要编写一个接收器并在playbackConfig.manifestRequestHandler 中提供一个处理程序来添加标头。 您将需要使用加载请求的 customData 字段来传递您的令牌或任何其他数据。"

所以,我尝试按照他们告诉我的操作,现在发送方应用程序将授权令牌发送到接收方应用程序,但我无法将令牌设置为请求标头。

这是接收方应用程序的当前代码。

const context = cast.framework.CastReceiverContext.getInstance();
const castOptions = new cast.framework.CastReceiverOptions();
const playerManager = context.getPlayerManager();

let playbackConfig = (Object.assign(new cast.framework.PlaybackConfig(), playerManager.getPlaybackConfig()));

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    request => {
    console.log("token: ", request.media.customData.token);

    playbackConfig.manifestRequestHandler = requestInfo => {
    requestInfo.withCredentials = true;
    requestInfo.headers = {};
    requestInfo.headers['Authorization'] = request.media.customData.token;
    };
  return request;
});
castOptions.playbackConfig = playbackConfig;
context.start(castOptions);

如果有人可以帮助我或指导我,那就太好了。谢谢

【问题讨论】:

    标签: javascript android google-drive-api chromecast google-cast


    【解决方案1】:

    经过数月的研究,我改变了构建发送到 cast 的 URL 的方式,而无需访问令牌。现在我只需按以下格式发送我想要投射或下载的文件。(API 密钥必须有权访问这些文件)

    https://www.googleapis.com/drive/v3/files/GOOGLE_DRIVE_ID_OF_THE_FILE?alt=media&key=API_KEY

    之后我收到了其他错误,我在此Link 中向 Google 报告了该错误,他们发现我的视频的编解码器存在问题(Here 是支持的编解码器列表)。所以我不得不重新编码我所有的视频。我用Handbrake 来做这件事,它甚至有 chromecast 的预设。最后我能够从谷歌驱动器投射我的视频。

    【讨论】:

      猜你喜欢
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多