错误机制

H5Player 统一使用 onError 的 hook 做错误输出,接入方可通过该 hook 获取出现的错误做错误展示等

语法

  • player.hooks.onError.tap('an error occurred', callback[errorType, subErrorType, description, info]);

回调格式

参数 类型 说明
errorType String 错误类型,详情参考后续字段详情
subErrorType String 错误详情
description String 错误描述,为 subErrorType 的中文释义
info: Object devId String 设备号
code Number 详情错误码。如果上面 code 为 SERVER_ERROR, 则该 code 为 s17 媒体服务接口错误码
message String 错误信息
deviceInfos Array 设备信息列表,格式 [devInfo],devInfo: { channel: Number, devId: String }
time String 错误发生时间。格式 YYYY-MM-DD HH:mm:ss
level Number 是通道级别还是整个播放器级别。1:播放器级别,2:通道级别。一般用于回放。

代码示例

player = playerjs.createLivePlayer({ ...yourConfig });

// v1.1.x 版本这样使用
player.hooks.onError.tap('error', (errorType, subErrorType, description, info) => {
    // 如果业务层要给出错误提示, 以 “设备下线” 为例

    // 如果项目不需要使用国际化,则可以参考如下处理
    console.error(errorType, ': ', description); // NETWORK_ERROR: 设备下线

    // 如果项目使用了国际化,比如 i18n, 可以参考如下处理
    // 注意:需要先在项目增加 errorType 和 subErrorType 的词条
    const { NETWORK_ERROR, DEVICE_OFFLINE } = stPlayer.errorCode.sdkErrorCode;
    if (errorType == NETWORK_ERROR && subErrorType == DEVICE_OFFLINE) {
        // i18n 需要加词条
        console.error(i18n('NETWORK_ERROR'), ': ', i18n('H5_SDK_DEVICE_OFFLINE'));
    }

    // 如果是通道级别错误,可参考如下处理
    if (info.level === 2) {
        // 如果错误信息需要中文提示,可将 subErrorType 替换为 description
        console.error(`通道${info.deviceInfos[0].channel} 发生错误: `, subErrorType);
    }
});

字段详情

  • errorType(错误类型)

主要分 4 大类:

参数 描述
NETWORK_ERROR 网络错误,包含网络与 s17 服务返回的错误
MEDIA_ERROR 播放过程中与媒体相关错误,如格式错误、解码问题等
OTHER_ERROR 非播放流程中出现的错误,如必填项缺省错误
PARAM_ERROR 参数错误,sdk 参数错误和 s17 参数错误
  • subErrorType(次级错误类型)

相当前者更为详细

错误(SubErrorTypes) 描述(Description)
OTHER_ERROR
H5_SDK_HTTPS_REQUIRED 需要网站使用 htttps 协议
H5_SDK_OPERATION_ERROR 操作错误
H5_SDK_NO_MICROPHONE_PERMISSION 无麦克风权限
H5_SDK_WEBSOCKET_ERROR websocket 错误
NETWORK_ERROR
H5_SDK_INVALID_URL 无效 url
H5_SDK_STREAM_ABORT 设备断流
H5_SDK_SERVER_ERROR 服务器错误(包含 s17 接口除了以下四个的其他错误)
H5_SDK_INVALID_DEVICE 无效设备
H5_SDK_DEVICE_IS_OCCUPIED 设备占用
H5_SDK_REQUEST_TIMEOUT 请求超时
H5_SDK_DEVICE_OFFLINE 设备下线
H5_SDK_SEEK_FAILED seek 失败
MEDIA_ERROR
H5_SDK_UNPACK_EXCEPTION 解封装异常
H5_SDK_DECRYPTION 解密(AES)异常
H5_SDK_DECODING_EXCEPTION 解码异常
PARAM_ERROR
H5_SDK_PARAM_SDK_ERROR sdk 参数错误
H5_SDK_PARAM_S17_ERROR s17 参数错误
  • info(错误信息)
参数 描述
code:string s17 服务错误码
message:string 错误信息
time:Date 错误发生时间
level:string 错误等级;
deviceinfos:[] 设备信息(包含 devid、channel 等信息)