视频基础功能
- HarmonyOS
更新时间不可用
disableVideo
关闭视频模块。
public abstract disableVideo(): number;该方法用于关闭视频模块。
调用时机
加入频道前后均可调用:
- 如果在加入频道前调用,则开启纯音频模式。
- 如果在加入频道后调用,则由视频模式切换为纯音频模式,然后再调用 enableVideo 方法可开启视频模式。
调用限制
-
该方法设置的是内部引擎为禁用状态,在离开频道后仍然有效。
-
调用该方法会重置整个引擎,响应时间较慢。你可以根据实际需求用以下方法来独立控制视频模块的某一项功能:
- enableLocalVideo: 是否启动摄像头采集并创建本地视频流。
- muteLocalVideoStream: 是否发布本地视频流。
- muteRemoteVideoStream: 是否接收并播放远端视频流。
- muteAllRemoteVideoStreams: 是否接收并播放所有远端视频流。
相关回调
成功调用该方法后,远端会触发 onUserEnableVideo (false) 回调。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableLocalVideo
开关本地视频采集。
public abstract enableLocalVideo(enabled: boolean): number;详情
该方法禁用或重新启用本地视频采集,不影响接收远端视频。
调用 enableVideo 后,本地视频采集即默认开启。
如果你在频道内调用 enableLocalVideo(false) 关闭本地视频采集,也会同时停止在频道内发布视频流。如果想要重新开启,则可调用 enableLocalVideo(true),然后调用 updateChannelMediaOptions 并设置 options 参数,将本地采集的视频流发布到频道中。
成功禁用或启用本地视频采集后,远端会触发 onRemoteVideoStateChanged 回调。
注意:
- 该方法在加入频道前后都能调用。
- 该方法设置内部引擎为启用状态,在离开频道后仍然有效。
参数
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableVideo
启用视频模块。
public abstract enableVideo(): number;视频模块默认为关闭状态,需要调用该方法启用。如果后续需要关闭视频模块,需调用 disableVideo 方法。
调用时机
该方法可以在加入频道前或者频道内调用:
- 如果在加入频道前调用,则开启视频模块。
- 如果在纯音频通话中调用,则音频通话将自动切换为视频通话。
调用限制
-
该方法设置的是内部引擎为启用状态,在离开频道后仍然有效。
-
调用该方法会重置整个引擎,响应时间较慢。你可以根据实际需求用以下方法来独立控制视频模块的某一项功能:
- enableLocalVideo: 是否启动摄像头采集并创建本地视频流。
- muteLocalVideoStream: 是否发布本地视频流。
- muteRemoteVideoStream: 是否接收并播放远端视频流。
- muteAllRemoteVideoStreams: 是否接收并播放所有远端视频流。
-
在频道内调用该方法时,会重置 enableLocalVideo、muteRemoteVideoStream 和 muteAllRemoteVideoStreams 的设置,需谨慎使用。
相关回调
成功调用该方法后,远端会触发 onRemoteVideoStateChanged 回调。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setVideoEncoderConfiguration
设置视频编码属性。
public abstract setVideoEncoderConfiguration(configuration: VideoEncoderConfiguration): number;设置本地视频的编码属性。每一种视频编码属性对应一系列视频相关参数设置,包含分辨率、帧率和码率。
调用时机
该方法在加入频道前后都能调用。如果用户在加入频道后不需要重新设置视频编码属性,则建议在 enableVideo 前调用该方法,可以加快首帧出图的时间。
调用限制
- 该方法的 config 参数设置是在理想网络状态下能达到的最大值。如果网络状态不好,视频引擎便不能使用该 config 渲染本地视频,它会自动降低到一个合适的视频参数设置。
参数
| 参数名 | 描述 |
|---|---|
config | 视频编码参数配置。详见 VideoEncoderConfiguration。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setVideoEncoderConfigurationEx
设置视频编码属性。
public abstract setVideoEncoderConfigurationEx(configuration: VideoEncoderConfiguration, connection: RtcConnection): number;设置本地视频的编码属性。每一种视频编码属性对应一系列视频相关参数设置,包含分辨率、帧率和码率。
调用时机
该方法需要在 joinChannelEx 之后调用。
调用限制
该方法的 config 参数设置是在理想网络状态下能达到的最大值。如果网络状态不好,视频引擎便不能使用该 config 渲染本地视频,它会自动降低到一个合适的视频参数设置。
参数
| 参数名 | 描述 |
|---|---|
config | 视频编码参数配置。详见 VideoEncoderConfiguration。 |
connection | Connection 信息。详见 RtcConnection。 |
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
所属接口类
startPreview
开启视频预览并指定预览的视频源。
public abstract startPreview(sourceType?: Constants.VideoSourceType): number;该方法用于启动本地视频预览,并指定出现在预览画面中的视频源。
调用时机
该方法必须在 enableVideo 和 setupLocalVideo 之后调用。
调用限制
- 本地预览默认开启镜像功能。
- 在离开频道后,本地预览依然处于开启状态。你需要调用 stopPreview 关闭本地预览。
参数
| 参数名 | 描述 |
|---|---|
sourceType | 视频源的类型,详见 VideoSourceType。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
stopPreview
停止视频预览。
public abstract stopPreview(sourceType?: Constants.VideoSourceType): number;适用场景
调用 startPreview 开启预览后,如果你想关闭本地视频预览,请调用该方法。
调用时机
请在加入频道前或离开频道后调用该方法。
调用限制
无。
参数
| 参数名 | 描述 |
|---|---|
sourceType | 视频源的类型,详见 VideoSourceType。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
onFirstLocalVideoFrame
已显示本地视频首帧回调。
onFirstLocalVideoFrame?:(source:Constants.VideoSourceType,width:number,height:number,elapsed:number) =>void;详情
本地视频首帧显示在本地视图上时,SDK 会触发此回调。
参数
| 参数名 | 描述 |
|---|---|
source | 视频源的类型。详见 VideoSourceType。 |
width | |
height | |
elapsed | 从调用 joinChannel 或joinChannelWithOptions 加入频道时到发生此事件过去的时间(毫秒)。如果在加入频道前调用了 startPreview,则该参数表示从调用 startPreview 开启本地视频预览到发生此事件过去的时间。 |
所属接口类
onFirstRemoteVideoFrame
渲染器已接收首帧远端视频回调。
onFirstRemoteVideoFrame?:(uid:number,width:number,height:number,elapsed:number) =>void;详情
注意: 该回调只在 SDK 渲染时才会触发;如果用户采用自定义视频渲染则不会触发,客户需要通过 SDK 以外的方法自行实现。
参数
所属接口类
onLocalVideoStateChanged
本地视频状态发生改变回调。
onLocalVideoStateChanged?:(source: Constants.VideoSourceType, state:Constants.LocalVideoStreamState,reason:Constants.LocalVideoStreamReason) => void本地视频的状态发生改变时,SDK 会触发该回调,报告当前的本地视频状态以及状态改变的原因。
适用场景
你可以通过该回调及时了解本地视频流的状态变化,并根据状态改变的原因采取相应的措施,更好地管理和调试视频流相关的问题。
触发时机
-
SDK 会在如下情况触发该回调,且 state 为 FAILED,reason 为
CAPTURE_FAILURE:- 摄像头正常启动,但连续 4 秒都没有输出采集的视频。
-
当摄像头输出采集的视频帧时,如果 SDK 检测到连续 15 个重复的视频帧,会触发该回调,且 state 为 CAPTURING,reason 为 CAPTURE_FAILURE。
注: 帧重复检测仅针对分辨率大于 200 × 200、帧率大于等于 10 fps、码率小于 20 Kbps 的视频帧。
使用限制
对某些机型而言,当本地视频采集设备正在使用中时,SDK 不会在本地视频状态发生改变时触发该回调,你需要自行做超时判断。
参数
| 参数名 | 描述 |
|---|---|
source | 视频源的类型。详见 VideoSourceType。 |
state | 本地视频状态,详见 LocalVideoStreamState。 |
reason | 本地视频状态改变原因,详见 LocalVideoStreamReason。 |
所属接口类
onLocalVideoStats
本地视频流统计信息回调。
onLocalVideoStats?:(source:Constants.VideoSourceType , stats:LocalVideoStats ) => void;详情
该回调描述本地设备发送视频流的统计信息,每 2 秒触发一次。
参数
| 参数名 | 描述 |
|---|---|
source | 视频源的类型。详见 VideoSourceType。 |
stats | 本地视频流统计信息。详见 LocalVideoStats。 |
所属接口类
onRemoteVideoStateChanged
远端视频状态发生改变回调。
onRemoteVideoStateChanged ? : (uid:number, state: Constants.RemoteVideoStreamState, reason: Constants.RemoteVideoStreamReason, elapsed:number) => void详情
注意: 频道内的用户(通信场景)或主播(直播场景)人数超过 32 人时,该回调可能不准确。
参数
| 参数名 | 描述 |
|---|---|
uid | |
state | 远端视频流状态,详见 RemoteVideoStreamState。 |
reason | 远端视频流状态改变的具体原因,详见 RemoteVideoStreamReason。 |
elapsed |
所属接口类
onRemoteVideoStats
通话中远端视频流的统计信息回调。
onRemoteVideoStats?:(stats:RemoteVideoStats) =>void;详情
该回调描述远端用户在通话中端到端的视频流统计信息, 针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播, 该回调每 2 秒会被触发多次。
参数
| 参数名 | 描述 |
|---|---|
stats | 远端视频统计数据。详见 RemoteVideoStats。 |
所属接口类
onUserEnableVideo
远端用户开/关视频模块回调。
onUserEnableVideo?:(uid:number, enabled:boolean) => void;详情
关闭视频功能是指该用户只能进行语音通话,不能显示、发送自己的视频,也不能接收、显示别人的视频。
该回调是由远端用户调用 enableVideo 或 disableVideo 方法开启或关闭视频模块触发的。
参数
所属接口类
onUserMuteVideo
远端用户取消或恢复发布视频流回调。
onUserMuteVideo?:(uid:number,muted:boolean) =>void;详情
当远端用户调用 muteLocalVideoStream 取消或恢复发布视频流时,SDK 会触发该回调向本地用户报告远端用户的发流状况。
注意: 当频道内的用户(通信场景)或主播(直播场景)的人数超过 32 人时,该回调可能不准确。
参数
所属接口类
onVideoPublishStateChanged
视频发布状态改变回调。
onVideoPublishStateChanged?:(source:Constants.VideoSourceType, channel:string, oldState:Constants.StreamPublishState, newState:Constants.StreamPublishState, elapseSinceLastState:number) => void;参数
| 参数名 | 描述 |
|---|---|
oldState | 之前的发布状态,详见 StreamPublishState。 |
newState | |
elapseSinceLastState |
频道名。
视频源的类型。详见 VideoSourceType。
所属接口类
onVideoSizeChanged
本地或远端视频大小和旋转信息发生改变回调。
onVideoSizeChanged?:(source:Constants.VideoSourceType, uid:number, width:number, height:number, rotation:number) => void参数
| 参数名 | 描述 |
|---|---|
source | 视频源的类型。详见 VideoSourceType。 |
uid | |
width | |
height | |
rotation |