Moviepy

Téléchargement et Installation

\(Méthode avec pip :\) Si vous avez pip installé, il suffit de taper dans un terminal (il installera ez_setup si vous ne l’avez déjà)

pip install moviepy

Si vous n’avez pas installé :\(setuptools\) ni :\(ez_setup\) la commande ci-dessus échoue, il faut installer

pip install ez_setup
pip install –user numpy scipy matplotlib ipython jupyter pandas sympy nose

\(Télécharger:math:\) \(les:math:\) \(sources:math:\) \(:\) soit sur PyPI ou (si vous voulez la version de développement) sur Github, décompressez tout dans un seul dossier, ouvrez un terminal et tapez

python setup.py install

Note

Module Moviepy \(MoviePy\) dépend des modules \(Python :math:\), qui s’installera automatiquement lors de l’installation de \(MoviePy\). Il devrait fonctionner sur \(Windows/Mac/Linux\), avec \(Pytho\) \(2.7\) \(+\) et \(3\) . \(MoviePy\) dépend du logiciel \(FFMPEG\) pour la lecture vidéo et l’écriture. Vous n’avez pas besoin de s’inquiéter à ce sujet, comme \(FFMPEG\) devrait être automatiquement téléchargé/installé par \(ImageIO\) lors de votre première utilisation de \(MoviePy\) (cela prend quelques secondes). Si vous souhaitez utiliser une version spécifique de \(FFMPEG\), vous pouvez définir la \(FFMPEG\) _ \(BINARY\) environnement variable voir \(moviepy/config\) _ \(defaults.py\) pour plus de détails.

Note

\(ImageMagick\)

ImageMagick n’est pas strictement nécessaire, seulement si vous voulez écrire des textes. Il peut également être utilisé comme backend pour GIFs mais vous pouvez faire des GIFs avec MoviePy sans ImageMagick. Une fois que vous l’avez installé, ImageMagick sera automatiquement détecté par MoviePy, sauf sur Windows !. Utilisateur de Windows, avant d’installer le MoviePy à la main, aller dans le fichier moviepy/config_defaults.py et de fournir le chemin vers le binaire d’ImageMagick appelé convert . Il devrait ressembler à ceci

IMAGEMAGICK_BINARY = 'C:\Program Files\ImageMagick_VERSION\convert.exe'

Commande

Vous pouvez également définir la IMAGEMAGICK_BINARY environnement variable voir moviepy/config_defaults.py pour plus de détails. PyGame est nécessaire pour les prévisualisations audio et vidéo (inutile si vous avez l’intention de travailler avec MoviePy sur un serveur mais vraiment indispensable pour le montage vidéo avancé ).

Installation de scipy sur windows:

Pour un traitement d’une image avancé vous aurez besoin une ou plusieurs de ces paquets. Par exemple à l’aide de la méthode clip.resize exige qu’au moins un des Scipy, PIL, Pillow ou OpenCV sont installés.

Le Python Imaging Library (PIL) ou Pillow. Scipy (pour le suivi, segmentation, etc.) et peut être utilisé pour redimensionner des clips vidéo si PIL et OpenCV ne sont pas installés sur votre ordinateur. Scikit_Image peuvent être nécessaires pour une manipulation d’image avancée. OpenCV 2.4.6_ ou plus récent (fournit le package cv2) ou plus récentes peuvent être nécessaires pour une manipulation d’image avancée.

Liens de téléchargements

Numpy+MKL : http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy-cluster est lié à l’Intel® Math Kernel Library et inclut les dll requises dans le répertoire numpy.core.

Numpy : https://www.scipy.org/install.html

Decorator : https://pypi.python.org/pypi/decorator

tqdm : https://pypi.python.org/pypi/tqdm

ffmpeg : https://www.ffmpeg.org/download.html

imageMagick : https://www.imagemagick.org/script/index.php

Pygame : https://www.pygame.org/download.shtml

imageio : https://imageio.github.io/

Pillow : https://pillow.readthedocs.org/en/latest/

Scipy : https://www.scipy.org/

Scikit Image : http://scikit-image.org/download.html

Github: https://github.com/Zulko/moviepy

PyPI : https://pypi.python.org/pypi/moviepy

OpenCV 2.4.6 : https://sourceforge.net/projects/opencvlibrary/files/

Note

Si vous êtes sous linux, ces logiciels seront sûrement dans votre système.

Propriétés de MoviePy

