Commande |
---|
|
|
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:
|
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. |
Decorator : https://pypi.python.org/pypi/decorator |
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.
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).
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. |
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')
|
|
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')
|
|
Méthode | Effet |
---|---|
La dispersionAFFICHAGE DE LETTRES se disperse. |
La dispersionLa réunion AFFICHAGE DE LETTRES se réuni. html5 video by EasyHtml5Video.com v3.9.1 |
La cascadeAFFICHAGE DE LETTRES tombe du haut. html5 video by EasyHtml5Video.com v3.9.1 |
La translationAFFICHAGE DE LETTRES se réuni en partant d’un côté. html5 video by EasyHtml5Video.com v3.9.1 |