Introducción a MoviePy

MoviePy es un módulo de Python para la edición de video, que se puede usar para operaciones básicas (como cortes, concatenaciones, inserciones de títulos), composición de video (también conocida como edición no lineal), procesamiento de video o para crear efectos avanzados. Puede leer y escribir los formatos de video más comunes, incluido GIF.
Instalación 
Para instalar la biblioteca del editor de películas, abra la terminal y escriba:
 

pip install moviepy

Nota: este módulo instala automáticamente FFmpeg. Sin embargo, es posible que solicite la instalación en algunos casos.
Incluso después de instalar MoviePy, habrá algunas funciones que no se pueden usar a menos que se instale ImageMagick, funciones como agregar texto en el video o en GIF.
La instalación de ImageMagick  
ImageMagick no es estrictamente necesaria, solo si el usuario desea escribir textos. También se puede usar como back-end para GIF, aunque el usuario puede hacer GIF con MoviePy sin ImageMagick. A continuación se muestra el enlace para descargar ImageMagick 
 

https://imagemagick.org/script/download.php

Una vez instalado, MoviePy detectará automáticamente ImageMagick, excepto en Windows. Los usuarios de Windows deben ingresar al archivo moviepy/config_defaults.py y proporcionar la ruta al binario ImageMagick llamado magick. 
 

IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\magick.exe"
or for some older versions of ImageMagick it will be
IMAGEMAGICK_BINARY = "C:\\Program Files\\ImageMagick_VERSION\\convert.exe"

Para usar videos cuando se mejora el artículo: haga clic aquí
  
. Ejemplo 1 
Cargaremos el video y cortaremos un clip de todo el video, luego el video se girará al revés, en este ejemplo, no es necesario instalar ImageMagick. .
A continuación se muestra la implementación. 
 

Python3

# Import everything needed to edit video clips
from moviepy.editor import *
 
# loading video dsa gfg intro video
clip = VideoFileClip("dsa_geek.webm")
 
# clipping of the video
# getting video for only starting 10 seconds
clip = clip.subclip(0, 10)
 
# rotating video by 180 degree
clip = clip.rotate(180)
 
# Reduce the audio volume (volume x 0.5)
clip = clip.volumex(0.5)
 
# showing clip
clip.ipython_display(width = 280)

Producción : 

Moviepy - Building video __temp__.mp4.
Moviepy - Writing video __temp__.mp4

                                                                                                                       
Moviepy - Done !
Moviepy - video ready __temp__.mp4

Ejemplo 2: 
cargaremos el video y cortaremos un clip de todo el video, luego agregaremos texto en el video, en este ejemplo tenemos que instalar ImageMagick, de lo contrario no funcionará.
A continuación se muestra la implementación. 

Python3

# Import everything needed to edit video clips
from moviepy.editor import *
 
# loading video dsa gfg intro video
clip = VideoFileClip("dsa_geek.webm")
 
# clipping of the video
# getting video for only starting 10 seconds
clip = clip.subclip(0, 10)
 
# Reduce the audio volume (volume x 0.8)
clip = clip.volumex(0.8)
 
# Generate a text clip
txt_clip = TextClip("GeeksforGeeks", fontsize = 70, color = 'white')
 
# setting position of text in the center and duration will be 10 seconds
txt_clip = txt_clip.set_pos('center').set_duration(10)
 
# Overlay the text clip on the first video clip
video = CompositeVideoClip([clip, txt_clip])
 
# showing video
video.ipython_display(width = 280)

Producción : 

Moviepy - Building video __temp__.mp4.
Moviepy - Writing video __temp__.mp4

                                                                                                                       
Moviepy - Done !
Moviepy - video ready __temp__.mp4

Exportación de archivos de vídeo:

Necesita la función write_videofile(arg1, arg2). Si no lo hace, no se reflejará en el archivo del disco duro ya que el archivo se cargó en la RAM.

Python3

import moviepy.editor as me
 
# Our focus is on how to export video file,
# you can use any code, or just refer following code
'''
vid= me.VideoFileClip('Video_1.mp4')
# Grabbing Object from storage
 
# Creating a page with 'My Title' text in red
colout with given size and background colour
white and fontsize 30
'''
SYNTAX:
obj=me.TextClip("Text That you want",
                color='{as string}',
                size=(as,tuple),
                bg_color='as string',
                fontsize=int )
 
'''
 
title=me.TextClip('My Title',color='red',size=(1920,1000),bg_color='white',fontsize=30)
 
# title.set_duration(int seconds)
title_clip_ = title.set_duration(3)
#For 3 seconds My Title willbe shown in video
 
render=me.concatenate_videoclips([title_clip_,vid])
# Combining our manually created Video i.e My Title of 3 sec with grabbed video
 
'''
 
me.write_videofile("Name you want".mp4,endcoding)
 
# If successfully executor there will be file.mp4 or at path
# If you have explicitly mentioned else in same folder as program
print("Done")

Producción:

 Fusionando archivos de video –

Podemos fusionar 2 archivos de video en un solo archivo en orden de nuestro requerimiento

Python3

import moviepy.editor
 
'''
Grabbing The video's from storage
syntax:
variable_holding_video_name= moviepy.editor.VideoFileCLip("{{Filename}}.{{extension}}")
   
'''
clip_1= moviepy.editor.VideoFileClip("Video_1.mp4")
clip_2= moviepy.editor.VideoFileClip("Video_2.mp4")
 
'''
TO join the video's i.e. concatenate the videos'
use function concatenate_videoclips(list_of_clips_to_mearged)
syntax:
variable_to_hold_mearged_video= moviepy.editor.concatenate_videclips([video_1,Video_2,. . .])
'''
Mearged_video=moviepy.editor.concatenate_videoclips([clip_1,clip_2])
 
# Saving File as output.mp4  in same folder
# libx264 is encoding lib for creating video stream(H.264)
Mearged_video.write_videofile("Output.mp4",codec='libx264')
 
print("Done")

Producción:

Para saber la duración del video:

Python3

import moviepy.editor as me
 
# Grabbing file
vid= me.VideoFileClip("Video_1.mp4")
 
print(str(vid.duration))    

Producción:

9.04 

Ventajas de MoviePy  

  1. Simple: las operaciones básicas se pueden realizar en una línea, el código es fácil de aprender y fácil de entender para los recién llegados. 
     
  2. Flexible: los usuarios tienen control total sobre los fotogramas del video y el audio, y crear sus propios efectos es tan fácil como Py. 
     
  3. Portable: el código utiliza un software muy común, como Numpy y FFMPEG. Y puede ejecutarse en casi cualquier máquina con casi cualquier versión de Python. 
     

Desventajas de MoviePy  :

  1. MoviePy aún no puede transmitir videos (leer desde una cámara web o reproducir un video en vivo en una máquina distante) 
     
  2. Realmente no está diseñado para el procesamiento de video que involucra muchos cuadros sucesivos de una película (como la estabilización de video, necesitará otro software para eso) 
     
  3. Pueden surgir problemas de memoria si el usuario usa muchas fuentes de video, audio e imagen al mismo tiempo (>100)

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *