【问题标题】:Chromecast - Chrome Sender - How do you connect to existing media session?Chromecast - Chrome Sender - 你如何连接到现有的媒体会话?
【发布时间】:2014-04-09 00:16:25
【问题描述】:

我有一个接收器,它直接在 videoElement 上设置 src(即,我不是从发送者 chrome.cast.Session.loadMedia() 方法设置它)。

videoElement 已传递给 chromecast 媒体管理器:

mediaManager = new cast.receiver.MediaManager(videoElement);

当我连接发送方(或发送方已连接)时,我想获取媒体状态更新。目前我正在使用 Chrome API 进行发送。

不幸的是,当视频加载并开始在接收器上播放时,它会记录以下消息:

[cast.receiver.MediaManager] Not sending status as there is no on going LOAD request.

如何在不启动加载事件的情况下从发件人处接入媒体会话?

值得一提的是,session.media[] 总是显示为空,如果我设置:

session.addMediaListener(sessionMediaListener);

sessionMediaListener() 永远不会被调用

【问题讨论】:

    标签: google-cast chromecast


    【解决方案1】:

    目前无法从接收方发起媒体会话。 LOAD 命令是触发会话创建的原因,因此您需要要求发送方在启动接收方后立即发送 LOAD 命令。

    请注意,您可以覆盖 LOAD 命令的行为来做任何您想做的事情(例如自己设置 src 元素...),但会话创建是 MediaManager 类的内部操作。

    根据第二/第三个发送者的状态更新,只要他们加入应用程序会话,他们就会收到媒体状态更新(无需重新启动/重新加载)。

    我会对您从发送方触发 LOAD(如果有的话)有问题的原因感兴趣。

    【讨论】:

    • 我已经采取了让接收方告诉发送方要加载哪些媒体的路线。这似乎是一个不必要的额外步骤。
    • @MarcFallows 我相信我遇到了同样的问题。你是说让接收者向发送者发送消息,然后让发送者调用 load()?
    • @masterwok 过去是这样,但现在接收方可以在没有发送方参与的情况下加载媒体:developers.google.com/cast/docs/reference/receiver/…
    【解决方案2】:

    您实际上绕过了 MediaManager 的所有内部工作; MediaManager 实际上对您正在播放的媒体一无所知,因此它无法为您提供所需的信息。

    【讨论】:

    • 所以所有媒体都必须由发件人加载?这似乎是一个主要限制。有没有办法从发送者获取更新的接收者加载媒体?这与发件人从其他发件人加载的媒体获取更新的机制不一样吗?
    • 您可以让接收器加载媒体或在您的自定义接收器中执行您想要的任何其他操作,但随后 MediaManager 被绕过,您需要在自己的接收器中执行通知/更新连接的发送者的工作. MediaManager 用于接收来自发送者的媒体控制消息并处理这些消息,并在适当的时候向发送者提供反馈;如果您想拥有不同的流程,则需要构建适合您自己用例的东西。
    • 对不起,如果问题似乎重复,但如果从接收者?我正在寻找类似chrome.cast.Session.loadMedia() 的东西,但它是从接收者发起的。
    猜你喜欢
    • 2018-02-22
    • 2014-04-13
    • 2018-10-31
    • 2017-05-22
    • 1970-01-01
    • 2017-10-31
    • 2019-07-27
    • 2014-05-31
    • 2014-05-04
    相关资源
    最近更新 更多