Chromecast - Chrome发件人 - 如何更新发件人的媒体会话?

时间:2017-09-13 20:13:35

标签: google-cast

在投射初始化后,发件人发出请求在正在运行的接收器上加载媒体

var session = window.cast.framework.CastContext.getInstance().getCurrentSession();
...
session.loadMedia(loadRequest);

然后,接收器使用MediaManager加载下一个媒体

    var mediaManager = new cast.receiver.MediaManager(mediaElement);
    ...
    mediaManager.load(loadRequestData); // "Loads a media session on the receiver without involvement of a sender"

我需要在发送方更新媒体会话。我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

当另一个媒体开始播放时,您可以使用session.stopaddUpdateListener结束当前媒体。

要停止,您可以使用文档中提供的此代码段:

function stopApp() {
  session.stop(onSuccess, onError);
}

您还可以查看此相关SO post以供参考。 希望这会有所帮助。

答案 1 :(得分:0)

接收器以下列方式加载下一个媒体后,我能够更新发送方的媒体会话。例如,在剧集内容中,从一集转换到另一集。

On Sender:

    var session = window.cast.framework.CastContext.getInstance().getCurrentSession();
    ...
    session.loadMedia(loadRequest).then(function() {
        ...
        // this is a media session of the first episodic content
        mediaSession = session.getMediaSession();   // returns instance of chrome.cast.media.Media
        mediaSession.addUpdateListener(function(isAlive) {
            // invoked when the status of the media has changed
            // [update next media session here]
        });
        ...
    }, function() {
       //errorHandler
    });

在接收器上

var mediaManager = new cast.receiver.MediaManager(video);
...
// the first episode is loaded from sender to receiver
...
// after the first episode is complete, loads second episode
mediaManager.load(loadRequestData); // loadRequestData contains media request data and its metadata

On Sender:

在上面的 [在此更新下一个媒体会话] 中添加以下内容。

var nextMediaSession = session.getSessionObj().media; //returns instance of chrome.cast.media.Media which is the updated media session of the second episode