1. Corte de video
En esta lectura nos enfocaremos en cortar videos y unir clips usando la biblioteca MoviePy. Aprenderás cómo dividir un video en partes y cómo, a partir de estas partes, crear proyectos de video completos. Un desayuno de videos al estilo "Python-mix" hecho con tus tutoriales favoritos de programación.
Empecemos con cómo dividir un video en fragmentos. Esto puede ser útil en diferentes situaciones: desde crear un demo para tus últimos descubrimientos científicos hasta cortar todos los momentos en que guiñaste el ojo en conferencias de Zoom.
División de video por tiempo
Dividir un video en fragmentos se basa en usar el método cut de MoviePy. Podemos establecer los intervalos de tiempo inicial y final que nos interesan.
from moviepy.editor import VideoFileClip
# Cargamos el video
clip = VideoFileClip("input_video.mp4")
# Cortamos un fragmento de 10 a 20 segundos
clip1 = clip.subclip(10, 20)
# Guardamos el fragmento cortado
clip1.write_videofile("clip1.mp4")
Este código corta el fragmento entre el segundo 10 y el segundo 20 del video original. Para ahorrar espacio y evitar nervios, asegúrate de indicar los marcadores de tiempo correctamente para no obtener un fragmento "aleatorio" con tu descanso de café en remoto.
Corte de video en varias partes
Puedes cortar un video en varias partes y guardarlas como clips independientes para unirlos después.
Corte de video en tres fragmentos
Supongamos que tenemos un video de 30 segundos y queremos dividirlo en tres fragmentos iguales de 10 segundos cada uno.
# Crear tres fragmentos iguales
clip1 = video.subclip(0, 10)
clip2 = video.subclip(10, 20)
clip3 = video.subclip(20, 30)
# Guardar los fragmentos
clip1.write_videofile("clip_part1.mp4")
clip2.write_videofile("clip_part2.mp4")
clip3.write_videofile("clip_part3.mp4")
Este código crea tres clips de video:
clip1— de 0 a 10 segundos,clip2— de 10 a 20 segundos,clip3— de 20 a 30 segundos.
Cada fragmento se guarda como un archivo de video independiente.
Corte de los fragmentos más interesantes
A menudo, un único fragmento no es suficiente, y necesitas todo un ramillete de videos. Podemos crear varios de estos fragmentos y guardarlos.
clip2 = clip.subclip(30, 40)
clip3 = clip.subclip(50, 60)
clip2.write_videofile("clip2.mp4")
clip3.write_videofile("clip3.mp4")
Ahora tenemos tres fragmentos cortados del video original. Es casi como montar un rompecabezas, pero al revés.
2. Unión de clips
Después de cortar, es hora de unir nuestro video nube nuevamente, pero en una nueva forma revisada. Aquí es donde las capacidades de MoviePy para unir varios clips en uno nos resultan útiles.
Creación de compilaciones de videoclips
Para unir clips, utilizamos el método concatenate_videoclips. Este método nos permite colocar los clips uno detrás de otro en el orden indicado.
from moviepy.editor import concatenate_videoclips
# Unimos los clips en uno
final_clip = concatenate_videoclips([clip1, clip2, clip3])
# Guardamos el video combinado
final_clip.write_videofile("final_video.mp4")
Ahora tenemos un nuevo proyecto de video que es una colección de tus mejores momentos. O momentos aleatorios, si te olvidaste del orden.
Adición de audio al unir clips
Cuando unes videoclips, también puedes agregar una pista de audio. Por ejemplo, si tienes un archivo de música u otro clip de audio, puedes superponerlo al video combinado.
Unión de videoclips con adición de pista de audio
from moviepy.editor import AudioFileClip
# Crear un clip de audio
audio_clip = AudioFileClip("background_music.mp3")
# Agregar el clip de audio al video combinado
final_clip_with_audio = final_clip.set_audio(audio_clip)
final_clip_with_audio.write_videofile("combined_with_audio.mp4")
Aquí:
AudioFileClip("background_music.mp3")crea un clip de audio a partir de un archivo de música.set_audio(audio_clip)agrega una pista de audio al video combinadofinal_clip.
3. Transiciones entre clips
En MoviePy, para crear transiciones entre clips, se utiliza la clase CompositeVideoClip, así como varios efectos. La idea principal es superponer un clip sobre otro usando efectos como transparencia o desplazamiento. Las transiciones a menudo incluyen cambios de transparencia o cuadros deslizantes para que un clip fluya suavemente hacia el siguiente.
Transición de desvanecimiento gradual (Fade)
El desvanecimiento es una de las transiciones más populares, donde el primer clip desaparece gradualmente y el segundo aparece gradualmente en pantalla. Este efecto se crea con la función crossfadein() o crossfadeout().
Transición de desvanecimiento entre dos clips
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Cargar dos videoclips
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5) # Primer clip de 5 segundos
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5) # Segundo clip de 5 segundos
# Configuración del efecto de desvanecimiento
clip1 = clip1.crossfadeout(1) # Desvanecimiento gradual del clip 1 en 1 segundo
clip2 = clip2.crossfadein(1) # Aparición gradual del clip 2 en 1 segundo
# Unión de clips con transición
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_transition.mp4")
En este ejemplo:
crossfadeout(1)hace que el primer clip sea gradualmente menos transparente durante un segundo.crossfadein(1)hace que el segundo clip sea gradualmente más transparente durante un segundo.concatenate_videoclips([clip1, clip2], method="compose")une dos clips con transición de desvanecimiento.
Transición a negro
La transición a negro (o "fade to black") es un efecto en el que el primer clip se desvanece a una pantalla negra y luego el siguiente clip aparece desde el negro. Esta transición crea un efecto de cierre de una escena antes de que comience la siguiente.
from moviepy.editor import VideoFileClip, concatenate_videoclips
# Cargar dos clips
clip1 = VideoFileClip("clip1.mp4").subclip(0, 5)
clip2 = VideoFileClip("clip2.mp4").subclip(0, 5)
# Configuración de desvanecimiento a negro
clip1 = clip1.fadeout(1) # Desvanecimiento del clip 1 a negro
clip2 = clip2.fadein(1) # Aparición del clip 2 desde negro
# Unión de clips con desvanecimiento a negro
final_clip = concatenate_videoclips([clip1, clip2], method="compose")
final_clip.write_videofile("fade_to_black_transition.mp4")
Aquí:
fadeout(1)desvanece el clip a una pantalla negra durante un segundo.fadein(1)hace que el segundo clip aparezca gradualmente desde una pantalla negra.
Ahora tu video no es solo una colección de fragmentos, sino un verdadero éxito con transiciones fluidas. Como ves, hemos agregado efectos de entrada y salida para hacer el video más limpio.
4. Aplicación práctica
Las habilidades adquiridas en esta lectura son muy útiles. Imagina que estás creando un tutorial de programación, un anuncio para una nueva biblioteca o una edición del nacimiento de tu gato en el mundo de TI (sí, ¡incluso eso pasa!). Saber cortar videos y unirlos en bloques temáticos es un paso hacia convertirte en un verdadero experto en edición de video y automatización.
Errores típicos
Al trabajar con el corte y la unión de videos, sé cuidadoso con los marcadores de tiempo. Todos hemos visto esos momentos en que un video se detiene inesperadamente (y vuelven las mismas diapositivas aburridas de la conferencia). Asegúrate de que tus marcadores sean correctos y no haya errores. MoviePy a veces puede quejarse de formatos incorrectos o clips vacíos, así que revisa el código antes de lanzarlo.
Espero que ahora no solo estés armado con conocimientos, sino que también sientas un poco de emoción por las posibilidades que se abren frente a ti. ¡Adelante, al mundo de la edición de video y soluciones creativas con Python y MoviePy!
GO TO FULL VERSION