
# 视频管理
 #### enableLocalVideo
```
- (int)enableLocalVideo:(BOOL)enable;
```
【**功能说明**】
设置是否开启摄像头采集视频。
【**请求参数**】
enable：YES表示开启，NO表示关闭。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 默认开启本地视频采集，关闭不会影响视频流发送。
- 远端用户订阅了本端用户时，会收到[onRemoteVideoStateChange](https://support.huaweicloud.com/csdk-rtc/rtc_05_0065.html#rtc_05_0065__section7963518536)远端流状态变化回调。
 
 #### setVideoEncoderConfig
```
- (int)setVideoEncoderConfig:(HWRtcVideoEncode * _Nonnull)encParam;
- (int)setVideoEncoderConfig:(NSArray<HWRtcVideoEncode*>*)videoEncodes totalBitRate:(int)totalBitRate;
```
【**功能说明**】
接口一：大小流模式设置大流发流编码参数。大流必须开启，小流建议开启。
接口二：多流模式，设置发流编码参数。可支持720P到180P的三路流同时推送。
【**请求参数**】
- encParam：视频编码参数。包括流类型、宽、高、码率、帧率等。具体请参见[HWRtcVideoEncode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section2517184517301)。
- videoEncodes：视频编码参数数组，包括流类型、宽、高、码率、帧率等。具体请参见[HWRtcVideoEncode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section2517184517301)。
- totalBitRate：总带宽。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 华为SDK系统有默认的编码设置（720P+360P），一般可以不设置发流编码参数。如果您确实需要自定义发流编码参数，请参考华为SDK系统推荐码表：[表56](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__table15806112155510)和[表57](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__table293952185616)，否则可能设置失败。
- 两重构接口针对不同使用方式并不通用，如果您使用的新选看系列接口[setupRemoteView]，需配套使用接口一大小流模式设置发流编码参数的[setVideoEncoderConfig]，[enableSmallVideoStream]接口来自定义您的发流编码参数。同理使用旧的选看接口[startRemoteStreamView]需配套使用接口二:多流模式设置发流编码参数setVideoEncoderConfig接口。
- 同一端大小流或多流模式多路流设置的分辨率需保持一致，否则会设置失败。
- 多终端发流和选看的分辨率不一致时，sdk默认自适应并匹配最接近的分辨率（以实际发流分辨率优先），可能会导致选看时设置的分辨率和实际收到的流分辨率不一致。
- 调用接口一设置编码参数的分辨率发生变化时，需要先[enableSmallVideoStream]关闭小流，否则会因为分辨率一致条件限制导致大流设置失败。即涉及分辨率变化时，先关闭小流，再设置大流，再设置小流。
- ios移动端采集帧率限制15帧，建议设置的编码帧率不要超过15帧
 
 #### enableSmallVideoStream
```
- (int)enableSmallVideoStream:(BOOL)enable encParam:(HWRtcVideoEncode * _Nonnull)encParam;
```
【**功能说明**】
大小流模式设置是否开启小流，并设置编码参数。小流选择性开启。
【**请求参数**】
- enable：YES表示开启小流，NO表示关闭小流。
- encParam：视频编码参数。包括流类型、宽、高、码率、帧率等，具体请参见[HWRtcVideoEncode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section2517184517301)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### startLocalPreview
```
- (int)startLocalPreview;
```
【**功能说明**】
开启本地预览。
【**请求参数**】
无
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 该接口限制在房间外调用，在房间内设置不生效，需要调用stopLocalPreview关闭预览，否则将一直处于预览状态。
- 在房间内预览：可调用[setupLocalView]设置有效view开启预览，设置为0表示关闭预览，不需要调用startLocalPreview和stopLocalPreview。
- 在房间外预览：先调用startLocalPreview开启预览，成功后再调用[setupLocalView]设置有效view实现预览；进入房间前需调用stopLocalPreview
  关闭预览，否则将一直处于预览状态，影响房间内预览。
  
 
 #### stopLocalPreview
```
- (int)stopLocalPreview;
```
【**功能说明**】
关闭本地预览。
【**请求参数**】
无
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
如果调用了[startLocalPreview]，需调用stopLocalPreview关闭预览，否则将一直处于预览状态。该接口限制在房间外调用，在房间内设置不生效。
 #### setupLocalVideo
```
-(int)setupLocalVideo:(HWRtcVideoCanvas *)local viewMode:(HWRtcVideoDisplayMode)viewMode;
- (int)setupLocalVideo:(HWRtcVideoCanvas *)local;
```
【**功能说明**】
设置/取消本地预览视图。该方法设置本地视频显示信息。 App通过调用此接口绑定本地视频流的显示视窗（view），并设置视频显示模式。
【**请求参数**】
- local：预览视图，具体请参见[HWRtcVideoCanvas](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1528903020214)。
- viewMode：显示模式，具体请参见[HWRtcVideoDisplayMode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section7141345144014)。不设置则默认为裁剪模式。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### updateLocalRenderMode
```
-(int)updateLocalRenderMode:(HWRtcVideoDisplayMode)displayMode mirrorMode:(HWRtcVideoMirrorType)mirrorMode;
```
【**功能说明**】
设置本地视频显示模式和镜像模式。
【**请求参数**】
- displayMode：渲染模式。具体请参见[HWRtcVideoDisplayMode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section7141345144014)。
- mirrorMode：镜像模式。具体请参见[HWRtcVideoMirrorType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1211744520368)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### setupRemoteView
```
- (int)setupRemoteView:(HWRtcVideoCanvas * _Nonnull)remote;
```
【**功能说明**】
设置远端流渲染视图（新选看接口）。该接口不影响收流。
【**请求参数**】
remote: 远端视图，具体请参见[HWRtcVideoCanvas](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1528903020214)。remote为nil时表示关闭远端视图。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### updateRemoteRenderMode
```
- (int)updateRemoteRenderMode:(NSString *)userid displayMode:(HWRtcVideoDisplayMode)displayMode mirrorMode:(HWRtcVideoMirrorType)mirrorMode
```
【**功能说明**】
设置远端用户视图渲染模式,镜像模式
【**请求参数** 】
- displayMode：视图显示模式，具体请参见[HWRtcVideoDisplayMode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section7141345144014)。
- userid：远端用户的唯一标识。
- mirrorMode: 镜像模式，具体请参见HWRtcVideoMirrorType。
 
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### setRemoteVideoStreamType
```
- (int)setRemoteVideoStreamType:(NSString * _Nonnull)userId  type:(HWRtcVideoStreamType)type;
```
【**功能说明**】
大小流模式，设置选看指定用户的视频流类型。在通过新选看接口发起选看时调用。
【**请求参数**】
- userId: 远端用户唯一标识。
- type: 视频流类型，指大流、小流，具体请参见[HWRtcVideoStreamType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section29791817143313)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### setPriorRemoteVideoStreamType
```
- (int)setPriorRemoteVideoStreamType:(HWRtcVideoStreamType)type;
```
【**功能说明**】
大小流模式，设置所有订阅的远端视频流类型。默认订阅大流，优先使用[setRemoteVideoStreamType]接口设置的用户流类型。
【**请求参数**】
type：视频流类型，指大流、小流，具体请参见[HWRtcVideoStreamType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section29791817143313)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### pushLocalVideo
```
- (int)pushLocalVideo:(BOOL)push;
```
【**功能说明**】
设置是否发送本地视频流。
【**请求参数**】
push：YES表示开启视频流发送，NO表示关闭视频流发送。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 默认开启本地视频发流。
- 关闭本地视频发流，不影响本地视图采集，仍可见本地视图。
- 远端用户订阅了本端用户时，会收到[onRemoteVideoStateChange](https://support.huaweicloud.com/csdk-rtc/rtc_05_0065.html#rtc_05_0065__section7963518536)远端流状态变化回调。
 
 #### pullRemoteVideo
```
- (int)pullRemoteVideo:(NSString *)userid pull:(BOOL)pull;
```
【**功能说明**】
订阅或取消订阅某个用户视频流。只能加入房间后调用。
【**请求参数**】
- userid：远端用户的id，唯一标识。
- pull：YES表示订阅，NO表示取消订阅。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### pullAllRemoteVideo
```
- (int)pullAllRemoteVideo:(BOOL)pull;
```
【**功能说明**】
批量订阅或取消订阅当前房间所有远端用户视频流。
【**请求参数**】
pull：YES表示订阅，NO表示取消订阅，默认开启订阅。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### startRemoteStreamView
```
-(int)startRemoteStreamView:(HWRtcVideoCanvas *)remote  streamType:(HWRtcStreamType)streamType disableAdjustRes:(BOOL)disableAdjustRes;
```
【**功能说明**】
设置远端用户渲染视图，并开启收流（选看）。
【**请求参数** 】
- remote：远端预览视图，具体请参见[HWRtcVideoCanvas](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1528903020214)。
- streamType：流清晰度，具体请参见[HWRtcStreamType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section14391195354014)。
- disableAdjustRes：下行流码率自适应，默认关闭。YES表示关闭，NO表示开启。若关闭，在网络环境较差情况下可能会有卡顿现象。
 
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
该接口为选看的旧接口，通过该接口和updateRemoteRenderMode完成一次完整的选看流程。新的完成选看功能拆分为三个接口：[setupRemoteView]、[pullRemoteVideo]和[setRemoteVideoStreamType]接口，将设置渲染模式、窗口句柄、选看的流类型拆分并增加pullRemoteVideo收流控制接口，以实现更细化的选看流程控制（将窗口绑定和收流控制分开）。您可以根据需要选择调用不同的接口组合以实现视频选看。
 #### stopRemoteStreamView
```
- (int)stopRemoteStreamView:(NSString*)userid;
```
【**功能说明**】
关闭远端用户的渲染视图，并停止收流（停止选看）。
【**请求参数**】
userid：远端用户的唯一标识。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
新选看建议通过[setupRemoteView]接口设置窗口为空来停止选看。
 #### setRemoteVideoAdjustResolution
```
- (int)setRemoteVideoAdjustResolution:(BOOL)enable;
```
【**功能说明**】
设置远端下行视频流分辨率的自适应 。
【**请求参数**】
enable：YES表示启动自适应，NO表示关闭自适应。默认开启。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### setVideoEncoderMirror
```
- (int)setVideoEncoderMirror:(HWRtcVideoMirrorType)mirror;
```
【**功能说明**】
设置视频编码（本地发流）画面镜像模式。
【**请求参数**】
mirror：镜像类型，是否开启镜像。具体请参见[HWRtcVideoMirrorType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1211744520368)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
该接口不改变本地摄像头的预览画面，但会使远端用户看到的和服务器录制的画面为指定的镜像效果。
 #### startPublishStream
```
- (int)startPublishStream:(NSString *)taskId urls:(NSArray *)urls transcodeConfig:(TranscodeConfigModel *)configModel;
```
【**功能说明**】
开始旁路推流。
【**请求参数**】
- taskId：任务id，支持自定义，需保证唯一。
- urls：url数组。
- configModel：用户id数组和其他参数，具体请参见[TranscodeConfigModel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section7792450125512) 。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### updateTransCoding
```
- (int)updateTransCodingWithTaskId:(NSString *)taskId transcodeConfig:(TranscodeConfigModel *)configModel;
```
【**功能说明**】
更新旁路推流。在收到远端用户重新入会通知时，需要业务主动调用该接口。
【**请求参数**】
- taskId：任务id。
- configModel：用户id数组和其他参数，具体请参见[TranscodeConfigModel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section7792450125512)。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### stopPublishStream
```
- (int)stopPublishStream:(NSString*)taskId;
```
【**功能说明**】
停止旁路推流。
【**请求参数**】
taskId：任务id，业务自行定义，保证唯一。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### startAllRemoteView
```
startAllRemoteView(NSArray <HWRtcVideoRemoteView *>*_Nullable)remoteViews count:(unsigned int)count
```
【**功能说明**】
批量设置远端流视图。
【请求参数】
- remoteViews：必选，数组类型，元素类型为[HWRtcVideoRemoteView](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section136831710423)类型。
- count：必选，选看个数，当count为0时，取消所有选看， **注意**：count不能大于remoteViews.count，否则订阅失败。
  
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### appendLocalView
```
- (int)appendLocalView:(HWRtcVideoCanvas *)local
```
【**功能说明**】
设置本地视频另一个窗口显示。只有在SDK渲染的模式下有效。
【请求参数】
local：窗口句柄。null表示取消扩展的窗口显示，类型为[HWRtcVideoCanvas](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1528903020214)。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
 #### appendRemoteView
```
- (int)appendRemoteView:(HWRtcVideoCanvas *)remote
```
【**功能说明**】
设置远程视频另一个窗口显示。只有在SDK渲染的模式下有效。
【请求参数】
remote：窗口句柄。null表示取消扩展的窗口显示，类型为[HWRtcVideoCanvas](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1528903020214)。
【**返回参数** 】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