Utilisation du module Moviepy

Note

Vous pouvez éditer des vidéos en Python : Vous pouvez traiter beaucoup de vidéos et les modifier de façon compliquée. Vous pouvez automatiser la création de vidéos ou de GIFs sur un serveur web (Django, Flask, etc..). Vous pouvez automatiser, l’insertions de titres de sous-titres, etc… Vous pouvez coder vos propres effets vidéo de façon originale. Vous voulez créer des animations à partir des images python générées par une autre bibliothèque(Matplotlib, Mayavi, Gizeh, scikit-images…)

Note

Analyse image par image.

L’analyse vidéo image par image (avec détection de visage ou autres trucs de fantaisie). Cela peut se faire avec MoviePy en liaison avec d’autres bibliothèques, imageio, OpenCV_ ou SimpleCV. Vous voulez convertir un fichier vidéo, ou transformateur une série de fichiers image dans un film. Dans ce cas, il est préférable appeler directement ffmpeg (ou avconv ou mencoder).

Avantages et limites

Un simple intuitif : Opérations de base peuvent être faites en une seule ligne. Le code est facile à apprendre et facile à comprendre versez les nouveaux arrivants. Flexible : Vous avez un contrôle total sur les trames de la vidéo et audio, et créer vos propres effets est facile. Portable : Le code utilise un logiciel très commun (Numpy et FFMPEG) et peut fonctionner sur (presque) n’importe quelle machine avec (presque) n’importe quelle version de Python.

Commande

Effet

from moviepy.editor import *

Importation pour éditer des clips vidéo.

clip = VideoFileClip("video.mp4")

Chargeur de la video.mp4.

clip = VideoFileClip("video.mp4").subclip(50,60)

Puis de la vidéo de 50 minutes à 60 minutes.

clip = clip.volumex(0.5)

Réduire le volume sonore (volume multiplié par 0,5).

txt_clip = TextClip ("Ma vidéo") )

Générer un élément de texte.

fontsize = 8, color = "red" , font="verdana-Bold"

Personaliser le texte. fontsize : taille de la police.

txt_clip = txt_clip.set_pos('center').set_duration(15)

Apparition du texte pendant 15 secondes au centre de l’écran.

video = CompositeVideoClip([clip, txt_clip])

Intégrer l’élément de texte sur le premier clip vidéo.

video.write_videofile("Mavideo.mpeg)

Sauvegarder dans un fichier.

Fonctionnement de MoviePy

Note

MoviePy utilise le logiciel ffmpeg pour lire et exporter des fichiers audio et vidéo. Il est possible utiliser ImageMagick pour générer des textes et écrire des fichiers GIF. Le traitement des différents médias est assuré par la bibliothèque numérique rapide de Numpy Python. Des améliorations et des effets avancés utilisent une partie de Python nombreuses bibliothèques de traitement image (PIL , Scikit-image , scipy , etc…).

Note

Les objets principaux de MoviePy sont clips, qui peut être AudioClip ou Videoclips. Ils peuvent être modifiés (coupé, ralenti, assombrie…) ou mélangés et suvegardés dans un fichier (comme un MP4, un GIF, un MP3, etc..). VideoClips peut être crée à partir d’un fichier vidéo, d’une image, d’un texte ou d’une animation personnalisée. Ils peuvent avoir une piste audio (qui est un AudioClip) et masque des Nations Unies (ONU spécial clip indiquant quelles parties du clip se cacher lorsque le clip est mélangé avec d’autres clips). Un élément peut être modifié en utilisant l’un des effets comme dans \(clip.resize(width="360")\), \(clip.subclip(t1,t2)\) ou \(clip.fx(vfx.black_white)\) . \(MoviePy\) utilise plusieurs fonctions (telles que “” clip.fl”“, “” clip.fx”“, etc.).

Fabrique un fichier gif

Méthode Effet
import numpy as np from moviepy.editor import * from moviepy.video.tools.segmenting import findObjects # Création du texte et position centrée. screensize = (600,460) txtClip = TextClip("Education\ndu\nNumérique",color='red', font="verdana-Bold", kerning = 5, fontsize=80) cvc = CompositeVideoClip( [txtClip.set_pos('center')], size=screensize) # Fonctions pour déplacer les lettres # Fonction d'aide rotMatrix = lambda a: np.array( [[np.cos(a),np.sin(a)], [-np.sin(a),np.cos(a)]] ) def reunir(screenpos,i,nletters): d = lambda t : 1.0/(0.3+t**8) #déplacement assoupli a = i*np.pi/ nletters # angle du mouvement v = rotMatrix(a).dot([-1,0]) if i%2 : v[1] = -v[1] return lambda t: screenpos+400*d(t)*rotMatrix(0.5*d(t)*a).dot(v) # utilisation du plugin findObjects pour localiser #et séparer les lettres letters = findObjects(cvc) # une liste ImageClips # Animation des lettres def moveLetters(letters, funcpos): return [ letter.set_pos(funcpos(letter.screenpos,i,len(letters))) for i,letter in enumerate(letters)] clips = [ CompositeVideoClip( moveLetters(letters,funcpos), size = screensize).subclip(0,5) for funcpos in [reunir] ] #concaténation et sauvegarde de la vidéo final_clip = concatenate_videoclips(clips) final_clip.write_videofile('enl.mp4',fps=25,codec='mpeg4')
_images/python1001.PNG
_images/enl.gif

Lettres en mouvement

Méthode Effet
#4604_concatenation_lettres.py import numpy as np from moviepy.editor import * from moviepy.video.tools.segmenting import findObjects # Création du texte et position centrée. screensize = (800,500) le_texte = TextClip("Affichage\nde lettres",color='gold', font="verdana-Bold", kerning = 5,transparent=True, fontsize=80) cvc = CompositeVideoClip( [le_texte.set_pos('center')], size=screensize) # Fonctions pour déplacer les lettres rotMatrix = lambda a: np.array( [[np.cos(a),np.sin(a)], [-np.sin(a),np.cos(a)]] ) def reunion(screenpos,i,nletters): d = lambda t : 1.0/(0.3+t**8) a = i*np.pi/ nletters v = rotMatrix(a).dot([-1,0]) if i%2 : v[1] = -v[1] return lambda t: screenpos+400*d(t)*rotMatrix(0.5*d(t)*a).dot(v) def cascade(screenpos,i,nletters): v = np.array([0,-1]) d = lambda t : 1 if t<0 else abs(np.sinc(t)/(1+t**4)) return lambda t: screenpos+v*400*d(t-0.15*i) def translation(screenpos,i,nletters): v = np.array([-1,0]) d = lambda t : max(0, 3-3*t) return lambda t: screenpos-400*v*d(t-0.2*i) def dispersion(screenpos,i,nletters): d = lambda t : max(0,t) a = i*np.pi/ nletters v = rotMatrix(a).dot([-1,0]) if i%2 : v[1] = -v[1] return lambda t: screenpos+400*d(t-0.1*i)*rotMatrix(-0.2*d(t)*a).dot(v) lettres = findObjects(cvc) # une liste def moveLetters(lettres, funcpos):# Animation des lettres return [ letter.set_pos(funcpos(letter.screenpos,i,len(lettres))) for i,letter in enumerate(lettres)] liste_video = [ CompositeVideoClip( moveLetters(lettres,funcpos), size = screensize).subclip(0,4).on_color(screensize,(1,1,1),col_opacity=1) for funcpos in [dispersion,translation,cascade,reunion] ] #concaténation et sauvegarde de la vidéo film=concatenate_videoclips(liste_video) film.write_videofile('concatenation.mp4',fps=15,codec='mpeg4')
  • Dispersion : la phrase ou le mot se disperse sur l’écran.
  • Réunion : la phrase ou le mot se reconstitue sur l’écran, avec les lettres qui proviennent de tous les côtés.
  • Cascade : la phrase ou le mot se reconstitue sur l’écran en tombant du haut de l’écran.
  • Translation : la phrase ou le mot se reconstitue sur l’écran en venat d’un côté ( c’est une translation en mathématiques ).
Méthode Effet

La dispersion

AFFICHAGE DE LETTRES se disperse.

eh5v.files/dispersion.gif

La dispersion

La réunion

AFFICHAGE DE LETTRES se réuni.

html5 video by EasyHtml5Video.com v3.9.1

La cascade

AFFICHAGE DE LETTRES tombe du haut.

html5 video by EasyHtml5Video.com v3.9.1

La translation

AFFICHAGE DE LETTRES se réuni en partant d’un côté.

html5 video by EasyHtml5Video.com v3.9.1
educationdunumerique.fr. Tous  droits réservés. D Pérarnaud Limoges.