iPhone Watermark sur vidéo enregistrée.
Dans mon Application, j'ai besoin de capturer une vidéo et de Mettre un filigrane sur la vidéo. Le filigrane doit être du Texte(le Temps et les Notes). J'ai vu un code à l'aide de "QTKit" Cadre de travail. Cependant, j'ai lu que le cadre n'est pas disponible pour l'iPhone.
Merci d'Avance.
source d'informationauteur Dilip Rajkumar | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Utilisation
AVFoundation
. Je suggère de l'accaparement des images avecAVCaptureVideoDataOutput
puis la superposition de l'image capturée avec le filigrane de l'image, et enfin l'écriture capturées et traitées images dans un fichier utilisateurAVAssetWriter
.De recherche autour de débordement de pile, il y a une tonne de superbes exemples détaillant la façon de faire chacune de ces choses que j'ai mentionnées. Je n'ai pas vu de qui donnent des exemples de code pour exactement l'effet que vous souhaitez, mais vous devriez être capable de mélanger et match assez facilement.
EDIT:
Prendre un coup d'oeil à ces liens:
iPhone: AVCaptureSession sortie de capture de s'écraser (AVCaptureVideoDataOutput) - ce poste pourrait être utile juste par nature, contenant le code pertinent.
AVCaptureDataOutput
sera de retour images commeCMSampleBufferRef
s.Convertir
CGImageRef
s à l'aide de ce code:À partir de là vous convertir à une UIImage,
Ensuite utiliser
pour dessiner le cadre d'un contexte, de dessiner un PNG de le filigrane sur elle, puis ajouter les images traitées pour votre vidéo de sortie à l'aide de
AVAssetWriter
. Je vous suggère d'ajouter en temps réel de sorte que vous n'êtes pas le remplissage de la mémoire avec des tonnes de UIImages.Comment puis-je exporter UIImage tableau comme un film? - ce post montre comment ajouter la UIImages vous avez traité à une vidéo pour une durée donnée.
Cela devrait vous obtenez bien sur votre façon de filigraner votre vidéo. N'oubliez pas de pratiquer une bonne gestion de la mémoire, parce que la fuite des images qui sont à venir dans 20-30fps est un excellent moyen de faire planter l'application.
Ajouter un filigrane est beaucoup plus simple. Vous avez juste besoin d'utiliser un CALayer et AVVideoCompositionCoreAnimationTool. Le code peut être simplement copié et assemblés dans le même ordre. J'ai juste essayé d'insérer des commentaires dans entre pour une meilleure compréhension.
Supposons que vous avez enregistré la vidéo, de sorte que nous allons créer la AVURLAsset première:
Avec juste ce code, vous serait en mesure d'exporter la vidéo, mais nous voulons ajouter la couche avec le filigrane d'abord. Veuillez noter que certains de code peut sembler redondant, mais il est nécessaire pour que tout fonctionne.
Nous avons d'abord créer le calque avec l'image de filigrane:
Si nous ne voulons pas d'une image et que vous voulez le texte à la place:
Le code suivant trie la couche dans le bon ordre:
Nous créons aujourd'hui à la composition et à ajouter les instructions pour insérer le calque:
Et maintenant nous sommes prêts à l'exportation: