Источник
Итак, у меня есть QTCaptureSession
, настроенный таким образом:
//Setup Camera
cameraSession = [[QTCaptureSession alloc] init];
QTCaptureDevice *camera = [QTCaptureDevice deviceWithUniqueID: cameraID];
BOOL success = [camera open: &error];
if (!success || error)
{
NSLog(@"Could not open device %@.", cameraID);
NSLog(@"Error: %@", [error localizedDescription]);
return nil;
}
//Setup Input Session
QTCaptureDeviceInput *cameraInput = [[QTCaptureDeviceInput alloc] initWithDevice: camera];
success = [cameraSession addInput: cameraInput error: &error];
if (!success || error)
{
NSLog(@"Could not initialize input session.");
NSLog(@"Error: %@", [error localizedDescription]);
return nil;
}
//Setup Output
QTCaptureDecompressedVideoOutput *cameraOutput = [[QTCaptureDecompressedVideoOutput alloc] init];
[cameraOutput setDelegate: self];
success = [cameraSession addOutput: cameraOutput error: &error];
if (!success || error)
{
NSLog(@"Could not initialize output session.");
NSLog(@"Error: %@", [error localizedDescription]);
return nil;
}
И QTCaptureDecompressedVideoOutput
делегата captureOutput:didOutputVideoFrame:WithSampleBuffer:fromConnection:
соответственно:
- (void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection
{
NSLog(@"starting convert\n");
}
Затем я запускаю обработку захвата, используя:
[cameraSession startRunning];
Все переменные инициализируются нормально, и сессия начинается нормально, но captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:
никогда не вызывается.
Контекст
Это приложение командной строки, скомпилированное с GCC.Он связан со следующими фреймворками:
- Тональный крем
- Какао
- QTKit
- QuartzCore
Соответствующий сборник
Скорее всего, кадр не падает, потому что captureOutput:didDropVideoFrameWithSampleBuffer:fromConnection:
также не вызывается.