屏幕分享

区域分享

下载pdf
更新时间:2019-09-27 10:09

1 简介

设置成区域分享后,在多显示器下可以根据坐标分享对应区域内容

本文主要讲述如何设置区域分享 详情见示例Demo

2 步骤

1. 初始化

/*
设置日志路径和级别
*/
NSString* logpath = @"/Users/**/ZegoScreenCapture/Mac_OSX/ScreenCaptureDemo";

zego_screencapture_set_log_level(kZegoLogLevelDebug, [logpath cStringUsingEncoding:NSASCIIStringEncoding]);

/*
设置捕获错误回调
*/
zego_screencapture_reg_capture_error_notify(zego_screencapture_capture_error_notify , NULL);

/*
设置捕获数据回调
*/
zego_screencapture_reg_captured_frame_available_notify(frame_available_notify, NULL);

/*
初始化
*/
zego_screencapture_init();

2. 设置捕获参数

/*
设置桌面分享的采集帧率,即OnCapturedFrameAvailable每秒回调次数
*/
zego_screencapture_set_fps(framerate);

/*
设置是否同时捕捉光标
*/
zego_screencapture_set_cursor_visible(checked);

/*
设置是否在捕捉到分享画面的同时显示点击动画
*/
zego_screencapture_enable_click_animation(checked);

/*
设置视频采集的格式
*/
//zego_screencapture_set_capture_video_pixel_format(kZegoPixelFormatBGRA32);
zego_screencapture_set_capture_video_pixel_format(kZegoPixelFormatCVImageBuffer);

3.设置捕获区域

//只能分享每一个屏幕的区域,不支持跨屏分享
zego_screencapture_set_target_rect(screenID, X, Y, Width, Height);

4.开始捕获

/*
启动捕获
*/
zego_screencapture_start_capture();

5.数据接收

void frame_available_notify(void *data, uint32_t length, const struct ZegoScreenCaptureVideoCaptureFormat *video_frame_format, uint64_t reference_time, uint32_t reference_time_scale, void *user_data)
{
    CMTime pts= CMTimeMake(reference_time, reference_time_scale);

    ZegoVideoCaptureScreenFactory *captureFactory = [ZegoAVKitManager shareInstance].captureFactory;
    if (captureFactory)
    {
        if(isCapture)
        //推流 
        [captureFactory.screenDevice captureOutputPixelBuffer:data timeStamp:pts];
    }
}

6.停止捕获

/*
停止捕获
*/
zego_screencapture_stop_capture();