
# 自定义视频采集和渲染
 #### setExternalVideoFrameOutputEnable
```
public abstract int setExternalVideoFrameOutputEnable(boolean localEnable,boolean remoteEnable);
public abstract int setExternalVideoFrameOutputEnable(boolean localEnable, boolean remoteEnable, HRTCImageBufferFormat format);
```
【**功能说明**】
设置视频数据输出使能。
【**请求参数** 】
- localEnable：true表示输出本地视频数据，false表示不输出本地视频数据，默认值为false。
- remoteEnable：true表示输出远端视频数据，false表示不输出远端视频数据，默认值为false。
- format：自渲染输出的视频帧图片格式，在[onRenderExternalVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0025.html#rtc_05_0025__section1060482810108)接口参数的videoFrameType中体现，取值请参见[HRTCImageBufferFormat](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section759213994)。
 
【**返回参数**】
- 0：成功。
- \>0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
 
 #### setAuxiliaryExternalVideoFrameOutputEnable
```
public abstract int setAuxiliaryExternalVideoFrameOutputEnable(boolean localEnable,boolean remoteEnable);
```
【**功能说明**】
设置共享辅流数据输出使能。Android平台接口暂不提供本地共享数据的设置。
【**请求参数** 】
- localEnable：true表示输出本地共享数据，false表示不输出本地共享数据，默认值为false。
- remoteEnable：true表示输出远端共享数据，false表示不输出远端共享数据，默认值为false。
 
【**返回参数**】
- 0：成功。
- \>0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
 
 #### setExternalVideoCapture
```
public abstract int setExternalVideoCapture(boolean videoEnable, HRTCVideoFrameFormat format);
```
【**功能说明**】
设置是否开启视频外部采集。需要在加入房间前调用。
【**请求参数**】
- videoEnable：true表示视频使用外部采集，false表示视频不使用外部采集，默认值为false。
- format：设置外部采集的视频格式，默认为I420（即yuv420P）。
【**返回参数**】
- 0：成功。
- \> 0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
如果使用外部输入视频数据，需要在加入房间后，按照一定时间间隔调用[pushExternalVideoFrame]接口输入视频数据。
format可选格式为**yuv420p** 、**rgba** 和**texture2d**，如果需要外部传入texture2d编码的数据，需要设置format为texture2d，否则传入yuv420p或者rgba。texture2d视频数据，kirin系列970以上芯片走texture2d硬编，其他芯片都是走texture2d软编。
 #### setAuxExternalVideoCapture
```
public abstract int setAuxExternalVideoCapture(boolean videoEnable, HRTCVideoFrameFormat format);
```
【**功能说明**】
设置是否开启视频辅流外部采集。需要在加入房间前调用。
【**请求参数**】
- videoEnable：true表示视频使用辅流外部采集，false表示视频不使用辅流外部采集。
- format：设置外部采集的视频格式，默认为I420（即yuv420P）。
【**返回参数**】
- 0：成功。
- \> 0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
此接口与屏幕共享功能互斥，若videoEnable为true，则不能使用屏幕采集功能。
format支持texture2d，如果需要外部传入texture2d编码的数据，需要设置format为texture2d。
 #### pushExternalVideoFrame
```
public abstract int pushExternalVideoFrame(HRTCVideoFrame videoFrame);
```
【**功能说明**】
输入外部视频数据。
【**请求参数**】
videoFrame：视频数据，具体请参见[HRTCVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section350055315612)。
【**返回参数**】
- 0：成功。
- \> 0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
需要按照一定的时间间隔进行输入，例如，视频原本为15帧/秒，则需要间隔1000/15毫秒间隔输入视频数据。
 #### pushAuxExternalVideoFrame
```
public abstract int pushAuxExternalVideoFrame(HRTCVideoFrame videoFrame);
```
【**功能说明**】
辅流输入外部视频数据。
【**请求参数**】
videoFrame：视频数据，具体请参见[HRTCVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0037.html#rtc_05_0037__section350055315612)。
【**返回参数**】
- 0：成功。
- \> 0：失败。具体请参见[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0035.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
此接口与屏幕采集功能互斥。
如果需要传输texture2d编码流，需要设置[setAuxExternalVideoCapture] videoEnable参数为true，format设置为texture2d。
