
# 自定义视频采集
#### 功能描述
如果您需要使用自定义的美颜库或有前处理库，则需要自己采集和处理摄像头拍摄画面，您可以通过SparkRTC SDK的setExternalVideoCapture接口开启 自采集功能。然后使用pushExternalVideoFrame接口推送外部视频数据到SparkRTC SDK播放。
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001181923780.png)
#### 实现过程
1. **加入房间前调用主引擎的setExternalVideoCapture**
   加入房间前调用此接口打开视频自采集功能。一旦开启后，将无法切换。
   ```
   //开启自采集功能
   [rtcEngine setExternalVideoCapture:YES format:HWRtcVideoImageFormatYUV420P];
   ```
   
2. **加入房间**
   参考[接口调用流程]中加入房间的时序图步骤加入房间。
   
3. **定时推送视频数据帧**
   加入房间成功回调后，上层应用需要定时调用pushExternalVideoFrame接口推送外部视频数据，每1/帧率调用一次。
   ```
   //初始化一个HWRtcVideoFrame对象，参数以实际为主，传rtcEngine
   HWRtcVideoFrame *rtcVideoFrame = [[HWRtcVideoFrame alloc] init];
    rtcVideoFrame.format =HWRtcVideoImageFormatYUV420P;
    rtcVideoFrame.width = width;
    rtcVideoFrame.height = height;
    rtcVideoFrame.data = data;
    rtcVideoFrame.dataLen = data.length;
    [rtcEngine pushExternalVideoFrame:rtcVideoFrame];
   ```
   
 
#### API参考
[setExternalVideoCapture](https://support.huaweicloud.com/csdk-rtc/rtc_05_0063.html#section0)
[pushExternalVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0063.html#section1)
