Сообщение старое, но оно почти первое в google, и оно не имеет действительного ответа, так что вот еще один опция:
Решение для iOS от 4.x до 7.х
Это все с точки зрения AV Foundation
рамках
После AVCaptureSession
настроен и начал вы можете найти размеры видео внутри [[[session.inputs.lastObject] ports].lastObject formatDescription]
переменной
Вот приблизительный код:
AVCaptureSession* session = ...;
AVCaptureDevice *videoCaptureDevice = ...;
AVCaptureDeviceInput *videoInput = ...;
[session beginConfiguration];
if ([session canAddInput:videoInput]) {[session addInput:videoInput];}
[session commitConfiguration];
[session startRunning];
//this is the clue
AVCaptureInputPort *port = videoInput.ports.lastObject;
if ([port mediaType] == AVMediaTypeVideo)
{
videoDimensions = CMVideoFormatDescriptionGetDimensions([port formatDescription]);
}
Раствор для iOS8
Яблоко было изменить все снова: теперь вы должны подписаться на AVCaptureInputPortFormatDescriptionDidChangeNotification
Вот пример:
-(void)initSession
{
AVCaptureSession* session = ...;
AVCaptureDevice *videoCaptureDevice = ...;
AVCaptureDeviceInput *videoInput = ...;
[session beginConfiguration];
if ([session canAddInput:videoInput]) {[session addInput:videoInput];}
[session commitConfiguration];
[session startRunning];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(avCaptureInputPortFormatDescriptionDidChangeNotification:)
name:@"AVCaptureInputPortFormatDescriptionDidChangeNotification"
object:nil];
}
-(void)avCaptureInputPortFormatDescriptionDidChangeNotification:(NSNotification *)notification
{
AVCaptureInputPort *port = [videoInput.ports objectAtIndex:0];
CMFormatDescriptionRef formatDescription = port.formatDescription;
if (formatDescription) {
videoDimensions = CMVideoFormatDescriptionGetDimensions(formatDescription);
}
}
Я откладывался именно по этой причине: если компании Apple делает еще один iPhone с различным разрешением камеры, я бы быть вынужденным сделать обновление моего приложения. Ну, предположим, мне нужно будет придерживаться этого. Спасибо за ответ. – iamj4de
Причина, по которой я так выразился, заключается в том, что если Apple сделает еще один iPhone, есть вполне вероятные ДРУГИЕ причины, по которым вам нужно будет обновить свое приложение. – snicker