CodeGym /Cursos /Python SELF ES /Introducción al procesamiento de video con MoviePy

Introducción al procesamiento de video con MoviePy

Python SELF ES
Nivel 47 , Lección 0
Disponible

1. ¿Qué es MoviePy y por qué es genial?

¡Hola, futuros programadores! Hoy vamos a sumergirnos en el emocionante mundo del procesamiento de video con MoviePy, una herramienta que te permitirá crear magia en video a partir de clips comunes. Si alguna vez pensaste que editar video era cosa de profesionales con herramientas costosas, hoy te voy a demostrar que eso no es cierto. ¡Vamos allá!

MoviePy es una librería de Python para procesar videos. Te permite leer, escribir, modificar archivos de video e incluso trabajar con audio. ¡Y todo esto sin tener que tomar cursos de edición de video! Un poco de magia, y tu Python comienza a susurrar videos en cualquier idioma que le indiques.

¿Por qué MoviePy?

  • Facilidad de uso: MoviePy cuenta con una interfaz súper intuitiva que te permite trabajar con videos sin perderte en montañas de código.
  • Multifuncionalidad: Desde cortar videos hasta agregar textos y efectos, MoviePy facilita la mayoría de las tareas.
  • Compatibilidad: Funciona en varias plataformas y puede integrarse con otras librerías como NumPy y PIL (Pillow).

2. Instalación de MoviePy

¡Vamos a instalar MoviePy! Para esto necesitas Python y la posibilidad de instalar paquetes desde internet. Conéctate al Wi-Fi (o usa GitHub como Wi-Fi gratuito — dicen que los pros hacen eso), abre el terminal y escribe:


pip install moviepy

Si algo no funciona, ¡tranqui! Estamos en el mundo de la programación, donde "nada funciona" no es un bug, sino una feature un poco mejorada.

Solución de problemas de instalación

Si al instalar te encuentras con errores, no tires tu compu a la basura. Prueba estos pasos:

  • Verifica la versión de Python: MoviePy requiere Python versión 3.5 o superior.
  • Asegúrate de tener todas las dependencias necesarias: Para algunas funciones, MoviePy puede necesitar FFMPEG. Instálalo siguiendo las instrucciones en la página oficial de FFMPEG.
  • Intenta usar un entorno virtual: A veces, los conflictos de dependencias se solucionan creando un nuevo entorno virtual. Prueba con python -m venv myenv.

3. Abrir y leer videos

Ahora que hemos instalado MoviePy, podemos empezar a trabajar. Imagina que tienes un viejo proyector de cine y empiezas a desmontar la cinta en trocitos y elementos para crear una nueva obra maestra. Veamos cómo funciona esto en código.

Para trabajar con videos en MoviePy se usa la clase VideoFileClip, que permite cargar y procesar archivos de video. Abrir un archivo de video es el primer paso, que da acceso a sus propiedades y opciones de edición.

Abrir un archivo de video


from moviepy.editor import VideoFileClip

# Abrir un archivo de video
video = VideoFileClip("sample_video.mp4")

# Obtener información básica del video
print("Duración:", video.duration, "segundos")
print("Resolución:", video.size)
print("Frames por segundo:", video.fps, "fps")

Explicación del código

  • VideoFileClip("sample_video.mp4"): Carga el archivo de video sample_video.mp4, creando un objeto video con el cual puedes trabajar.
  • video.duration: Muestra la duración del video en segundos.
  • video.size: Devuelve las dimensiones del video (ancho y alto).
  • video.fps: Devuelve los frames por segundo del video.

4. Cambiar el tamaño del video

A veces, para publicar o para optimizar, necesitas cambiar el tamaño del video. En MoviePy, esto se puede hacer con el método resize(), que te permite escalar el video al tamaño o porcentaje deseado.

Ejemplo


# Reducir el tamaño del video al 50% del original
video_resized = video.resize(0.5)
video_resized.write_videofile("resized_video.mp4")

Explicación del código

  • video.resize(0.5): Reduce el tamaño del video al 50% del original.
  • write_videofile(): Guarda el resultado como un nuevo archivo de video resized_video.mp4.

Además de escalar en porcentajes, puedes especificar un tamaño exacto. Por ejemplo, cambiar el ancho del video a 640 píxeles:


# Establecer el ancho del video a 640 píxeles
video_resized = video.resize(width=640)
video_resized.write_videofile("resized_video_640.mp4")

Si solo especificas un lado (como width=640), el otro lado se calculará automáticamente para mantener las proporciones.

5. Recortar video (crop)

Recortar (crop) es una operación útil si necesitas eliminar partes innecesarias del video, dejando solo el área que te interesa. El método crop() te permite especificar las coordenadas de recorte: los bordes superior, inferior, izquierdo y derecho.

Ejemplo


# Recortar video: eliminar áreas en los bordes
video_cropped = video.crop(x1=50, y1=50, x2=500, y2=400)
video_cropped.write_videofile("cropped_video.mp4")

Explicación del código

  • video.crop(x1=50, y1=50, x2=500, y2=400): Recorta el video conservando el área desde la coordenada (50, 50) hasta (500, 400).
  • write_videofile(): Guarda el video recortado como cropped_video.mp4.

