视频基础功能

  • iOS

更新时间不可用

disableVideo

禁用视频模块。

Objective-C
- (int)disableVideo NS_SWIFT_NAME(disableVideo());

该方法用于禁用视频模块。

注: 该方法会影响内部引擎,且可在离开频道后调用。调用该方法会重置整个引擎,导致响应时间变慢。你可以根据实际需求,使用以下方法分别控制视频模块的具体功能:

调用时机

该方法可在加入频道前或加入频道后调用。

  • 如果在加入频道前调用,则进入语音通话模式。
  • 如果在加入频道后调用,则从视频通话模式切换为语音通话模式。之后调用 enableVideo 可重新切换为视频通话模式。

相关回调

成功调用该方法后,远端会触发 rtcEngine:didVideoEnabled:byUid:(NO)回调。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

enableLocalVideo:

启用或关闭本地视频采集。

Objective-C
- (int)enableLocalVideo:(BOOL)enabled NS_SWIFT_NAME(enableLocalVideo(_:));

该方法用于关闭或重新开启本地视频采集,不影响接收远端视频流。调用 enableVideo 后,默认开启本地视频采集。如果你在频道内调用 enableLocalVideo: 传入 NO 关闭本地视频采集,同时会停止在频道内发布视频流。若需重新开启视频采集,你可以调用 enableLocalVideo: 传入 YES,然后调用 updateChannelWithMediaOptions: 并设置 options 参数,以在频道内发布本地采集的视频流。

注:

  • 你可以在加入频道前或加入频道后调用该方法。但如果在加入频道前调用,设置仅在加入频道后生效。
  • 该方法会启用内部引擎,离开频道后仍然有效。

参数

参数名描述
enabled

是否启用本地视频采集。

  • YES:(默认)启用本地视频采集。
  • NO:关闭本地视频采集。关闭后,远端用户无法接收你的本地视频流,但你仍可接收远端用户的视频流。设置为 NO 时,无需本地摄像头。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

enableVideo

启用视频模块。

Objective-C
- (int)enableVideo NS_SWIFT_NAME(enableVideo());

默认情况下视频模块处于关闭状态,调用该方法可启用视频模块。如果需要关闭视频模块,需要调用 disableVideo 方法。 该方法可以在加入频道前或加入频道后调用:

  • 如果在加入频道前调用,则启用视频模块。
  • 如果在语音通话过程中调用,则语音通话会自动切换为视频通话。

注: 该方法启用内部引擎,离开频道后仍然有效。 调用该方法会重置整个引擎,导致响应时间变慢。你可以根据实际需求,使用以下方法分别控制视频模块的具体功能:

成功调用该方法会重置 enableLocalVideo:、muteRemoteVideoStream:mute: 和 muteAllRemoteVideoStreams:,请谨慎使用。

调用时机

该方法可以在加入频道前或加入频道后调用。

相关回调

成功调用该方法后,SDK 会触发 rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed: 回调报告远端视频状态变化。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setVideoEncoderConfiguration:

设置本地视频的编码配置。

Objective-C
- (int)setVideoEncoderConfiguration:(AgoraVideoEncoderConfiguration * _Nonnull)config NS_SWIFT_NAME(setVideoEncoderConfiguration(_:));

设置本地视频的编码配置。每个配置文件对应一组视频参数,包括分辨率、帧率和码率。

注:

  • 此方法和 getMirrorApplied 方法都支持设置镜像效果。声网建议你只使用其中一种方法进行设置,同时使用会导致镜像效果叠加,设置失败。
  • 此方法中指定的 config 是在理想网络条件下的最大值。如果由于网络不稳定,视频引擎无法使用指定的 config 渲染视频,则会依次尝试列表中更低的参数,直到找到可用的配置。

调用时机

你可以在加入频道前或后调用此方法。如果你在加入频道后不需要重新设置视频编码属性,声网建议你在调用 enableVideo 之前调用此方法,以减少首帧视频渲染时间。

参数

参数名描述
config

视频配置参数。详见 AgoraVideoEncoderConfiguration。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setVideoEncoderConfigurationEx:connection:

设置视频编码器配置。

