---
title: 进阶使用
summary: 介绍轻量播放器使用时的原生组件、CoverView 注意事项及常见问题。
---

# 进阶使用

> 本文主要介绍在播放器组件使用时的关键注意事项及常见问题归纳。

## 业务匹配


### 原生组件

播放器为原生组件，在其上层覆盖自定义组件（如滑动转盘、拖拽手势区域）时，手势响应区域可能超出原生组件本身，导致事件被播放器拦截，影响业务交互体验。为确保交互正常，建议在用户操作自定义组件前调用 ty.nativeDisabled(true) 暂时禁用原生组件的手势响应；操作完成后，再调用 ty.nativeDisabled(false) 恢复手势响应。
如需了解更多详情，请参考[原生组件](https://developer.tuya.com/cn/miniapp/develop/miniapp/component/native-component/native-component#native-component)。


```jsx
// 拖动开始
const handTouchStart = value => {
    ty.nativeDisabled(true);
};

// 拖动时
const handTouchMove = value => {
    ty.nativeDisabled(true);
};
// 拖动结束
const handTouchEnd = value => {
    ty.nativeDisabled(true);
};

```

### 播放器上自定义组件

在播放器上添加可点击区域，如截图按钮、对讲按钮等等，均需使用 [CoverView](https://developer.tuya.com/cn/miniapp/develop/ray/component/view-container/cover-view) 组件包裹。

**示例代码**

```jsx
import IpcPlayer from '@ray-js/ray-ipc-player';
import { View, Text, CoverView } from '@ray-js/ray';

function Page() {

  const [show, setShow] = useState(false)
  const deviceId = '1234567890xxxxxx';
  // 设备在线状态
  const onlineStatus = true; 
  // 获取播放器实例, 可以调用播放器实例上的方法
  const onCtx = (ctx) => {
    console.log(ctx, 'ctx');
  };
  // 监听播放器状态
  const onChangeStreamStatus = (status) => {
     console.log(status, 'status');
     // 播放器出流时，显示截图按钮，或者您也可以自定义展示
     if( status === 1002 ) {
        setShow(true);
     }
  };

  return (
    // playerContainer 为播放器容器, 设置播放器的区域大小
    <View className={Styles.playerContainer}>
      <IpcPlayer
          objectFit='contain'
          onCtx={onCtx}
          devId={deviceId}
          onlineStatus={onlineStatus}
          onChangeStreamStatus={onChangeStreamStatus}
        />

        <View className={Styles.featureContainer}>
          {show && <CoverView className={Styles.coverView}>
            <Text>screenshot</Text> 
          </CoverView> }  
        </View>
     </View>    
  )
}

```

**样式定义**

```less
.playerContainer {
  width: 100%;
  height: 300px;
  position: relative;
}
.featureContainer {
  // 建议这里只做定位，宽高由内容支撑起来
  position: absolute;
  top: 0;
  left: 0
}
.coverView {
    width: 100px;
    height: 20px;
}

```


## 常见问题

### 1. 拉流播放器白屏

确认当前播放器组件容器不要设置背景色, 可参考[原生组件说明](https://developer.tuya.com/cn/miniapp/develop/miniapp/component/native-component/native-component#native-component)

### 2. 视频流加载错误定位

APP 650 及以上版本, [IpcPlayer](https://www.npmjs.com/package/@ray-js/ray-ipc-player) 满足 >= 2.0.20 版本, 在视频流加载失败，会携带具体错误码，开发者可以根据错误码进行定位。

## 附录

### 错误码

| 参数名 | 说明 |
| --- | --- |
| -60000 | 暂无可用流量，请尽快充值 |
| -1000 | 接口请求参数非法或为空(传入参数校验) |
| -1001| 接口调用失败 |
| -1301 | 接口调用失败 |
| -30 | 接口调用失败 |
| -1002 | 接口结果解析失败【数据无效】 |
| -1303 | 接口结果解析失败【数据无效】 |
| -20003 | 接口结果解析失败【数据无效】 |
| -5 | 无效的参数, 方法参数非法 |
| -1010 | 无效的参数, 方法参数非法 |
| -1310 | 无效的参数, 方法参数非法 |
| -20002 | 无效的参数, 方法参数非法 |
| -40001 | 无效的参数, 方法参数非法 |
| -1011 | 返回结果解析为空 |
| -1311 | 返回结果解析为空 |
| -40002 | 返回结果解析为空 |
| -1020 | 不支持的P2PType |
| -1 | 未初始化 |
| -1360 | camera对象未初始化/已被销毁 |
| -10000 | camera对象未初始化/已被销毁 |
| -1361 | camera对象创建失败 |
| -1362 | camera对象连接异常/未连接 |
| -10001 | camera对象连接异常/未连接 |
| -1390 | 设备离线 |
| -10006 | 设备离线 |
| -1 | 通用错误码 |
| -40000 | cameraSDK 通用错误 |
| -40200 | 流媒体处理通用错误 |
| -40300 | 解码处理通用错误码 |
| -40400 | 云存储通用错误码 |
| -11 | 无效的会话 |
| -10002 | session失效 |
| -3 | 超时 |
| -10003 | 超时 |
| -40201 | 获取网络数据超时 |
| -40202 | 获取流媒体超时，需要更多的数据 |
| -40203 | 解码超时 |
| -33 |  p2p获取session超时 |
| -38 | dtls握手超时|
| -55 | 连接超时【-3细化】 |
| -56 | 连接超时【-3细化】 |
| -57 | 连接超时【-3细化】 |
| -58 | 连接超时【-3细化】 |
| -1004 | P2P中途被取消 |
| -1008 | 设备发生错误 |
| -41001 | 设备无响应 |
| -39 | 对端未响应预连接的命令 |
| -20001 | 无效的操作 |
| -20004 | 操作被中断 |
| -40205 | 流媒体处理过程中被用户打断 |
| -20005 | 不允许操作 |
| -20007 | 设备繁忙 |
| -20008 | 内存分配失败 |
| -29 | 内存不足 |
| -30012 | 音频参数有误 |
| -30060 | 设备端返回参数错误 |
| -30061 | 数据传输错误 |
| -30082 | 没有收到第一个i帧【未收到数据】 |
| -12 | 会话被对端关闭 |
| -13 | 会话已关闭 |
| -14 | 会话被本地关闭 |
| -100 | 会话被对端关闭 |
| -115 | 设备处于限制拉流状态 |
| -23 | 会话数满 |
| -104 | 会话数满，关闭会话 |
| -24 | 无效的预连接 |
| -25 | 预连接已断开 |
| -102 | 监听到会话，但是设备处于隐私模式，关闭会话 |
| -103 | 发送数据线程创建失败 |
| -105 | 鉴权失败 |
| -108 | 僵尸会话 |
| -114 | 应用层申请资源失败 |
| -50 | 没有收到answer或者candidate |
| -52 | socket 连接失败 |
| -53 | 对端socket 连接失败 |
| -54 | tcprelay服务未响应（校验失败或设备id不正确） |
| -20006 | 当前app版本不支持该协议需要升级app |
| -30083 | 当前只支持mjpeg流 |
| -40301 | 错误的解码输入 |
| -40302 | 错误的解密输出 |
| -40303 | 不支持的像素格式 |
| -41000 | 设备通用错误码 |
| -40206 | 流媒体处理过程中设备异常 |
| -54 | tcprelay服务未响应（校验失败或设备id不正确） |








