2015-04-19 17 views
7

In einer App, die ich entwickle, möchte ich dem Benutzer die Auflösung der Videoaufnahme überlassen. Aufgrund der Spezifikation kann ich AVCaptureSessionPreset Konstanten nicht verwenden.
In der Formatliste gibt es Auflösungen über 3000px, die natürlich nicht für Video Grabbing, sondern nur für Fotoshootings funktionieren.
Verstehen, ob AVCaptureDeviceFormat für Videoaufnahmen geeignet ist

AVCaptureDeviceFormat: 0x17020c830 'vide'/'420f' 3264x2448, 2- { 30 fps}, HRSI: 3264x2448, FOV: 58,040, max Zoom: 153.00 (Upscaling @ 1,00), AF System: 2 , ISO: 29.0-1856.0, SS: 0.000013-0.500000

Ich kann keinen Weg finden zu sehen, ob ein bestimmtes Format für Videoaufnahmen geeignet ist.
Das Problem ist, dass mit dieser Art von Auflösung, wenn ich versuche, ein Video zu greifen, die App eine Ausnahme generiert, die besagt, dass es keine aktive oder aktivierte Verbindung gibt.

- [AVCaptureMovieFileOutput startRecordingToOutputFileURL: recordingDelegate:] - keine aktive/aktiviert Verbindungen.

ich will auch nicht für jede Art von Gerätegrenzen codieren.
Ich kann auch nicht versuchen, das Limit auf AVCaptureSessionPresetHigh zu begrenzen, weil wie in einem Apple note angegeben ist nicht das tatsächliche maximale Format.
Gibt es eine Möglichkeit zu verstehen, ob ein AVCaptureDeviceFormat für die Aufnahme von Videos geeignet ist?

Antwort

2

Nachdem alle Verbindungen mit dem ausgewählten -activeFormat eingestellt wurden, überprüfen Sie, ob der aktuelle AVCaptureConnectionisActive oder beobachten Sie mit KVO die Eigenschaft -active. Wenn dies nicht der Fall ist, ist das Format für das Video-Grabbing nicht verfügbar, wenn es ja ist, kann es verwendet werden.

+1

Vielen Dank für diese Lösung! – AlexeyVMP

+2

Upvoted. Gute Idee zum Debuggen und Testen von Dingen, aber nicht für den Produktionscode, da es mehrere Sekunden dauert, um alle Formate auf dem iPhone 5s zu durchlaufen. Die App scheint zu hängen. –

Verwandte Themen