6
votes

IOS: Vidéo enregistrée / recadrage

Quel serait le meilleur moyen de redimensionner une vidéo enregistrée par l'utilisateur sur l'iPhone?

J'ai actuellement la possibilité d'obtenir des données vidéo de deux manières:

1) Obtenez l'URL du fichier à partir de UIIMAGEPICKERCONTROLLER Une fois la vidéo enregistrée

2) Obtenez les cadres de la vidéo comme étant envoyé par un AvcapturesSession

pour 1) J'aurais besoin de quelque chose qui peut lire des fichiers .MOV H.264 et cracher des cadres individuels. Y a-t-il une telle chose?

pour 2) J'ai pensé à obtenir un uiimage pour chaque image, redimensionnant l'image, puis à recompiler une vidéo avec quelque chose comme avaisetwriter . Mais cela semble être une opération très intensive et je me demande s'il y a un meilleur moyen d'aborder ce problème.

est l'idée générale de redimensionner des vidéos pour redimensionner chaque image individuelle puis recompiler une vidéo? Ou existe-t-il un moyen de redimensionner directement une vidéo entière?

J'ai juste besoin de l'utilisateur pour enregistrer une vidéo, puis redimensionner cette vidéo sur 320x320, aucune modification de fantaisie.

Merci pour toute aide que vous pouvez fournir.

edit: peut-être 'redimensionner' est le mauvais mot. J'ai vraiment besoin de culture la vidéo de sorte qu'il passe de 480x360 à 320x320. De plus, cette culture n'a pas besoin de se produire en temps réel, je peux le faire une fois la vidéo enregistrée.


0 commentaires

4 Réponses :


3
votes

alternative 2 ne va pas fonctionner en temps réel.

Pour alternative 1, utilisez avaisetexportsession initialisé avec l'un des préréglages souhaités - par exemple avastetexportpreset640x480 .

Expériment avec AvasseetExportResetLowQualité , AvasseetExportResetMediumQuality , AvasseTexPResethestQualité Pour des résolutions supplémentaires.

Notez que les fichiers vidéo ont généralement des rapports de format 16: 9 (ou 4: 3), donc 320x320 n'est pas une option valide. Il n'y a pas de bonnes raisons pour redimensionner à autre que les résolutions prises en charge, à moins que vous ne prévoyez de distribuer à d'autres téléphones, auquel cas le transcodage côté serveur est disponible.


2 commentaires

Je suis capable de recevoir une vidéo enregistrée directement dans l'un de ces préréglages déjà. Ce que je cherche, c'est un moyen de recadrer la vidéo à une taille personnalisée qui ne fait pas partie de ces préréglages. N'est-il pas possible de recadrer une vidéo à une dimension personnalisée comme si vous seriez des images?


Désolé, j'ai raté la partie "culture". Je pense que les formats vidéo ne sont pas aussi flexibles que les images, c'est-à-dire que les mobiles ne soutiennent que certaines résolutions. Le recadrage est en général laid et je ne le recommande pas, utilisez plutôt un remplissage si vous devez modifier le rapport de format.



5
votes

Si quiconque fonctionne à travers cela, j'ai trouvé que vous pouvez le faire avec l'avexte si vous nous avez une avicultureVideComposition ainsi qu'une avmutablecomposition. Vous avez ensuite défini sur la composition vidéo et cela affectera la taille de sortie de la vidéo. Vous utilisez ensuite AVMUTABLEVIDECOMPOSITIONNELAISTRUNTER pour positionner la vidéo où vous le souhaitez. Il y a un bon article ici sur la mise en route avec toutes ces classes et son exemple de projet a commenté le code à la fin de l'exportation.


0 commentaires

4
votes

Le moyen idéal est d'utiliser avassetreader pour lire le fichier vidéo et utiliser avaisetwriter pour écrire ce fichier vidéo à nouveau à un nouveau fichier vidéo. Vous pouvez définir une sortie de sortie pour l'entrée autrui: xxx

Vous recherchez la documentation du développeur Apple pour rechercher une ligne de gestion de la ligne de référence sur Avastrereader


0 commentaires

1
votes

Vous devez prendre en compte une orientation vidéo. Voici une solution Swift 2. Il cultive à la fois la vidéo xxx

Voici comment obtenir la transformation xxx

et comment l'utiliser dans l'instruction de calque < / p> xxx

référence


0 commentaires