IRecorderVideoFrameObserver 类
用于处理录制器的视频帧回调。
onYuvFrameCaptured
C++
virtual void onYuvFrameCaptured(const char* channelId, user_id_t userId, const agora::media::base::VideoFrame *frame) = 0;
捕获到 YUV 视频帧时触发的回调。
调用 enableRecorderVideoFrameCapture
启用视频帧采集,并将 VideoFrameCaptureType
设置为 VIDEO_FORMAT_YUV_FRAME_TYPE
后,每次捕获到 YUV 视频帧时,都会触发该回调。
参数
参数 | 数据类型 | 描述 |
---|---|---|
channelId | const char* | 频道 ID。 |
userId | user_id_t | 远端用户 ID。 |
frame | const agora::media::base::VideoFrame * | 捕获的视频帧,详见 VideoFrame 。 |
onEncodedFrameReceived
C++
virtual void onEncodedFrameReceived(const char* channelId, user_id_t userId, const uint8_t* imageBuffer, size_t length, agora::rtc::EncodedVideoFrameInfo videoEncodedFrameInfo) = 0;
编码后的视频帧采集回调。
当你在录制过程中调用 enableRecorderVideoFrameCapture
启用视频采集,并将 VideoFrameCaptureType
设置为 VIDEO_FORMAT_ENCODED_FRAME_TYPE
或 VIDEO_FORMAT_JGP_FORMAT_TYPE
时,会触发该回调:
- 当设置为编码帧类型时,每次采集到视频帧都会触发该回调。
- 当设置为 JPG 格式类型时,该回调会按照你在
RecorderVideoFrameCaptureConfig::jpgCaptureInternalInSec
中设置的时间间隔触发。
你可以通过 EncodedVideoFrameInfo::codecType
获取帧的编码格式。
参数
参数 | 数据类型 | 描述 |
---|---|---|
channelId | const char* | 频道 ID。 |
userId | user_id_t | 远端用户 ID。 |
imageBuffer | const uint8_t* | 视频图像缓冲区指针。 |
length | size_t | 视频图像数据的长度。 |
videoEncodedFrameInfo | agora::rtc::EncodedVideoFrameInfo | 编码后的视频帧信息。详见 EncodedVideoFrameInfo 。 |
onJPGFileSaved
C++
virtual void onJPGFileSaved(const char* channelId, user_id_t userId, const char* filename) = 0;
捕获的 JPG 文件保存成功时触发的回调。
调用 enableRecorderVideoFrameCapture
启用视频帧采集,并将 VideoFrameCaptureType
设置为 VIDEO_FORMAT_JPG_FILE_TYPE
后,SDK 会按照在 RecorderVideoFrameCapturedConfig::jpgCaptureIntervalInSec
中设置的时间间隔触发该回调。
参数
参数 | 数据类型 | 描述 |
---|---|---|
channelId | const char* | 频道 ID。 |
userId | user_id_t | 远端用户 ID。 |
filename | const char* | 保存的 JPG 文件名,格式为 $jpgFileStorePath/channelId_userId_YYYYMMDDHHMMSS_MS.jpg 。 |