Objective-C
- (int)setVideoEncoderConfigurationEx:(AgoraVideoEncoderConfiguration* _Nonnull)config
                           connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setVideoEncoderConfigurationEx(_:connection:));

设置本地视频的编码器配置。每个配置文件对应一组视频参数,包括分辨率、帧率和码率。

注: config 参数表示在理想网络条件下的最大值。如果由于网络条件不稳定,视频引擎无法使用指定的 config 渲染视频,则会依次尝试列表中较低的参数,直到找到可用的配置。

适用场景

该方法适用于多频道场景。

调用时机

你可以在加入频道前或后调用此方法。如果你在加入频道后不需要重新设置视频编码属性,声网建议你在调用 enableVideo 之前调用此方法,以减少首帧视频渲染时间。

参数

参数名描述
config

视频配置参数。详见 AgoraVideoEncoderConfiguration。

connection

连接信息。详见 AgoraRtcConnection。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setVideoResolution:andFrameRate:bitrate:

手动设置视频编码配置。

Objective-C
- (int)setVideoResolution:(CGSize)size andFrameRate:(NSInteger)frameRate bitrate:(NSInteger)bitrate NS_SWIFT_NAME(setVideoResolution(_:andFrameRate:bitrate:)) __deprecated_msg("use setVideoEncoderConfiguration: instead.");

废弃

自 v2.3 版本废弃,请改用 setVideoEncoderConfiguration:。

参数

参数名描述
size

你想要设置的视频尺寸。最大值为 1280 × 720。

frameRate

你想要设置的视频帧率。最大值为 30。你可以设置为 5、10、15、24、30 等。

bitrate

你想要设置的视频码率。你需要根据宽度、高度和帧率手动计算码率。在相同宽高下,码率会随着帧率的变化而变化:

  • 如果帧率为 5 fps,推荐码率除以 2。
  • 如果帧率为 15 fps,使用推荐码率。
  • 如果帧率为 30 fps,推荐码率乘以 1.5。
  • 如果选择其他帧率,请按比例计算码率。

例如,分辨率为 320 × 240,帧率为 15 fps,则码率为 200:

  • 如果帧率为 5 fps,码率为 100。
  • 如果帧率为 30 fps,码率为 300。

如果你设置的码率超出合理范围,SDK 会自动将其调整到范围内的值。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

setVideoScenario:

设置视频应用场景。

Objective-C
- (int)setVideoScenario:(AgoraApplicationScenarioType)scenarioType  NS_SWIFT_NAME(setVideoScenario(_:));

自从

自 v4.2.0 版本新增。

调用该方法后,SDK 会根据指定的视频应用场景自动启用最佳实践策略,并调整关键性能指标,以优化视频体验。

注: 请在加入频道前调用该方法。

参数

参数名描述
scenarioType

视频应用场景的类型,详见 AgoraApplicationScenarioType。

  • AgoraApplicationMeetingScenario(1):适用于会议场景。SDK 会自动启用以下策略:

    • 若低画质视频流需要较高码率,SDK 会自动启用多种应对网络拥塞的技术,以增强低画质视频流的性能,确保订阅端的流畅接收。

    • SDK 实时监控高画质视频流的订阅人数,并根据订阅人数动态调整其配置:

      • 若无人订阅高画质视频流,SDK 会自动降低其码率和帧率以节省上行带宽。

      • 若有人订阅高画质视频流,SDK 会将其重置为最近一次调用 setVideoEncoderConfiguration: 所设置的配置。如果你未设置过配置,则使用以下默认值:

        • iOS:

          • 分辨率:960 × 540。
          • 帧率:15 fps。
          • 码率:1000 Kbps。
        • macOS:

          • 分辨率:1280 × 720。
          • 帧率:15 fps。
          • 码率:1600 Kbps。
    • SDK 实时监控低画质视频流的订阅人数,并根据订阅人数动态启用或禁用该流。

      • 若无人订阅低画质视频流,SDK 会自动禁用该流以节省上行带宽。

      • 若有人订阅低画质视频流,SDK 会启用该流,并将其重置为最近一次调用 setDualStreamMode:streamConfig: 所设置的配置。如果你未设置过配置,则使用以下默认值:

        • 分辨率:480 × 272。
        • 帧率:15 fps。
        • 码率:500 Kbps。
      • 注意:如果你调用了 setDualStreamMode:streamConfig: 并设置为永不发送低画质视频流(AgoraDisableSimulcastStream),则会议场景下低画质流的动态调整将不生效。

  • AgoraApplication1V1Scenario(2):适用于一对一直播场景。为满足该场景下低延迟和高画质的需求,SDK 会优化策略,提升视频质量、首帧渲染速度、中低端设备的延迟表现,以及弱网环境下的流畅度。