6. Rotar video

MoviePy también soporta la rotación de videos a 90, 180 o 270 grados, lo cual puede ser útil al trabajar con videos grabados en diferentes orientaciones.

Rotar video 90 grados


# Rotar video 90 grados
video_rotated = video.rotate(90)
video_rotated.write_videofile("rotated_video.mp4")

Explicación del código

  • video.rotate(90): Rota el video 90 grados en el sentido de las agujas del reloj.
  • write_videofile(): Guarda el video rotado como rotated_video.mp4.

7. Cambiar la velocidad de reproducción

A veces es útil acelerar o ralentizar un video. En MoviePy, esto se puede hacer usando el método fx, que permite alterar la velocidad de reproducción.

Acelerar video al doble


from moviepy.video.fx.all import speedx

# Acelerar video al doble
video_fast = video.fx(speedx, 2)
video_fast.write_videofile("fast_video.mp4")

Explicación del código

  • video.fx(speedx, 2): Acelera el video al doble. Si quisieras ralentizar el video, puedes usar un valor menor a 1 (por ejemplo, 0.5).
  • write_videofile(): Guarda el video acelerado como fast_video.mp4.

8. Recortar por tiempo (segmentar video)

MoviePy también permite recortar un video por tiempo, lo cual es útil si necesitas seleccionar un fragmento específico del video.

Ejemplo: Recortar video de 10 a 30 segundos


# Recortar video en un intervalo de tiempo de 10 a 30 segundos
video_subclip = video.subclip(10, 30)
video_subclip.write_videofile("subclip_video.mp4")

Explicación del código

  • video.subclip(10, 30): Crea un nuevo clip de video que comienza en el segundo 10 y termina en el segundo 30 del video original.
  • write_videofile(): Guarda el fragmento recortado como subclip_video.mp4.

9. Guardar cambios y exportar video

Después de procesar el video, es importante guardar los cambios. MoviePy utiliza el método write_videofile() para exportar videos en varios formatos.

Ejemplo: Exportar con configuración de parámetros


# Guardar video configurando parámetros de calidad
video_resized.write_videofile(
    "output_video.mp4", 
    codec="libx264",     # códec para video (por ejemplo, libx264 para MP4)
    audio_codec="aac",   # códec para audio (por ejemplo, aac)
    bitrate="5000k"      # bitrate para configurar la calidad
)

Explicación del código

  • codec: Determina el códec para comprimir el video. Por ejemplo, libx264 para formato MP4.
  • audio_codec: Determina el códec para la pista de audio (por ejemplo, aac).
  • bitrate: Configura la calidad y el tamaño del video (5000 kbps para alta calidad).

Ejemplo de código completo funcional

Unamos los métodos vistos en un solo ejemplo que abre un video, cambia su tamaño, lo rota, lo recorta y guarda el resultado.


from moviepy.editor import VideoFileClip
from moviepy.video.fx.all import speedx

# Abrir archivo de video
video = VideoFileClip("sample_video.mp4")

# Escalar al 50% del tamaño original
video_resized = video.resize(0.5)

# Rotar 90 grados
video_rotated = video_resized.rotate(90)

# Acelerar el video 1.5 veces
video_fast = video_rotated.fx(speedx, 1.5)

# Recortar en intervalo de tiempo de 5 a 20 segundos
video_subclip = video_fast.subclip(5, 20)

# Guardar video procesado
video_subclip.write_videofile("final_output.mp4", codec="libx264", audio_codec="aac", bitrate="3000k")

10. Errores comunes

Si te encuentras con problemas al usar MoviePy, no te desesperes. Aquí tienes algunos errores comunes y cómo solucionarlos:

  • Problemas con códecs: Si tu archivo no se puede guardar, probablemente sea un problema de códecs. Agrega codec="libx264" al método write_videofile.
  • Error de FFMPEG: Asegúrate de que FFMPEG esté instalado y configurado en el PATH de tu sistema. Esto se puede verificar ejecutando ffmpeg en la línea de comandos.

Aplicación práctica

Como ya se mencionó, MoviePy puede convertirse en tu compañero fiel para crear contenido para canales de YouTube, entrenamientos, presentaciones y mucho más. Estas habilidades también son útiles para crear reportes en video, procesar materiales publicitarios e incluso impresionar a futuros empleadores con tu versatilidad.

Así que, amigos, ahora que están familiarizados con los fundamentos de MoviePy, tienen todo lo necesario para empezar a crear verdadera magia en video. Nos esperan más aventuras con video y audio, así que prepárense con su código y sigan con nosotros en esta onda de programación.

1
Tarea
Python SELF ES, nivel 47, lección 0
Bloqueada
Instalación y verificación de MoviePy
Instalación y verificación de MoviePy
2
Tarea
Python SELF ES, nivel 47, lección 0
Bloqueada
Fundamentos del trabajo con videos
Fundamentos del trabajo con videos
3
Tarea
Python SELF ES, nivel 47, lección 0
Bloqueada
Cambio de tamaño y rotación de video
Cambio de tamaño y rotación de video
4
Tarea
Python SELF ES, nivel 47, lección 0
Bloqueada
Procesamiento complejo de video
Procesamiento complejo de video
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION