Création d'une Miniature de la Vidéo pour iOS
J'ai une application que je développe pour l'iPhone. Ce qu'il fait est, il capture la vidéo de la caméra et enregistre le fichier vidéo sur le Système de Fichiers.
J'ai besoin de créer une Image Miniature de la vidéo, avant de m'enregistrer l'Image dans le Système de Fichiers. Ma motivation est de montrer une liste de vignettes à la création de la vidéo, de sorte que l'utilisateur peut sélectionner une vignette pour lire le fichier souhaité.
Quelqu'un pourrait-il svp m'indiquer comment créer une Miniature de l'image d'un fichier vidéo a été capturée par la Caméra.
Aussi, pouvez-vous me conseiller si je peux créer une Miniature d'une vidéo existante fichier à l'aide du SDK iOS.
- double possible de Comment prendre une capture d'écran par programmation
- J'étais en fait en se référant à la production d'une vignette d'un fichier vidéo sur IOS et ne pas prendre une capture d'écran par programmation. Pour prendre une capture d'écran, on aurait du lire le fichier, mais dans mon cas, la lecture du fichier n'est pas nécessaire.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci (il ne fait pas montrer le film player):
C'est censé être un appel synchrone, de sorte qu'il pourrait bloquer le thread principal de certains, mais semble être en cours d'exécution assez instantanément pour moi quand je l'utilise une fois, au début du film. Si vous êtes en train de faire beaucoup cela, vous pouvez l'ajouter en tant que catégorie sur UIImage, qui est ce que j'ai fait.
Je vois de votre question que vous voulez faire avant de le film est sauvé, et je suppose que cela ne peut pas fonctionner sans une url de fichier. Toutefois, si vous utilisez le UIImagePickerController pour la capture de l'appareil photo, vous pouvez passer à cette fonction, l'URL est retourné dans l'info dictionnaire de imagePickerController:didFinishPickingMediaWithInfo: avec la clé UIImagePickerControllerMediaURL.
Une meilleure solution est effectivement d'utiliser le AVFoundation cadre pour ce faire. Il contourne la nécessité de construire un MPMoviePlayerController qui provoque le problème que l'Iris de la caméra reste fermée si elle est utilisée en conjonction avec le UIImagePickerController (du moins c'est ce que j'ai vécu).
Le code que j'utilise:
AVPlayerItem
pour que; il suffit de récupérer la durée deAVAsset
directement.Très simple essayez ceci...
Étape 1: Import-tête
#import <MediaPlayer/MediaPlayer.h>
Étape 2: Obtenir l'adresse de l'url
Étape 3: Enfin obtenir des vignettes
Essayez ceci :
À ajouter pour obtenir de bons châssis.
Code pour une solution qui utilise
AVFoundation
cadre et Swift 3.0 (code commenté n'est pas nécessaire et il est discuté ci-dessous le code que vous avez à décider si vous devez ou non):Noter que vous pouvez envisager d'exécuter ce code sur le thread d'arrière-plan comme la création de la miniature peut être potentiellement une coûteuse opération.
Aussi, veuillez jeter un oeil à quelques-unes des propriétés de
AVAssetImageGenerator
classe:requestedTimeToleranceBefore
(La documentation d'Apple):requestedTimeToleranceAfter
(La documentation d'Apple):maximumSize
(La documentation d'Apple):