AgoraVideoDataFrameProtocol Protocol Reference
| Conforms to | NSObject |
|---|---|
| Declared in | AgoraVideoFrame.h |
– onCaptureVideoFrame:
required method
获取本地采集的视频数据。
- (BOOL)onCaptureVideoFrame:(AgoraVideoDataFrame *)videoFrameParameters
videoFrame |
视频数据。详见 AgoraVideoDataFrame 。 |
|---|
Return Value
- YES: 设置 SDK 接收视频帧。
- NO: 设置 SDK 丢弃视频帧。
Availability
v3.4.5
成功注册原始视频数据协议后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame
中获取本地采集的后的视频数据,并根据场景需要,对视频数据进行处理。完成处理后,你可以通过
videoFrame 将处理后的视频数据传回 SDK。
Note:
- 该回调仅适用于 iOS 平台。
- 如果你获取到的视频数据颜色编码格式为 RGBA,声网不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
- 此处获取的视频数据未经过前处理,如水印、裁剪、旋转和美颜等。
Declared In
AgoraVideoFrame.h
– onRenderVideoFrame:forUid:
required method
获取接收到的远端视频数据。
- (BOOL)onRenderVideoFrame:(AgoraVideoDataFrame *)videoFrame forUid:(unsigned int)uidParameters
videoFrame |
视频数据。详见 AgoraVideoDataFrame 。 |
|---|---|
uid |
远端用户 ID。 |
Return Value
- YES: 设置 SDK 接收视频帧。
- NO: 设置 SDK 丢弃视频帧。
Availability
v3.4.5
成功注册原始视频数据协议且将
isMultipleChannelFrameWanted
的返回值设为 NO 后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame
中获取接收到的远端视频数据,并根据场景需要,对视频数据进行处理。完成处理后,你可以通过
videoFrame 将处理后的视频数据传回 SDK。
Note:
- 该回调仅适用于 iOS 平台。
- 如果你获取到的视频数据颜色编码格式为 RGBA,声网不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
Declared In
AgoraVideoFrame.h
– onPreEncodeVideoFrame:
获取本地编码前的视频数据。
- (BOOL)onPreEncodeVideoFrame:(AgoraVideoDataFrame *)videoFrameParameters
videoFrame |
视频数据。详见 AgoraVideoDataFrame 。 |
|---|
Return Value
- YES: 设置 SDK 接收视频帧。
- NO: 设置 SDK 丢弃视频帧。
Availability
v3.4.5
成功注册原始视频数据协议且通过
getObservedFramePosition
设置观测 AgoraVideoFramePositionPreEncoder (1 << 2) 后,SDK
会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame 中获取本地编码前的视频数据,
并根据场景需要,对视频数据进行处理。完成处理后,你可以通过 videoFrame
将处理后的视频数据传回 SDK。
Note:
- 该回调仅适用于 iOS 平台。
- 如果你获取到的视频数据颜色编码格式为 RGBA,声网不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
- 此处获取的视频数据已经过前处理,如裁剪、旋转和美颜等。
Declared In
AgoraVideoFrame.h
– getVideoFormatPreference
设置 SDK 输出的原始视频数据格式。
- (AgoraVideoFrameType)getVideoFormatPreferenceReturn Value
SDK 输出的原始视频数据的颜色编码格式。详见 AgoraVideoFrameType 。
Availability
v3.4.5
如果你希望获取 YUV 420 颜色编码格式以外的原始视频数据,你需要在 AgoraVideoFrameType
类中实现 getVideoFormatPreference 回调。成功注册原始视频数据协议后,SDK
会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置期望的视频数据颜色编码格式。
Discussion
Note: 该方法仅适用于 iOS 平台。
Declared In
AgoraVideoFrame.h
– getRotationApplied
设置是否旋转 SDK 输出的原始视频数据。
- (BOOL)getRotationAppliedReturn 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)getMirrorAppliedReturn Value
是否镜像 SDK 输出的原始视频数据:
- YES: 镜像
- NO:(默认)不镜像
Availability
v3.4.5
如果你希望获取到镜像过的原始视频数据,你需要在 AgoraVideoDataFrameProtocol 中实现
getMirrorApplied 回调。成功注册原始视频数据协议后,SDK
会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对观测到的原始视频数据进行镜像。
Note:
- 该方法仅适用于 iOS 平台。
- 该功能仅支持 RGBA 和 YUV 420 颜色编码格式的视频数据。
Declared In
AgoraVideoFrame.h
– getObservedFramePosition
设置视频观测位置。
- (AgoraVideoFramePosition)getObservedFramePositionReturn 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)isMultipleChannelFrameWantedReturn Value
SDK 是否输出多个频道内接收到的远端视频数据:
- YES: SDK 通过
onRenderVideoFrameEx输出多个频道内接收到的远端视频数据。 - NO:(默认)SDK 通过
onRenderVideoFrame输出单个频道内接收到的远端视频数据。
Availability
v3.4.5
多频道(AgoraRtcChannel)场景下,如果你希望获取多个频道内接收到的远端视频数据,你需要在
AgoraVideoDataFrameProtocol 中实现 isMultipleChannelFrameWanted 回调,
并将该回调的返回值设为 YES。SDK 会在捕捉到每个视频帧时触发
onRenderVideoFrameEx
回调,你可以从中获取期望的多频道视频数据。
Note:
- 该方法仅适用于 iOS 平台。
- SDK 会根据你在
isMultipleChannelFrameWanted回调中设置的返回值来选择触发 onRenderVideoFrame 或 onRenderVideoFrameEx 回调。声网推荐你在多频道场景下,将返回值设为YES。
Declared In
AgoraVideoFrame.h
– onRenderVideoFrameEx:forUid:inChannel:
获取多个频道内接收到的远端视频数据。
- (BOOL)onRenderVideoFrameEx:(AgoraVideoDataFrame *)videoFrame forUid:(unsigned int)uid inChannel:(NSString *)channelIdParameters
videoFrame |
视频数据。详见 AgoraVideoDataFrame 。 |
|---|---|
uid |
远端用户 ID。 |
channelId |
频道名。 |
Return Value
- YES: 设置 SDK 接收视频帧。
- NO: 设置 SDK 丢弃视频帧。
Availability
v3.4.5
成功注册原始视频数据协议且将
isMultipleChannelFrameWanted
的返回值设为 YES 后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在 videoFrame
中获取多个频道内接收到的远端视频数据,并根据场景需要,对视频数据进行处理。完成处理后,
你可以通过 videoFrame 将处理后的视频数据传回 SDK。
Note:
- 该回调仅适用于 iOS 平台。
- 如果你获取到的视频数据颜色编码格式为 RGBA,声网不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
Declared In
AgoraVideoFrame.h
