类 | |
---|---|
struct | VideoFrame |
Public 类型 | |
---|---|
enum | VIDEO_FRAME_TYPE { FRAME_TYPE_YUV420 = 0, FRAME_TYPE_YUV422 = 1, FRAME_TYPE_RGBA = 2 } |
enum | VIDEO_OBSERVER_POSITION { POSITION_POST_CAPTURER = 1 << 0, POSITION_PRE_RENDERER = 1 << 1, POSITION_PRE_ENCODER = 1 << 2 } |
Public 成员函数 | |
---|---|
virtual bool | onCaptureVideoFrame (VideoFrame &videoFrame)=0 |
virtual bool | onPreEncodeVideoFrame (VideoFrame &videoFrame) |
virtual bool | onRenderVideoFrame (unsigned int uid, VideoFrame &videoFrame)=0 |
virtual VIDEO_FRAME_TYPE | getVideoFormatPreference () |
virtual bool | getRotationApplied () |
virtual bool | getMirrorApplied () |
virtual bool | getSmoothRenderingEnabled () |
详细描述
IVideoFrameObserver 类
成员枚举类型说明
VIDEO_FRAME_TYPE
enum VIDEO_FRAME_TYPE
视频帧类型
枚举值
枚举值 | 描述 |
---|---|
**FRAME_TYPE_YUV420 ** | 0: YUV420 |
**FRAME_TYPE_YUV422 ** | 1: YUV422 |
**FRAME_TYPE_RGBA ** | 2: RGBA |
VIDEO_OBSERVER_POSITION
enum VIDEO_OBSERVER_POSITION
视频观测位置
枚举值
枚举值 | 描述 |
---|---|
**POSITION_POST_CAPTURER ** | 1: 本地采集视频数据后的位置,对应 onCaptureVideoFrame 回调。 |
**POSITION_PRE_RENDERER ** | 2: 接收远端发送视频前的位置,对应 onRenderVideoFrame 回调。 |
**POSITION_PRE_ENCODER ** | 4: 本地视频编码前的位置,对应 onPreEncodeVideoFrame 回调。 |
成员函数说明
onCaptureVideoFrame
virtual bool onCaptureVideoFrame(VideoFrame& videoFrame)
获取本地摄像头采集到的视频数据
成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取本地摄像头采集到的视频数据,然后根据场景需要,对视频数据进行前处理。
完成前处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。
参数
参数 | 描述 |
---|---|
videoFrame | 视频帧数据。详见: VideoFrame |
返回值
如果视频前处理失败,是否忽略该帧视频:
- true:不忽略
- false:忽略,则该帧数据不再发送回 SDK
注意事项:
如果你获取到的视频数据类型为 RGBA,anyRTC 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
onPreEncodeVideoFrame
virtual bool onPreEncodeVideoFrame(VideoFrame& videoFrame)
获取本地视频编码前的视频数据
成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取编码前的视频数据,然后根据场景需要,对视频数据进行处理。
完成处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。
参数
参数 | 描述 |
---|---|
videoFrame | 视频帧数据。详见: VideoFrame |
返回值
如果视频前处理失败,是否忽略该帧视频:
- true:不忽略
- false:忽略,该帧数据不再发送回 SDK
注意事项:
必须通过 getObservedFramePosition 设置观测 POSITION_PRE_ENCODER(1 << 2) 后, 才能使用该回调获取本地视频编码前的视频数据。 此处获取的视频数据已经过前处理,如裁剪、旋转和美颜等。 如果你获取到的视频数据类型为 RGBA,anyRTC 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
onRenderVideoFrame
virtual bool onRenderVideoFrame(const char* uid, VideoFrame& videoFrame)
获取远端发送的视频数据
成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取远端发送的视频数据,然后根据场景需求,对视频数据进行后处理。
完成后处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。
参数
参数 | 描述 |
---|---|
uid | 发送该帧视频的远端用户 ID |
videoFrame | 视频帧数据,详见 VideoFrame |
返回值
如果视频后处理失败,是否忽略该帧视频:
- true:不忽略
- false:忽略,则该帧数据不再发送回SDK
注意事项:
如果你获取到的视频数据类型为 RGBA,AR 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
getVideoFormatPreference
virtual VIDEO_FRAME_TYPE getVideoFormatPreference()
请求视频数据格式
如果你想获取 420 格式以外的视频数据,需要在调用 registerVideoFrameObserver 方法时注册该回调。 成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调返回值中设置期望的视频数据格式。
返回值
设置 SDK 输出的原始数据格式 VIDEO_FRAME_TYPE :
- FRAME_TYPE_YUV420 (0):(默认) YUV420 格式
- FRAME_TYPE_RGBA (2): RGBA 格式
getRotationApplied
virtual bool getRotationApplied()
设置视频数据旋转
如果你希望获取的视频数据已根据 VideoFrame 中的旋转信息 rotation 进行旋转,需要在调用 registerVideoFrameObserver 方法时注册该回调。 成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对采集到的视频数据进行旋转。
返回值
设置 SDK 输出视频数据时是否作旋转处理:
- true:旋转
- false:(默认)不旋转
注意事项:
该功能仅支持 RGBA 格式的视频数据。
getMirrorApplied
virtual bool getMirrorApplied()
设置视频数据镜像
如果你希望获取的视频数据为原始视频的镜像,需要在调用 registerVideoFrameObserver 方法时注册该回调,成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对原始视频数据作镜像处理。
返回值
设置 SDK 输出视频数据时是否作镜像处理:
- true:镜像
- false:(默认)不镜像
注意事项:
该功能仅支持 RGBA 格式的视频数据。
getSmoothRenderingEnabled
virtual bool getSmoothRenderingEnabled()
设置获取的视频帧是否平滑输出
如果你希望从 onRenderVideoFrame 获取的视频帧出帧时间间隔更均匀,可以在 调用 registerVideoFrameObserver 方法时 注册 getSmoothRenderingEnabled 回调,并将该回调的返回值设为 true。
返回值
设置是否对获取的视频帧平滑处理:
- true:平滑处理
- false:(默认)不平滑处理
注意事项:
该回调需要在加入频道前注册。 该回调适用于对获取的视频帧处理后自渲染的场景,不适用于处理后传回 SDK 的场景