注意:该枚举值仅适用于主播对主播的场景。

  • AgoraApplicationLiveShowScenario(3):适用于秀场场景。在该场景中,快速的视频渲染和高画质至关重要。SDK 会进行多项性能优化,包括自动启用音视频帧加速渲染以最小化首帧延迟(无需调用 enableInstantMediaRendering),以及启用 B 帧编码以提升图像质量和带宽效率。即使在网络较差或低端设备上,SDK 也能提供增强的视频质量和流畅的播放体验。
表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。

  • < 0:方法调用失败。详见错误码了解详情和解决建议。

    • -1:发生通用错误(无具体原因)。
    • -4:不支持设置视频应用场景。可能原因包括你使用了语音 SDK 而非视频 SDK。
    • -7:AgoraRtcEngineKit 对象尚未初始化。请在调用该方法前先初始化该对象。

所属接口类

startPreview

启用本地视频预览。

Objective-C
- (int)startPreview NS_SWIFT_NAME(startPreview());

你可以调用此方法启用本地视频预览。

注:

  • 本地预览默认启用镜像模式。
  • 离开频道后,本地预览仍然保持开启状态。你需要调用 stopPreview 来关闭本地预览。

调用时机

必须在调用 enableVideo 和 setupLocalVideo 之后调用该方法。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

startPreview:

启用本地视频预览并指定预览的视频源。

Objective-C
- (int)startPreview: (AgoraVideoSourceType)sourceType NS_SWIFT_NAME(startPreview(_:));

该方法用于启动本地视频预览,并指定出现在预览画面中的视频源。

注:

  • 本地预览默认启用镜像模式。
  • 离开频道后,本地预览仍然保持开启状态。你需要调用 stopPreview 来关闭本地预览。

调用时机

必须在调用 enableVideo 和 setupLocalVideo: 之后调用该方法。

参数

参数名描述
sourceType

视频源的类型,详见 AgoraVideoSourceType。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

stopPreview

停止你本地的视频预览和视频。

Objective-C
- (int)stopPreview NS_SWIFT_NAME(stopPreview());

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

stopPreview:

停止本地视频预览。

Objective-C
- (int)stopPreview: (AgoraVideoSourceType)sourceType NS_SWIFT_NAME(stopPreview(_:));

调用时机

在加入频道前或离开频道后调用该方法。

参数

参数名描述
sourceType

视频源的类型。详见 AgoraVideoSourceType。

表格内容超出当前宽度,可横向滚动查看更多列。

返回值

  • 0:方法调用成功。
  • < 0:方法调用失败。详见错误码了解详情和解决建议。

所属接口类

rtcEngine:firstLocalVideoFrameWithSize:elapsed:sourceType:

本地视频视图显示首帧本地视频画面时触发的回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalVideoFrameWithSize:(CGSize)size elapsed:(NSInteger)elapsed sourceType:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(rtcEngine(_:firstLocalVideoFrameWith:elapsed:sourceType:));

触发时机

当本地视频视图上显示首帧本地视频画面时触发。

参数

参数名描述
engine

引擎对象,详见 AgoraRtcEngineKit。

size

首帧本地视频画面的尺寸。

elapsed

从调用 joinChannelByToken:channelId:info:uid:joinSuccess: 或 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道到 SDK 触发该回调的时间间隔(毫秒)。如果在加入频道前调用了 startPreview 或 startPreview:,该参数表示从调用 startPreview 或 startPreview: 到触发该事件的时间间隔。

sourceType

视频源的类型,详见 AgoraVideoSourceType。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:firstLocalVideoFramePublishedWithElapsed:sourceType:

当首帧本地视频发布时触发。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalVideoFramePublishedWithElapsed:(NSInteger)elapsed sourceType:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(rtcEngine(_:firstLocalVideoFramePublishedWithElapsed:sourceType:));

触发时机

该回调在发布首帧本地视频时触发,触发时机包括:

  • 启用视频模块并调用 joinChannelByToken 成功加入频道;
  • 依次调用 muteLocalVideoStream:YES 和 muteLocalVideoStream:NO;
  • 依次调用 disableVideo 和 enableVideo;
  • 调用 pushExternalVideoFrame 成功向 SDK 推送视频帧。

参数

参数名描述
engine
elapsed

从调用 joinChannelByToken 加入频道到该回调被触发的时间间隔(毫秒)。

sourceType

视频源的类型。详见 AgoraVideoSourceType。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:firstRemoteVideoDecodedOfUid:size:elapsed:

接收到并解码首帧远端视频时触发的回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:firstRemoteVideoDecodedOfUid:size:elapsed:)) __deprecated_msg("use rtcEngine:remoteVideoStateChangedOfUid:state:reason: instead.");

废弃

自 v4.5.0 版本废弃,请改用 remoteVideoStateChangedOfUid。

触发时机

该回调在以下场景中被触发:

  • 远端用户加入频道并发送视频流。
  • 远端用户停止发送视频流 15 秒后重新发送。中断的原因包括:远端用户离开频道、掉线,或调用 disableVideo 关闭视频。

参数

参数名描述
engine
uid

发送视频流的远端用户 ID。

size

视频尺寸。

elapsed

从调用 joinChannelByToken 方法到触发该回调的时间(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed:

远端视频首帧渲染回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstRemoteVideoFrameOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:firstRemoteVideoFrameOfUid:size:elapsed:));

注: 该回调仅在视频帧由 SDK 渲染时触发;如果你使用自定义视频渲染,则不会触发该回调。你需要使用 SDK 之外的方法自行实现。

触发时机

该回调在远端用户的视频首帧被 SDK 渲染时触发。

参数

参数名描述
engine

引擎对象,详见 AgoraRtcEngineKit。

uid

发送视频流的远端用户 ID。

size

视频画面的尺寸。

elapsed

