struct  VideoFrame
 

Public 类型

enum  VIDEO_FRAME_TYPE { FRAME_TYPE_YUV420 = 0, FRAME_TYPE_YUV422 = 1, FRAME_TYPE_RGBA = 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 ()
 

成员枚举类型说明

◆ VIDEO_FRAME_TYPE

枚举值
FRAME_TYPE_YUV420 

0:YUV420

FRAME_TYPE_YUV422 

1:YUV422

FRAME_TYPE_RGBA 

2: RGBA

成员函数说明

◆ onCaptureVideoFrame()

virtual bool agora::media::IVideoFrameObserver::onCaptureVideoFrame ( VideoFrame videoFrame)
pure virtual

获取本地摄像头采集到的视频数据。

成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取本地摄像头采集到的视频数据,然后根据场景需要,对视频数据进行前处理。

完成前处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。

注解
如果你获取到的视频数据类型为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
参数
videoFrameVideoFrame
返回
如果视频前处理失败,是否忽略该帧视频:
  • true:不忽略
  • false:忽略,则该帧数据不再发送回 SDK

◆ onPreEncodeVideoFrame()

virtual bool agora::media::IVideoFrameObserver::onPreEncodeVideoFrame ( VideoFrame videoFrame)
inlinevirtual
自从
v3.0.0

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

成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取编码前的视频数据,然后根据场景需要,对视频数据进行处理。

完成处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。

注解
  • 此处获取的视频数据已经过前处理,如裁剪、旋转和美颜等。
  • 如果你获取到的视频数据类型为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
参数
videoFrame视频帧数据,详见 VideoFrame
返回
如果视频前处理失败,是否忽略该帧视频:
  • true:不忽略
  • false:忽略,该帧数据不再发送回 SDK

◆ onRenderVideoFrame()

virtual bool agora::media::IVideoFrameObserver::onRenderVideoFrame ( unsigned int  uid,
VideoFrame videoFrame 
)
pure virtual

获取远端发送的视频数据。

成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调。你可以在回调中获取远端发送的视频数据,然后根据场景需求,对视频数据进行后处理。

完成后处理后,你可以在该回调中,传入处理后的视频数据将其发送回 SDK。

注解
如果你获取到的视频数据类型为 RGBA,Agora 不支持将处理后的 RGBA 数据通过该回调再发送回 SDK。
参数
uid发送该帧视频的远端用户 ID
videoFrameVideoFrame
返回
如果视频后处理失败,是否忽略该帧视频:
  • true:不忽略
  • false:忽略,则该帧数据不再发送回SDK

◆ getVideoFormatPreference()

virtual VIDEO_FRAME_TYPE agora::media::IVideoFrameObserver::getVideoFormatPreference ( )
inlinevirtual

请求视频数据格式。

如果你想获取 420 格式以外的视频数据,需要在调用 registerVideoFrameObserver 方法时注册该回调。成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调返回值中设置期望的视频数据格式。

返回
设置 SDK 输出的原始数据格式 VIDEO_FRAME_TYPE

◆ getRotationApplied()

virtual bool agora::media::IVideoFrameObserver::getRotationApplied ( )
inlinevirtual

设置视频数据旋转。

如果你希望获取的视频数据已根据 VideoFrame 中的旋转信息 rotation 进行旋转,需要在调用 registerVideoFrameObserver 方法时注册该回调。成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对采集到的视频数据进行旋转。

注解
该功能仅支持 RGBA 格式的视频数据。
返回
设置 SDK 输出视频数据时是否作旋转处理:
  • true:旋转
  • false:(默认)不旋转

◆ getMirrorApplied()

virtual bool agora::media::IVideoFrameObserver::getMirrorApplied ( )
inlinevirtual

设置视频数据镜像。

如果你希望获取的视频数据为原始视频的镜像,需要在调用 registerVideoFrameObserver 方法时注册该回调,成功注册视频数据观测器后,SDK 会在捕捉到每个视频帧时触发该回调,你需要在该回调的返回值中设置是否对原始视频数据作镜像处理。

注解
该功能仅支持 RGBA 格式的视频数据。
返回
设置 SDK 输出视频数据时是否作镜像处理:
  • true:镜像
  • false:(默认)不镜像

◆ getSmoothRenderingEnabled()

virtual bool agora::media::IVideoFrameObserver::getSmoothRenderingEnabled ( )
inlinevirtual
自从
v3.0.0

设置获取的视频帧是否平滑输出。

如果你希望从 onRenderVideoFrame 获取的视频帧出帧时间间隔更均匀,可以在 调用 registerVideoFrameObserver 方法时 注册 getSmoothRenderingEnabled 回调,并将该回调的返回值设为 true

注解
  • 该回调需要在加入频道前注册。
  • 该回调适用于对获取的视频帧处理后自渲染的场景,不适用于处理后传回 SDK 的场景。
返回
设置是否对获取的视频帧平滑处理:
  • true:平滑处理
  • false:(默认)不平滑处理