Возможный дубликат iPhone: AVCaptureSession capture output crashing (AVCaptureVideoDataOutput)AVCaptureSession выход захвата Грохот (AVCaptureVideoDataOutput) в IOS7
Я создал приложение с пользовательской камеры whih используется для записи видео. С помощью AVCaptureSession и AVCaptureVideoDataOutput я получил записанный видеофайл. Все отлично работает для IOS 6 и более низкой версии. но когда я запускаю того же приложение на устройстве с применением IOS7 является сбоем при deallocating класса камеры с этой проблемой ...
thread #1: tid = 0x7994, 0x3b1eab26 libobjc.A.dylib`objc_msgSend + 6, stop reason = EXC_BAD_ACCESS (code=1, address=0x7000000c)
frame #0: 0x3b1eab26 libobjc.A.dylib`objc_msgSend + 6
frame #1: 0x2fa46654 AVFoundation`-[AVCaptureVideoDataOutput _applyOverridesToCaptureOptions:] + 172
frame #2: 0x3387b050 UIKit` stub helpers + 27224
код, который я использую для настройки вывода видео данных -
[_captureSession beginConfiguration];
if([_captureSession canAddInput:_captureDeviceInputAudio])
[_captureSession addInput:_captureDeviceInputAudio];
_captureOutputAudio = [[AVCaptureAudioDataOutput alloc] init] ;
if([_captureSession canAddOutput:_captureOutputAudio])
[_captureSession addOutput:_captureOutputAudio];
_captureDeviceVideo = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
_captureDeviceInputVideo = [AVCaptureDeviceInput deviceInputWithDevice:_captureDeviceVideo error:&error];
if([_captureSession canAddInput:_captureDeviceInputVideo])
[_captureSession addInput:_captureDeviceInputVideo];
_captureOutputVideo = [[AVCaptureVideoDataOutput alloc] init] ;
if([_captureSession canAddOutput:_captureOutputVideo])
[_captureSession addOutput:_captureOutputVideo];
[_captureOutputAudio setSampleBufferDelegate:self queue:_captureVideoDispatchQueue];
[_captureOutputVideo setSampleBufferDelegate:self queue:_captureVideoDispatchQueue];
dispatch_release(_captureSessionDispatchQueue);
dispatch_release(_captureVideoDispatchQueue);
NSString *sessionPreset = [_captureSession sessionPreset];
AVCaptureConnection *videoConnection = [_captureOutputVideo connectionWithMediaType:AVMediaTypeAudio];
[self _setOrientationForConnection:videoConnection];
// setup stabilization, if available
if ([videoConnection isVideoStabilizationSupported])
[videoConnection setEnablesVideoStabilizationWhenAvailable:YES];
// setup pixel format
NSDictionary *videoSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange], (id)kCVPixelBufferPixelFormatTypeKey,
nil];
[_captureOutputVideo setVideoSettings:videoSettings];
// discard late frames
[_captureOutputVideo setAlwaysDiscardsLateVideoFrames:NO];
// setup video to use 640 x 480 for the hightest quality touch-to-record
if ([_captureSession canSetSessionPreset:AVCaptureSessionPreset640x480])
sessionPreset = AVCaptureSessionPreset640x480;
// set the framerate and preset
CMTime frameDuration = CMTimeMake(1, 30);
if (videoConnection.supportsVideoMinFrameDuration)
videoConnection.videoMinFrameDuration = frameDuration; // needs to be applied to session in iOS 7
if (videoConnection.supportsVideoMaxFrameDuration)
videoConnection.videoMaxFrameDuration = frameDuration;
Я не понял, почему это происходит для IOS7, а на нижней версии - отлично. Нужна помощь вам, ребята. Заранее спасибо.