5

Ich nehme Video mit AVCaptureSession mit der Sitzungsvoreinstellung AVCaptureSessionPreset640x480 auf. Ich benutze eine AVCaptureVideoPreviewLayer in einer Nicht-Standard-Größe (300 x 300) mit der Schwerkraft auf Aspektfüllung während der Aufnahme eingestellt. Es ist Setup wie folgt:Exportieren von AVCaptureSession-Video in einer Größe, die der Vorschauebene entspricht

self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession]; 
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
_previewLayer.frame = _previewView.bounds; // 300 x 300 
[_previewView.layer addSublayer:_previewLayer]; 

Nach der Aufnahme des Videos möchte ich es in eine Datei im Quicktime-Format schreiben. Während der Wiedergabe spiele ich das Video erneut in einer nicht standardmäßigen Größe von 300 x 300. Da diese Videos letztendlich über eine Netzwerkverbindung übertragen werden, erscheint es verschwenderisch, das volle 640x480 Video zu behalten.

Was ist der beste Weg, ein Video zu exportieren, um meine 300 x 300 Vorschauebene zu entsprechen? Ich bin ein AVFoundation-Noob, also wenn ich in die falsche Richtung gehe, lass es mich wissen. Ich möchte nur, dass das aufgezeichnete Video, das während der Aufnahme in der Vorschauebene angezeigt wird, mit dem Video übereinstimmt, das auf Festplatte exportiert wird.

+0

Ich denke, das [Antwort] [1] sollte dir helfen. [1]: http://stackoverflow.com/a/16910263/2315453 – arunit21

Antwort

10

Videoauflösung und Videogröße sind zwei verschiedene Dinge. Auflösung steht für Klarheit, höhere Auflösung für höhere Klarheit. Dagegen ist die Videogröße die Grenze, in der das Video angezeigt wird. Abhängig von der Videoauflösung und dem Seitenverhältnis des Videos wird das Video im Viewer gestreckt oder verkleinert.

Nun, da die Tatsachen erklärt worden sind, können Sie Ihre Antwort finden Sie hier:

How do I use AVFoundation to crop a video

die Schritte in dieser Reihenfolge durchführen:

  1. Nimm ein Video auf die Festplatte.
  2. Von Datenträger in Asset-Bibliothek speichern.
  3. Von der Festplatte löschen.
  4. Führen Sie die oben genannten Schritte aus.

HINWEIS: Führen Sie die Schritte nach der Aufnahme und Ihr Video Asset-Bibliothek zu schreiben, saveComposition das gespeicherte Kapital darstellen.

und geben Sie Ihre Größe in diesem Schritt: videoComposition.renderSize = CGSizeMake(320, 240); als videoComposition.renderSize = CGSizeMake(300, 300);

Und eine Beratung. Seit dem Schreiben der Datei auf die Festplatte, dann in die Bibliothek, dann wieder zurück auf die Festplatte ist eine Art langwieriger Vorgang. Versuchen Sie es alles asynchron mit einem dispatch_queue oder

Prost, viel Spaß.

+0

Hat es für Sie arbeiten ??? – croyneaus4u

+0

Ich werde dies als die beste Antwort markieren, da es hilfreich war, aber ich war immer noch nicht in der Lage, den verknüpften Zuschnittcode ordnungsgemäß zu funktionieren. – user2393462435

+0

können Sie das Video überhaupt nicht zuschneiden ?? Was ist das Problem ?? – croyneaus4u

Verwandte Themen