You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chromecast Chrome Sender:检测媒体播放完成并关闭会话遇问题

解决Chromecast投屏结束后自动关闭会话的问题

我完全懂你的痛点——不想用自定义命名空间这种临时方案,想通过官方事件优雅地在视频播放完成后关闭Cast会话,但尝试MEDIA_INFO_CHANGED事件时却卡在了idleReason的取值上。明明控制台能看到这个属性和FINISHED值,就是直接访问拿不到,对吧?

问题根源分析

你用的MEDIA_INFO_CHANGED事件主要是针对媒体元数据(比如标题、封面)变化触发的,并不是专门监听播放状态变更的最佳选择。另外,session.getMediaSession()返回的MediaStatus对象可能经过了SDK的封装,直接访问idleReason可能因为属性的枚举性或者时机问题取不到值。

推荐解决方案

方案1:改用MEDIA_STATUS_UPDATED事件监听状态变更

这个事件是专门为媒体播放状态变化设计的,触发时机更精准。试试下面的代码:

this.remotePlayerController.addEventListener(
  window.cast.framework.RemotePlayerEventType.MEDIA_STATUS_UPDATED,
  () => {
    const session = this.getSession();
    if (!session) return;

    const mediaStatus = session.getMediaSession();
    if (!mediaStatus) return;

    // 尝试两种方式访问属性,应对SDK封装的情况
    const idleReason = mediaStatus.idleReason || mediaStatus['idleReason'];
    
    if (idleReason === window.chrome.cast.media.IdleReason.FINISHED) {
      // 执行关闭会话逻辑
      session.stop(
        () => console.log('投屏会话已成功关闭'),
        (error) => console.error('关闭会话失败:', error)
      );
    }
  }
);

方案2:在发送端监听MEDIA_SESSION_IDLE事件

如果接收器端的监听还是有问题,不妨换个思路,直接在发送端监听媒体会话变为空闲的事件:

const castContext = cast.framework.CastContext.getInstance();
castContext.addEventListener(
  cast.framework.SessionEventType.MEDIA_SESSION_IDLE,
  (event) => {
    if (event.data === chrome.cast.media.IdleReason.FINISHED) {
      const currentSession = castContext.getCurrentSession();
      if (currentSession) {
        currentSession.stop();
      }
    }
  }
);

这个方案不需要修改接收器代码,完全在发送端处理,完美避开自定义命名空间的问题。

额外调试技巧

  • 用console.dir(mediaStatus)代替console.log,可以更清晰地查看对象的完整结构,包括不可枚举属性和getter方法;
  • 检查你的Cast SDK版本,旧版本可能存在属性访问的兼容性问题,建议升级到最新稳定版;
  • 可以加一个状态标记,避免视频结束时多次触发关闭逻辑:
    let isSessionClosed = false;
    // 在事件回调里
    if (!isSessionClosed && idleReason === window.chrome.cast.media.IdleReason.FINISHED) {
      isSessionClosed = true;
      session.stop(...);
    }
    

内容的提问来源于stack exchange,提问作者B3356546

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:46:15