我使用三个类在AVFoundation中进行屏幕捕获:
AVCaptureSession *m_captureSession; // AVCaptureSession
AVCaptureScreenInput *m_screenInput; //AVCaptureScreenInput
AVCaptureVideoDataOutput *m_videoOutput; // AVCaptureVideoDataOutput
使用AVCaptureVideoDataOutputSampleBufferDelegate处理每个帧。我有自己的编码模块来处理帧缓冲区。
但原始的Retina显示分辨率对我来说太过分了。所以我想知道在AVFoundation中是否可以进行下采样而不进行任何编码/压缩?
答案 0 :(得分:1)
将m_screenInput.scaleFactor
设置为小于1的值,例如0.25。
头文件提供了一个缩放 up 的示例,但缩小也适用:
指示缩放从屏幕捕获的视频缓冲区的因素的属性 默认情况下,AVCaptureScreenInput以比例因子从显示器捕获视频缓冲区 1.0(无缩放)。设置此属性以按给定因子缩放缓冲区。例如, 一个320x240的捕获区域,scaleFactor为2.0f,产生640x480的视频缓冲区。