7
votes

Comment contrôler l'orientation de la vidéo assemblée avec avmutablecomposition

Je suis montage un tas de clips vidéo filmés sur l'iPhone en mode portrait. Pour les assembler, je prends une approche simple comme suit:

Avurlasset Pour obtenir la maintien des différentes vidéos, puis la poussant dans une bande d'avmutablecomposition, puis la mettre dans une avminecomposition que j'exporte dans le fichier AVASSETExportsession

Mon problème est que lorsque je vienne afficher la vidéo dans un UIWebView, il apparaît en mode paysage. Cependant, si je visionne l'une des vues des composants, ils apparaissent dans la vue Portrait. Est-ce que quelqu'un sait comment trier l'orientation? J'ai essayé de jouer avec l'avmutablecomposition naturellement changeant la largeur et la hauteur, mais cela vient de faire ressembler mon peuple court et gras! (tandis que de leur côté)

Merci d'avance pour toutes réflexions / suggestions

Tudor


2 commentaires

Quelqu'un peut-il même savoir comment l'orientation originale est stockée?


Il existe une propriété originaleTransform sur la piste d'actifs que vous pouvez interroger dans certaines circonstances.


3 Réponses :


12
votes

Configurez une composition vidéo qui manipulera la rotation + échelle: xxx


4 commentaires

Si vous utilisez la caméra face avant, vous voudrez également proposer une autre transformée pour refléter la vidéo, comme l'application de caméra intégrée.


Quel type de classe est 'Transformer'?


Désolé - Erreur de copie / coller. Cette ligne était inutile (supprimée maintenant)


C'est un bel exemple, y compris un cgaffinetransformCocat imbriqué. Merci.



11
votes

Voici un certain code qui ajusté la rotation à l'aide de la transformation préférée: xxx


1 commentaires

J'ai essayé d'utiliser ce code de code dans mon application où je fusionne des clips vidéo dans une seule vidéo et l'exportez-le en utilisant AvasseTexportsession . Cependant, je reçois une erreur lorsque j'ai défini la propriété videocomposition du avaissetexportsession à ma instance de AvmutableVideocomposition . Savez-vous comment utiliser votre code lorsque vous exportez le film? J'ai créé une question ici et si vous avez le temps, allez-vous s'il vous plaît jeter un oeil à ce sujet? Stackoverflow.com/ Questions / 16385017 / ...



17
votes

Si tout ce que vous voulez, vous conservez une orientation vidéo, vous souhaiterez peut-être affecter AVMutablecomPostionTrakT Valeur de PrefferedTransition de AvaisetTrack comme ceci:

AVAssetTrack *videoAssetTrack= [[videoAsset tracksWithMediaType:AVMediaTypeVideo] lastObject];

AVMutableCompositionTrack *videoCompositionTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[videoCompositionTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration) ofTrack:videoAssetTrack atTime:kCMTimeZero error:&error];

videoCompositionTrack.preferredTransform = videoAssetTrack.preferredTransform;


5 commentaires

C'est un moyen le plus pratique. Merci!


Cela ne semble pas que cela fonctionnerait si la composition contient des pistes avec différentes orientations ...


Parce que c'est seulement LastObject qui est pris en compte. C'est la simplification du problème, pas une solution pour tous les cas.


Cela peut-il être combiné avec un compositeur vidéo personnalisé?


C'est facile, fonctionne et ce que je cherchais! FIXE EASY 2 MINS. :RÉ