4 votes

La vidéo capturée pour l'exportation n'est lue qu'en mode paysage et subit une rotation.

Avant de poster beaucoup de code, voici le scénario :

  1. En utilisant un code basé sur AVEditDemo de la WWDC, je capture un film en utilisant le contrôle standard en portrait.
  2. Je post-traite la vidéo en utilisant un code identique à celui d'AVEditDemo qui utilise Core Animation.

Lorsque je lis la vidéo résultante à l'aide de l'application Appareil photo, elle est tournée de 90 degrés et n'est plus en "portrait" (elle est maintenant en paysage) et écrasée. (Le rapport d'aspect semble avoir été interverti, largeur -> hauteur et hauteur -> largeur.

J'ai passé de nombreuses heures sur ce sujet et je suis perdu.

Le résultat souhaité est un film identique à l'original capturé. (Avec éventuellement une superposition animée).

Pour voir cela en action, il suffit de télécharger et d'exécuter l'AVEditDemo d'Apple, d'activer le titre "ON" et d'exporter le film.

0voto

Alex Seewald Points 1

Je pense que la réponse courte est la suivante :

Lorsque vous traitez la vidéo originale, vous voulez récupérer la "preferredTransform" :

AVAssetTrack *sourceVideo = [[sourceAsset tracksWithMediaType:AVMediaTypeVideo]lastObject];
CGAffineTransform *preferredTransform = [sourceVideo preferredTransform];

et ensuite, lorsque vous écrirez la vidéo finale, vous ferez quelque chose de similaire à ceci :

AVMutableComposition *composition = [AVMutableComposition composition];

AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo 
     preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio 
     preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionVideoTrack setPreferredTransform:preferredTransform];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X