Frage

Mein Ziel ist es, einen benutzerdefinierten Kameraansichts-Controller zu schreiben, der:

  1. Kann Fotos in allen vier Schnittstellenausrichtungen sowohl mit der hinteren als auch, falls verfügbar, der vorderen Kamera aufnehmen.
  2. Dreht und skaliert das "Video" der Vorschau sowie das Foto in voller Auflösung ordnungsgemäß.
  3. Ermöglicht das Anwenden eines (einfachen) Effekts sowohl auf das "Video" der Vorschau als auch auf das Foto in voller Auflösung.

    Meine bisherigen Bemühungen sind in dieser Frage dokumentiert. Mein letzter Versuch war, Apples Beispiel-GLVideoFrame (von WWDC 2010) zu ändern. Ich konnte das iPhone 4 jedoch nicht dazu bringen, das Vorschau- "Video" richtig anzuzeigen, wenn die Sitzungsvoreinstellung AVCaptureSessionPresetPhoto ist.

    Hat jemand dies versucht oder weiß, warum das Beispiel mit dieser Voreinstellung nicht funktioniert?

    Apples Beispiel verwendet eine Voreinstellung mit Videodimensionen von 640 x 480 und einer Standardtexturgröße von 1280 x 720. Die iPhone 4-Rückkamera liefert nur 852 x 640, wenn die Voreinstellung AVCaptureSessionPresetPhoto ist.

    Video- / Fotodimensionen der iOS-Gerätekamera, wenn die Voreinstellung AVCaptureSessionPresetPhoto ist:

    • iPhone 4 zurück: Video ist 852x640 und Fotos sind 2592x1936
    • iPhone 4 Vorderseite: Videos und Fotos sind 640 x 480
    • iPod Touch 4G zurück: Videos und Fotos sind 960 x 720
    • Vorderseite des iPod Touch 4G: Videos und Fotos sind 640 x 480
    • iPhone 3GS: Video ist 512 x 384 und Fotos sind 2048 x 1536

      Update

      Ich habe das gleiche verstümmelte Video erhalten, als ich Brad Larsons ColorTracking-Beispiel gewechselt habe (<) a href="http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios" rel="nofollow noreferrer"> Blogpost ) zu verwenden das AVCaptureSessionPresetPhoto.

War es hilfreich?

Lösung

Das Problem ist, dass AVCaptureSessionPresetPhoto jetzt kontextsensitiv ist und in verschiedenen Auflösungen ausgeführt wird, je nachdem, ob Sie Video- oder Standbildaufnahmen anzeigen.

Die Live-Vorschau unterscheidet sich in diesem Modus, da die Zeilen mit zusätzlichen Bytes aufgefüllt werden.Ich vermute, dies ist eine Art Hardwareoptimierung.

Auf jeden Fall können Sie hier sehen, wie ich das Problem gelöst habe:

iOS CVImageBuffer verzerrt von AVCaptureSessionDataOutput mit AVCaptureSessionDataOutput

Andere Tipps

Das AVCaptureSessionPresetPhoto dient zum Aufnehmen von Bildern und nicht zum Aufnehmen von Live-Feeds. Sie können hier darüber lesen: http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html

(Ich glaube, dass dies tatsächlich zwei verschiedene Kameras oder Sensoren sind, da sie sich sehr unterschiedlich verhalten und es nur ein paar Sekunden Verzögerung gibt, nur um zwischen dem Foto und beispielsweise 640 x 480 zu wechseln.)

Sie können nicht einmal beide Voreinstellungen gleichzeitig verwenden, und das Wechseln zwischen ihnen bereitet ebenfalls Kopfschmerzen - So erhalten Sie sowohl die Videoausgabe als auch das Bild mit voller Fotoauflösung in AVFoundation Framework

HTH, obwohl nicht das, was Sie hören wollten ...

Oded.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top