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