[파이썬] moviepy TimeSequenceClip 사용법

MoviePy is a Python library that allows you to work with video files, including creating and editing videos. One of the useful features of MoviePy is the ability to create a clip from a series of images or video frames taken at specific time intervals through the TimeSequenceClip class.

In this blog post, we will explore the usage of TimeSequenceClip and learn how to create clips from a sequence of images in Python using MoviePy.

Installation

Before we proceed, ensure that you have MoviePy installed. You can install it using pip:

pip install moviepy

Creating a TimeSequenceClip

To create a clip from a sequence of images, first, make sure you have the images stored in a folder. Let’s assume we have a folder named ‘frames’ with image files named frame1.jpg, frame2.jpg, and so on.

Now, let’s write some code to create a clip from these images using MoviePy:

from moviepy.editor import *

# Path to the folder with images/frames
frame_folder = 'frames/'

# Get all the image files from the folder
image_files = sorted(os.listdir(frame_folder))

# Create a list of image paths
image_paths = [frame_folder + img for img in image_files]

# Load the images into a list of clips
image_clips = [ImageClip(img_path, duration=0.5)
               for img_path in image_paths]

# Create a TimeSequenceClip from the image clips
clip = TimeSequenceClip(image_clips, fps=24)

# Preview the clip
clip.preview()

In the above code, we import the necessary modules and define the path to the folder containing the image files. Next, we use the os.listdir() method to get the files in the folder and sort them. Then, we create a list of image paths and load them into a list of clips using ImageClip. We pass the duration parameter to specify the display duration for each image.

Finally, we create a TimeSequenceClip by passing the list of image clips and specifying the frame rate (fps). And, we preview the clip using the preview() method.

Saving the TimeSequenceClip

To save the clip as a video file, we can use the write_videofile method. Let’s modify our previous code snippet to save the clip as an mp4 file:

from moviepy.editor import *

# Path to the folder with images/frames
frame_folder = 'frames/'

# Get all the image files from the folder
image_files = sorted(os.listdir(frame_folder))

# Create a list of image paths
image_paths = [frame_folder + img for img in image_files]

# Load the images into a list of clips
image_clips = [ImageClip(img_path, duration=0.5)
               for img_path in image_paths]

# Create a TimeSequenceClip from the image clips
clip = TimeSequenceClip(image_clips, fps=24)

# Save the clip as an mp4 file
clip.write_videofile('output.mp4', codec='libx264')

In the code snippet above, we use the write_videofile method to save the TimeSequenceClip as an mp4 file named ‘output.mp4’. We specify the video codec as libx264. You can choose different codecs based on your requirements.

Conclusion

In this blog post, we explored how to create a clip from a sequence of images using the TimeSequenceClip class provided by MoviePy. We saw how to load the images, create the clip, preview it, and save it as a video file. MoviePy offers many other powerful features for video editing, so make sure to check out the official documentation for more information.

If you’re looking to automate video creation or work with video files in your Python projects, MoviePy can be a great addition to your toolkit. Give it a try and start creating your own dynamic video clips!