【问题标题】:CAF Receiver: Error handlingCAF 接收器:错误处理
【发布时间】:2018-09-18 20:10:33
【问题描述】:

我们基于 cast.framework.events.EventType.ERROR 事件创建了一个带有通用错误侦听器的自定义 CAF 接收器:

playerManager.addEventListener(cast.framework.events.EventType.ERROR, event => { 
if (playerManager.getPlayerState() != "IDLE") {
  let errorCode = (event.detailedErrorCode != undefined ?event.detailedErrorCode : null);
  let errorMessage = null;
  if ((event.error != undefined) && (event.error.reason != null)) errorMessage = event.error.reason;

  playerManager.setIdleReason(cast.framework.messages.IdleReason.ERROR);
  customErrorCodeClass.display(errorCode, errorMessage);
});

此处理程序正常工作,但有时播放器会为单个片段引发“404 片段错误”,从而导致视频停止。我们无法知道该错误是否与该特定片段相关,或者是否会有其他 404 片段,因此我们无法从错误处理程序中排除该错误。

有人知道解决此问题的更好方法吗?

【问题讨论】:

    标签: chromecast google-cast google-cast-sdk caf-receiver-sdk


    【解决方案1】:

    添加以下日志,以便您了解片段发生了什么

     playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
            log('[mediacast:events:PLAYER_LOAD_COMPLETE');
            console.log(playerManager.getStats());
            console.log(playerManager.getMediaInformation());
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.BITRATE_CHANGED, (event) => {
            log('[mediacast:events:BITRATE_CHANGED - ' + event.totalBitrate);
            stats.bitrate = event.totalBitrate;
            console.log(playerManager.getStats());
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.PLAYING, (event) => {
            log('[mediacast:events:PLAYING - ', JSON.stringify(event));
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.PAUSE, (event) => {
            log('[mediacast:events:PAUSE - ', JSON.stringify(event));
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.SEEKING, (event) => {
            log('[mediacast:events:SEEKING - ', JSON.stringify(event));
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.BUFFERING, (event) => {
            log('[mediacast:events:BUFFERING - ', JSON.stringify(event));
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.TIME_UPDATE, (event) => {
            // log('[mediacast:events:TIME_UPDATE - ', JSON.stringify(event));
            stats.currentMediaTime = event.currentMediaTime;
        });
    
        playerManager.addEventListener(cast.framework.events.EventType.MEDIA_STATUS, (event) => {
            log('[mediacast:events:MEDIA_STATUS - ', JSON.stringify(event));
            stats.state = event.mediaStatus.playerState;
        });
    

    别忘了将debug 设置为记录器级别

    cast.framework.CastReceiverContext.getInstance().setLoggerLevel(cast.framework.LoggerLevel.DEBUG);
    

    【讨论】:

      猜你喜欢
      • 2018-09-23
      • 2019-01-17
      • 1970-01-01
      • 2018-08-07
      • 2020-06-02
      • 2018-04-19
      • 2019-01-03
      • 2020-05-03
      • 2019-09-25
      相关资源
      最近更新 更多