CAF Receiver: обработка ошибок

Мы создали собственный получатель CAF с общим прослушивателем ошибок на основе события cast.framework.events.EventType.ERROR:

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 фрагмента, поэтому мы не можем исключить эти ошибки из обработчика ошибок.

Кто-нибудь знает лучший способ обойти эту проблему?

0 ответов

Добавьте следующие журналы, чтобы вы знали, что происходит с фрагментами

 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);
Другие вопросы по тегам