
# 自定义视频采集
#### 功能描述
实时视频传输过程中，HWRtcEngine SDK通常会启动默认的视频模块进行采集和渲染。在以下场景中，您可能会发现默认的视频模块无法满足开发需求：
- app中已有自己的视频模块。
- 需要使用自定义的采集或播放处理。
- 某些视频采集设备被系统独占。
 
 #### 接口调用流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001166898232.png)
#### 实现自定义视频采集
1. **加入房间前**
   加入房间前，调用setExternalVideoCapture开启视频自采集。
   ```
   public void openExternalVideo() {
       mHwRtcEngine.setExternalVideoCapture(true);
   }
   ```
   
2. **加入房间**
   参考[接口调用流程]中加入房间的时序图步骤加入房间。
   
3. **定时推送视频数据帧**
   加入房间成功回调后，每隔1000/frameRate ms定时调用pushExternalVideoFrame接口推送外部视频数据。
   其中，frameRate表示帧率。
   ```
   public void pushExternalVideo() {
       new Timer().schedule(new TimerTask() {
               @Override
               public void run() {
                   mHwRtcEngine.pushExternalVideoFrame(videoData);
               }
           }, 0, 1000 / frameRate);
   }
   ```
   
 
#### API参考
[setExternalVideoCapture](https://support.huaweicloud.com/csdk-rtc/rtc_05_0023.html#section2)
[pushExternalVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0023.html#section4)
