AgoraVideoDataFrameProtocol Category Reference

Conforms to NSObject
Declared in AgoraVideoFrame.h

Overview

原始视频数据协议。

Note: 该协议仅适用于 iOS 平台。

– onCaptureVideoFrame: required method

获取本地采集的视频数据。

- (BOOL)onCaptureVideoFrame:(AgoraVideoDataFrame *)videoFrame

Parameters

videoFrame

视频数据。详见 AgoraVideoDataFrame

Return Value

  • YES: 设置 SDK 接收视频帧。
  • NO: 设置 SDK 丢弃视频帧。

Availability

v3.4.5

成功注册原始视频数据协议后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame 中获取本地采集的后的视频数据,并根据场景需要,对视频数据进行处理。完成处理后,你可以通过 videoFrame 将处理后的视频数据传回 SDK。

Note:

  • 该回调仅适用于 iOS 平台。
  • 如果你获取到的视频数据颜色编码格式为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
  • 此处获取的视频数据未经过前处理,如水印、裁剪、旋转和美颜等。

Declared In

AgoraVideoFrame.h

– onRenderVideoFrame:forUid: required method

获取接收到的远端视频数据。

- (BOOL)onRenderVideoFrame:(AgoraVideoDataFrame *)videoFrame forUid:(unsigned int)uid

Parameters

videoFrame

视频数据。详见 AgoraVideoDataFrame

uid

远端用户 ID。

Return Value

  • YES: 设置 SDK 接收视频帧。
  • NO: 设置 SDK 丢弃视频帧。

Availability

v3.4.5

成功注册原始视频数据协议且将 isMultipleChannelFrameWanted 的返回值设为 NO 后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame 中获取接收到的远端视频数据,并根据场景需要,对视频数据进行处理。完成处理后,你可以通过 videoFrame 将处理后的视频数据传回 SDK。

Note:

  • 该回调仅适用于 iOS 平台。
  • 如果你获取到的视频数据颜色编码格式为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。

Declared In

AgoraVideoFrame.h

– onPreEncodeVideoFrame:

获取本地编码前的视频数据。

- (BOOL)onPreEncodeVideoFrame:(AgoraVideoDataFrame *)videoFrame

Parameters

videoFrame

视频数据。详见 AgoraVideoDataFrame

Return Value

  • YES: 设置 SDK 接收视频帧。
  • NO: 设置 SDK 丢弃视频帧。

Availability

v3.4.5

成功注册原始视频数据协议且通过 getObservedFramePosition 设置观测 AgoraVideoFramePositionPreEncoder (1 << 2) 后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame 中获取本地编码前的视频数据, 并根据场景需要,对视频数据进行处理。完成处理后,你可以通过 videoFrame 将处理后的视频数据传回 SDK。

Note:

  • 该回调仅适用于 iOS 平台。
  • 如果你获取到的视频数据颜色编码格式为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
  • 此处获取的视频数据已经过前处理,如裁剪、旋转和美颜等。

Declared In

AgoraVideoFrame.h

– getVideoFormatPreference

设置 SDK 输出的原始视频数据格式。

- (AgoraVideoFrameType)getVideoFormatPreference

Return Value

SDK 输出的原始视频数据的颜色编码格式。详见 AgoraVideoFrameType

Availability

v3.4.5

如果你希望获取 YUV 420 颜色编码格式以外的原始视频数据,你需要在 AgoraVideoFrameType 类中实现 getVideoFormatPreference 回调。成功注册原始视频数据协议后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置期望的视频数据颜色编码格式。

Discussion

Note: 该方法仅适用于 iOS 平台。

Declared In

AgoraVideoFrame.h

– getRotationApplied

设置是否旋转 SDK 输出的原始视频数据。

- (BOOL)getRotationApplied

Return Value

是否旋转 SDK 输出的原始视频数据:

  • YES: 旋转
  • NO:(默认)不旋转

Availability

v3.4.5

如果你希望获取的原始视频数据已根据 AgoraVideoDataFrame 中的旋转信息 rotation 进行旋转,你需要在 AgoraVideoDataFrameProtocol 中实现 getRotationApplied 回调。 成功注册原始视频数据协议后,SDK 会在捕捉到每个视频帧时触发该回调, 你需要在该回调的返回值中设置是否对观测到的原始视频数据进行旋转。