从调用 joinChannelByToken 加入频道到触发该回调的时间(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:localVideoStateChangedOfState:reason:sourceType:

当本地视频流状态发生变化时触发的回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStateChangedOfState:(AgoraVideoLocalState)state reason:(AgoraLocalVideoStreamReason)reason sourceType:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(rtcEngine(_:localVideoStateChangedOf:reason:sourceType:));

当本地视频状态发生变化时,SDK 会触发该回调,报告当前本地视频状态及其变化原因。你可以通过该回调及时了解本地视频流的状态变化,并根据变化原因采取相应措施,以更好地管理和排查视频流相关问题。

注: 请注意,视频帧重复检测仅适用于分辨率大于 200 × 200、帧率大于等于 10 fps 且码率小于 20 Kbps 的视频帧。通常情况下,如果视频采集出现错误,可以通过该回调中的 reason 参数排查问题。但在某些设备上,当采集出现问题(如卡顿)时,Android 系统不会抛出任何错误回调,SDK 也无法上报本地视频状态变化的原因。此时,你可以通过以下方式判断是否未采集到视频帧:该回调上报的 state 为 AgoraVideoLocalStateCapturing 或 AgoraVideoLocalStateEncoding,且 rtcEngine:localVideoStats:sourceType: 回调中的 captureFrameRate 为 0。

触发时机

该回调在以下情况下被触发,state 为 AgoraVideoLocalStateFailed,reason 为 AgoraLocalVideoStreamReasonCaptureFailure:

  • 应用切换到后台,系统回收了摄像头资源。
  • 摄像头正常启动,但连续四秒未输出视频帧。

当摄像头输出采集的视频帧时,若 SDK 检测到连续 15 帧重复帧,也会触发该回调,state 为 AgoraVideoLocalStateCapturing,reason 为 AgoraLocalVideoStreamReasonCaptureFailure。

参数

参数名描述
engine

当前使用的 AgoraRtcEngineKit 实例。

sourceType

视频源的类型,详见 AgoraVideoSourceType。

state

本地视频的状态,详见 AgoraVideoLocalState。

reason

本地视频状态变化的原因,详见 AgoraLocalVideoStreamReason。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:localVideoStats:sourceType:

本地视频流统计信息回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStats:(AgoraRtcLocalVideoStats * _Nonnull)stats sourceType:(AgoraVideoSourceType)sourceType NS_SWIFT_NAME(rtcEngine(_:localVideoStats:sourceType:));

触发时机

该回调每两秒触发一次。

参数

参数名描述
engine
stats

本地视频流的统计信息。详见 AgoraRtcLocalVideoStats。

sourceType

视频源的类型。详见 AgoraVideoSourceType。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed:

远端视频状态发生改变回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteVideoStateChangedOfUid:(NSUInteger)uid state:(AgoraVideoRemoteState)state reason:(AgoraVideoRemoteReason)reason elapsed:(NSInteger)elapsed NS_SWIFT_NAME(rtcEngine(_:remoteVideoStateChangedOfUid:state:reason:elapsed:));

注: 当频道中的用户数(在通信频道场景中)或主播数(在直播频道中)超过 32 时,该回调无法正常工作。

触发时机

该回调在远端视频状态发生变化时被触发。

参数

参数名描述
engine

引擎对象。详见 AgoraRtcEngineKit。

uid

发生视频状态变化的远端用户 ID。

state

远端视频的状态。详见 AgoraVideoRemoteState。

reason

远端视频状态变化的原因。详见 AgoraVideoRemoteReason。

elapsed

从调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 方法到 SDK 触发该回调的时间间隔(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:remoteVideoStats:

报告每位远端用户发送的视频流的统计信息。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine remoteVideoStats:(AgoraRtcRemoteVideoStats * _Nonnull)stats NS_SWIFT_NAME(rtcEngine(_:remoteVideoStats:));

触发时机

该回调每两秒为每位远端用户触发一次。如果频道中有多个用户或主播发送视频流,SDK 会触发多次该回调。

参数

参数名描述
engine
stats

远端视频流的统计信息。详见 AgoraRtcRemoteVideoStats。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:videoTransportStatsOfUid:delay:lost:rxKBitRate:

上报每个远端视频流的传输层统计信息。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine videoTransportStatsOfUid:(NSUInteger)uid delay:(NSUInteger)delay lost:(NSUInteger)lost rxKBitRate:(NSUInteger)rxKBitRate NS_SWIFT_NAME(rtcEngine(_:videoTransportStatsOfUid:delay:lost:rxKBitRate:)) __deprecated_msg("use rtcEngine:remoteVideoStats: instead");

废弃

该方法已废弃,请改用 rtcEngine:remoteVideoStats:。

触发时机

该回调在通话过程中,每当接收到远端用户或主播发送的视频包时,每 2 秒触发一次。

参数

参数名描述
engine
uid

发送视频包的远端用户 ID。

delay

从发送端到接收端的网络时延(毫秒)。

lost

远端用户发送的视频包的丢包率(%)。

rxKBitRate

接收到的视频码率(Kbps)。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:didLocalVideoEnabled:byUid:

当指定的远端用户启用或关闭本地视频采集功能时触发。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didLocalVideoEnabled:(BOOL)enabled byUid:(NSUInteger)uid NS_SWIFT_NAME(rtcEngine(_:didLocalVideoEnabled:byUid:)) __deprecated_msg("use rtcEngine:remoteVideoStateChangedOfUid:state:reason: instead.");

废弃

自 v4.5.0 版本废弃,请改用 remoteVideoStateChangedOfUid:state:reason:elapsed:。

当远端用户调用 enableLocalVideo: 方法启用或关闭本地视频采集功能时,SDK 会触发该回调。

触发时机

该回调在远端用户调用 enableLocalVideo: 启用或关闭本地视频采集功能时被触发。

参数

参数名描述
engine
enabled

指定的远端用户是否启用本地视频采集功能:

  • YES:启用视频模块,频道内其他用户可以看到该远端用户的视频。
  • NO:关闭视频模块,频道内其他用户无法接收该远端用户的视频流,但该远端用户仍可接收其他用户的视频流。
uid

远端用户的用户 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:didVideoEnabled:byUid:

远端用户启用或关闭视频模块回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didVideoEnabled:(BOOL)enabled byUid:(NSUInteger)uid NS_SWIFT_NAME(rtcEngine(_:didVideoEnabled:byUid:));

当远端用户调用 enableVideo 或 disableVideo 方法启用或关闭视频模块时,SDK 会触发该回调。一旦视频模块被关闭,用户只能进行语音通话,无法发送或接收任何视频。

触发时机

该回调在远端用户调用 enableVideo 或 disableVideo 方法启用或关闭视频模块时被触发。

参数

参数名描述
engine
enabled
  • YES:视频模块已启用。
  • NO:视频模块已关闭。
uid

远端用户 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:didVideoMuted:byUid:

远端用户停止或恢复发布视频流时触发的回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didVideoMuted:(BOOL)muted byUid:(NSUInteger)uid NS_SWIFT_NAME(rtcEngine(_:didVideoMuted:byUid:));

当远端用户调用 muteLocalVideoStream: 方法停止或恢复发布视频流时,SDK 会触发该回调,报告远端用户的视频流状态。

注: 当通信场景中的用户数或直播场景中的主播数超过 32 时,该回调可能不准确。

触发时机

该回调在远端用户调用 muteLocalVideoStream: 停止或恢复发布视频流时被触发。

参数

参数名描述
engine
muted

远端用户是否停止发布视频流:

  • YES:远端用户停止发布视频流。
  • NO:远端用户恢复发布视频流。
uid

远端用户 ID。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:didVideoPublishStateChange:sourceType:oldState:newState:elapseSinceLastState:

视频发布状态发生变化回调。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didVideoPublishStateChange:(NSString * _Nonnull)channelId
         sourceType:(AgoraVideoSourceType)sourceType
           oldState:(AgoraStreamPublishState)oldState
           newState:(AgoraStreamPublishState)newState
elapseSinceLastState:(int)elapseSinceLastState NS_SWIFT_NAME(rtcEngine(_:didVideoPublishStateChange:sourceType:oldState:newState:elapseSinceLastState:));

该回调在视频发布状态发生变化时触发。

触发时机

该回调在视频发布状态发生变化时触发。

参数

参数名描述
engine
channelId

频道名。

sourceType

视频源类型,详见 AgoraVideoSourceType。

oldState

之前的视频发布状态,详见 AgoraStreamPublishState。

newState

当前的视频发布状态,详见 AgoraStreamPublishState。

elapseSinceLastState

从之前状态到当前状态所经历的时间(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngine:videoSizeChangedOfSourceType:uid:size:rotation:

当指定用户的视频尺寸或旋转信息发生变化时触发。

Objective-C
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine videoSizeChangedOfSourceType:(AgoraVideoSourceType)sourceType uid:(NSUInteger)uid size:(CGSize)size rotation:(NSInteger)rotation NS_SWIFT_NAME(rtcEngine(_:videoSizeChangedOf:uid:size:rotation:));

注: rotation 参数在 iOS 上始终为 0。

参数

参数名描述
engine
sourceType

视频源的类型。详见 AgoraVideoSourceType。

uid

发生视频尺寸或旋转变化的用户 ID。对于本地用户,uid 为 0,表示本地用户的视频预览。

size

视频尺寸。

rotation

旋转信息,取值范围为 [0, 360)。

注: rotation 参数在 iOS 上始终为 0。

表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类

rtcEngineVideoDidStop:

视频停止播放时的回调。

Objective-C
- (void)rtcEngineVideoDidStop:(AgoraRtcEngineKit * _Nonnull)engine NS_SWIFT_NAME(rtcEngineVideoDidStop(_:)) __deprecated_msg("Use rtcEngine:localVideoStateChangedOfState:reason:sourceType: instead");

废弃

该回调在视频停止播放时触发。你可以通过该回调更改视图的配置,例如在视图中显示其他图片。

触发时机

该回调在视频停止播放时触发。

参数

参数名描述
engine
表格内容超出当前宽度,可横向滚动查看更多列。

所属接口类