2017-07-16 4 views
6

Est-il possible de capturer une vidéo en mode paysage alors que l'appareil est en mode portrait?iOS - Capturez une vidéo en mode paysage alors que l'appareil est en mode portrait

quelque chose comme ceci:
enter image description here

fait ce que je dois est de capturer en mode portrait, mais avec une largeur> hauteur, je ne veux pas l'utilisateur de tourner le dispositif, mais je ne veux capturer une image plus large comme en mode paysage. Le simple fait de changer le cadre de la couche de prévisualisation pour qu'elle soit large (largeur> hauteur) ne sera évidemment pas suffisant.

J'ai essayé de changer l'orientation vidéo de la couche de prévisualisation, mais cela fera tourner l'image, et ce n'est pas ce que je veux.

previewLayer.connection.videoOrientation = .landscapeRight 

cela a-t-il un sens?

Répondre

0

Vous pouvez, vous devez utiliser AVAssetWriter et définir les dimensions de la vidéo de sortie. Toutefois, n'oubliez pas que vous allez réduire la qualité. Si l'orientation de la caméra est portrait, alors vous recevez une vidéo qui est (par souci d'intérêt) 720H ​​x 360W.

Donc, vous voulez faire ce paysage, si vous conservez le rapport d'aspect, vous allez vous retrouver avec une vidéo (en recadrant l'entrée) qui est 180H x 360W. Rappelez-vous, il y a une différence entre ce que voit la caméra, ce que vous envoyez à la couche d'aperçu et ce que vous enregistrez dans un fichier - ils peuvent tous être indépendants les uns des autres (vous avez parlé de changer le cadre cela n'a rien à voir avec la vidéo que vous écrivez).

0

Avez-vous essayé avec le réglage de la gravité & limites de previewLayer?

var bounds:CGRect = self.view.layer.bounds 
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill 
previewLayer?.bounds = bounds 
previewLayer?.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)) 
2

Non, ce n'est pas possible car vous devez faire tourner physiquement la caméra.

Vous pouvez RECADRER la sortie vidéo selon le rapport d'aspect souhaité.

Cela fera cependant de votre résolution verticale au maximum ce que votre résolution horizontale est actuellement. En plus de diminuer votre champ de vision.

Si vous voulez toujours recadrer la vidéo pour simuler ce « petit mode paysage » en temps réel, je vous suggère d'utiliser le « GPUImageCropFilter » de la bibliothèque GPUImage