Источник
Итак, у меня есть 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
- кварцкор
Соответствующее Разное
Кадр вряд ли пропадет, потому что captureOutput:didDropVideoFrameWithSampleBuffer:fromConnection: также не вызывается.