Note:

  • 该方法仅适用于 iOS 平台。
  • 该功能仅支持 RGBA 和 YUV 420 颜色编码格式的视频数据。

Declared In

AgoraVideoFrame.h

– getMirrorApplied

设置是否镜像 SDK 输出的原始视频数据。

- (BOOL)getMirrorApplied

Return Value

是否镜像 SDK 输出的原始视频数据:

  • YES: 镜像
  • NO:(默认)不镜像

Availability

v3.4.5

如果你希望获取到镜像过的原始视频数据,你需要在 AgoraVideoDataFrameProtocol 中实现 getMirrorApplied 回调。成功注册原始视频数据协议后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对观测到的原始视频数据进行镜像。

Note:

  • 该方法仅适用于 iOS 平台。
  • 该功能仅支持 RGBA 和 YUV 420 颜色编码格式的视频数据。

Declared In

AgoraVideoFrame.h

– getObservedFramePosition

设置视频观测位置。

- (AgoraVideoFramePosition)getObservedFramePosition

Return Value

观测位置的 bit mask。详见 AgoraVideoFramePosition

Availability

v3.4.5

成功注册原始视频数据协议后,SDK 会在每个特定的视频帧处理节点通过 getObservedFramePosition 回调来判断是否触发如下回调:

你可以根据场景需求,通过修改 getObservedFramePosition 的返回值, 设置你需要观测的某个或多个位置。

Note:

  • 该方法仅适用于 iOS 平台。
  • 观测多个位置时,需要使用 |(或运算符)。
  • 该回调的返回值默认为 AgoraVideoFramePositionPostCapture (1 << 0)AgoraVideoFramePositionPreRenderer (1 << 1)
  • 为降低设备耗能,你可以根据实际需求适当减少观测位置。

Declared In

AgoraVideoFrame.h

– isMultipleChannelFrameWanted

设置 SDK 是否输出多个频道内接收到的远端视频数据。

- (BOOL)isMultipleChannelFrameWanted

Return Value

SDK 是否输出多个频道内接收到的远端视频数据:

  • YES: SDK 通过 onRenderVideoFrameEx 输出多个频道内接收到的远端视频数据。
  • NO:(默认)SDK 通过 onRenderVideoFrame 输出单个频道内接收到的远端视频数据。

Availability

v3.4.5

多频道(AgoraRtcChannel)场景下,如果你希望获取多个频道内接收到的远端视频数据,你需要在 AgoraVideoDataFrameProtocol 中实现 isMultipleChannelFrameWanted 回调, 并将该回调的返回值设为 YES。SDK 会在捕捉到每个视频帧时触发 onRenderVideoFrameEx 回调,你可以从中获取期望的多频道视频数据。

Note:

  • 该方法仅适用于 iOS 平台。
  • SDK 会根据你在 isMultipleChannelFrameWanted 回调中设置的返回值来选择触发 onRenderVideoFrameonRenderVideoFrameEx 回调。Agora 推荐你在多频道场景下,将返回值设为 YES

Declared In

AgoraVideoFrame.h

– onRenderVideoFrameEx:forUid:inChannel:

获取多个频道内接收到的远端视频数据。

- (BOOL)onRenderVideoFrameEx:(AgoraVideoDataFrame *)videoFrame forUid:(unsigned int)uid inChannel:(NSString *)channelId

Parameters

videoFrame

视频数据。详见 AgoraVideoDataFrame

uid

远端用户 ID。

channelId

频道名。

Return Value

  • YES: 设置 SDK 接收视频帧。
  • NO: 设置 SDK 丢弃视频帧。

Availability

v3.4.5

成功注册原始视频数据协议且将 isMultipleChannelFrameWanted 的返回值设为 YES 后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame 中获取多个频道内接收到的远端视频数据,并根据场景需要,对视频数据进行处理。完成处理后, 你可以通过 videoFrame 将处理后的视频数据传回 SDK。

Note:

  • 该回调仅适用于 iOS 平台。
  • 如果你获取到的视频数据颜色编码格式为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。

Declared In

AgoraVideoFrame.h