Macos 如何使用QTCaptureSession获得15帧以上的帧速率?

Macos 如何使用QTCaptureSession获得15帧以上的帧速率?,macos,video-capture,quicktime,Macos,Video Capture,Quicktime,我正在开发一个在Mac上进行面部识别的应用程序,我正在使用带有QTCaptureDecompressedDVideOutput的QTCaptureSession。我将视频分辨率限制为640x360,使用32ARGB像素格式,并将最小视频帧间隔设置为0以提高帧速率,但这并没有真正起到作用 QTCaptureDecompressedVideoOutput *output = [[QTCaptureDecompressedVideoOutput alloc] init]; [output setPix

我正在开发一个在Mac上进行面部识别的应用程序,我正在使用带有QTCaptureDecompressedDVideOutput的QTCaptureSession。我将视频分辨率限制为640x360,使用32ARGB像素格式,并将最小视频帧间隔设置为0以提高帧速率,但这并没有真正起到作用

QTCaptureDecompressedVideoOutput *output = [[QTCaptureDecompressedVideoOutput alloc] init];
[output setPixelBufferAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                  [NSNumber numberWithDouble:640], (id)kCVPixelBufferWidthKey,
                                  [NSNumber numberWithDouble:360], (id)kCVPixelBufferHeightKey,
                                  [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], (id)kCVPixelBufferPixelFormatTypeKey,                                      
                                  nil]];    

output.minimumVideoFrameInterval = 0;

无论我做什么,帧速率似乎在15-15.5 FPS左右达到峰值。这是在最新的MacBookPro 15上使用内置摄像头“/2.3GHz核心i7,运行10.7.3

通常内置的iSight摄像头会产生巨大的画面。指定的缓冲区格式实际上不会影响捕获输入,而只会影响特定的捕获输出。此外,由于原始捕获的图像不是指定的像素格式,因此将执行格式转换。所以,我猜通过指定另一种像素缓冲区格式,只会降低处理速度

minimumVideoFrameInterval
默认为0,如果您寻求最大帧速率,则无需更改它。此时的帧速率是可能的最大值

尽量避免指定像素缓冲区,并查看FPS是否有任何差异。
另外,我会使用另一个分辨率较低的外置摄像头,这将大大减少系统的负载。

通常内置的iSight摄像头会产生巨大的帧。指定的缓冲区格式实际上不会影响捕获输入,而只会影响特定的捕获输出。此外,由于原始捕获的图像不是指定的像素格式,因此将执行格式转换。所以,我猜通过指定另一种像素缓冲区格式,只会降低处理速度

minimumVideoFrameInterval
默认为0,如果您寻求最大帧速率,则无需更改它。此时的帧速率是可能的最大值

尽量避免指定像素缓冲区,并查看FPS是否有任何差异。
另外,我会使用另一个分辨率较低的外置摄像头,这将大大减少系统的负载。

谢谢Davyd。我最初没有设置任何像素缓冲区属性,仍然只有15fps。我设置了最小帧间隔以防万一,但是的,它默认为0。阅读文档后,似乎默认设置针对帧速率进行了优化,但我仍然只能获得~15fps。谢谢Davyd。我最初没有设置任何像素缓冲区属性,仍然只有15fps。我设置了最小帧间隔以防万一,但是的,它默认为0。阅读文档后,似乎默认设置针对帧速率进行了优化,但我仍然只能获得~15fps。