iOS AVFoundation: Einstellen der Ausrichtung des Videos
Ich habe gekämpft, mit mehreren Dimensionen, um das problem der Steuerung von video-Orientierung während und nach der Aufnahme auf einem iOS-Gerät. Vielen Dank für die vorherigen Antworten und die Dokumentation von Apple habe ich in der Lage, um es herauszufinden. Aber jetzt, ich möchten, schieben einige video zu einer web-site, ich bin mit bestimmten Problemen. Ich umrissen habe dieses problem insbesondere in dieser Frage, und die vorgeschlagene Lösung entpuppt erfordern Orientierung-Optionen gesetzt werden, die während der video-Codierung.
Das kann sein, aber ich habe keine Ahnung, wie das gehen über das tun dies. Die Dokumentation rund um die Einstellung Ausrichtung in Bezug auf die Einstellung korrekt für die Anzeige auf dem Gerät, und ich habe umgesetzt, die Beratung gefunden hier. Jedoch ist dieser Rat nicht zu-Adresse-Einstellung der Ausrichtung richtig für nicht-Apple-software wie VLC oder Chrome-browser.
Kann mir jemand einen Einblick geben, wie legen Sie die Ausrichtung korrekt auf das Gerät, so dass es korrekt angezeigt, alle anzeigen software?
- Die eigentlichen Daten immer statische Orientierung während der Aufnahme. Die Ausrichtung gespeichert ist, in der
preferredTransform
Wert. Also, ich denke, Sie brauchen, um Videos zu exportieren, drehen Sie das Daten. Ich würde inAVAssetExportSession
AVMutableVideoComposition
setTransform:atTime:
, das könnte helfen. - Ich habe eine technische support-Anfrage in Apple zu helfen, dies herauszufinden. Aber ich werde schauen, wie Sie vorschlagen. Würde es bedeuten, ein separates Kodieren Schritt, nachdem das video aufgezeichnet wird, Frage ich mich? Das könnte sehr teuer...
- Ja, das wäre ein extra-Schritt. Es kann jedoch nicht teuer sein, wenn export ohne änderung der ursprünglichen Kodierung. Lassen Sie mich wissen, wenn Sie finden, eine bessere Lösung.
- Ich habe erfolgreich umgesetzt, dein Vorschlag — ich habe eine AVAssetExportSessionn mit der AVMutableVideoComposition und Einstellung einer Transformation. Es war eine ziemlich haarige Zeit, aber ich arbeite daran haben, an diesem Wochenende. Danke für den Tipp!
- Super!!! Ich bin glücklich, es für Sie gearbeitet.
- Hi Jungs. Nicht der Optionen lösen das für mich (heute ist das problem ist mit FireFox und IE, chrome ist gut). Jeder führt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schließlich basiert auf den Antworten von @Aaron Vegh und @Prinz, ich fand heraus, meine Auflösung:
//Konvertierung von video -
//aktuelle Orientierung
//get video
}
In der Apple-Dokumentation hier heißt es:
Also die gepostete Lösung von Aaron Vegh, verwendet einen AVAssetExportSession funktioniert, aber ist nicht erforderlich. Wie der Apple doc ' s sagen, wenn Sie möchten, haben Sie die Ausrichtung richtig festgelegt, so dass es spielt in der nicht-apple-quicktime-Player wie VLC oder auf die web Chrome verwenden, müssen Sie die video-Ausrichtung auf die AVCaptureConnection für die AVCaptureVideoDataOutput. Wenn Sie versuchen, um es für die AVAssetWriterInput erhalten Sie eine falsche Orientierung für Player wie VLC und Chrome.
Hier ist mein code wo ich es einstellen während der Einstellung der Aufnahme-Sitzung:
}
Im Fall, jemand ist auf der Suche nach dieser Antwort, dies ist die Methode, die ich gekocht (ein bisschen modifiziert zu vereinfachen):
Dieses Zeug ist schlecht dokumentiert, leider aber von Besaitung Beispiele zusammen, die aus anderen Fragen und Lesen der header-Dateien, ich war in der Lage, diese zu arbeiten. Hoffe, dies hilft jemand anderes!
Verwenden Sie diese unten
method
zu setzencorrect
orientation
nachvideo
asset
orientation
imAVMutableVideoComposition
Seit iOS 5 können Sie verlangen, gedreht CVPixelBuffers mit AVCaptureVideoDataOutput dokumentiert hier. Dies gibt Ihnen die richtige Orientierung, ohne zu verarbeiten, das video erneut mit AVAssetExportSession.