In iOS, io sto usando codice per acquisire da AVCaptureStillImageOutput così:Perché jpegStillImageNSDataRepresentation genera un'eccezione quando il buffer di esempio NON è null?
[_captureStillOutput captureStillImageAsynchronouslyFromConnection: _captureConnection completionHandler: asyncCaptureCompletionHandler];
per semplicità ridursi il mio codice, il mio blocco asyncCaptureCompletionHandler assomiglia a questo:
void(^asyncCaptureCompletionHandler)(CMSampleBufferRef imageDataSampleBuffer, NSError *error) =
^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
if (CMSampleBufferIsValid(imageDataSampleBuffer)) {
NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
UIImage *image = [[UIImage alloc] initWithData:imageData];
}
}
Sono stato con tutto il mio codice e attraversare riferimento con overflow dello stack, e non ho trovato alcun suggerimento perché un campione valido il buffer sarebbe catturato senza essere un JPEG corretto.
_captureStillOutput = [[AVCaptureStillImageOutput alloc] init];
_captureStillOutput.outputSettings =
[NSDictionary dictionaryWithObjectsAndKeys:
AVVideoCodecJPEG, AVVideoCodecKey,
nil];
if ([session canAddOutput:_captureStillOutput]) {
[session addOutput:_captureStillOutput];
}
C'è informazioni supplementare nel debugger: * Chiusura di applicazione a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: '* + [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:] - Non un tampone campione jpeg.'
Le ricerche in google e stack overflow per "Non un buffer di esempio jpeg" hanno prodotto risultati zero. Sono bloccato. Bah.
Può confermare, un buon ol '' rm -rf DerivedData/* 'e il riavvio di Xcode ha risolto il problema per me. – Austin
In realtà, il problema è riapparso, ma poi è andato via quando ho chiuso iTunes. Questo è piuttosto pazzesco – Austin
Grazie per la nota che è riapparso e poi di nuovo scomparso. –