괴발개발/python

moviepy를 이용한 유튜브 자동편집하기

이태원프리덤# 2023. 1. 29. 01:20
728x90

안녕하세요 파이썬 라이브러리 중 영상편집을 할 수 있는 moviepy에 대해 포스팅해보겠습니다

세부사항은 정식홈페이지(https://zulko.github.io/moviepy/) 에서도 확인가능합니다

 

 - 편집할 영상 가져오기

aa = VideoFileClip(original_video_path+'/'+'mmm.gif', audio=True)

videofileclip을 이용해 구워삶을 수 있는 영상을 aa 변수에 저장해 둡시다

 

 - 영상 정보

    def __init__(self, filename, has_mask=False,
                 audio=True, audio_buffersize=200000,
                 target_resolution=None, resize_algorithm='bicubic',
                 audio_fps=44100, audio_nbytes=2, verbose=False,
                 fps_source='tbr'):

        VideoClip.__init__(self)

        # Make a reader
        pix_fmt = "rgba" if has_mask else "rgb24"
        self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
                                         target_resolution=target_resolution,
                                         resize_algo=resize_algorithm,
                                         fps_source=fps_source)

        # Make some of the reader's attributes accessible from the clip
        self.duration = self.reader.duration
        self.end = self.reader.duration

        self.fps = self.reader.fps
        self.size = self.reader.size
        self.rotation = self.reader.rotation

        self.filename = self.reader.filename

        if has_mask:

            self.make_frame = lambda t: self.reader.get_frame(t)[:,:,:3]
            mask_mf = lambda t: self.reader.get_frame(t)[:,:,3]/255.0
            self.mask = (VideoClip(ismask=True, make_frame=mask_mf)
                         .set_duration(self.duration))
            self.mask.fps = self.fps

        else:

            self.make_frame = lambda t: self.reader.get_frame(t)

        # Make a reader for the audio, if any.
        if audio and self.reader.infos['audio_found']:

            self.audio = AudioFileClip(filename,
                                       buffersize=audio_buffersize,
                                       fps=audio_fps,
                                       nbytes=audio_nbytes)

videofileclip에는 여러 함수가 내장되어있습니다

영상의 정보등 필요한 함수를 오버라이딩하여 사용하시면 됩니다

videofileclip또한 videoclip을 상속받아 사용하는거라 더 많은 함수를 사용하실 수 있습니다

그 중 유용하게 사용하는 함수 몇개를 소개하겠습니다

 - 영상 저장하기

def write_videofile(self, filename, fps=None, codec=None,
                        bitrate=None, audio=True, audio_fps=44100,
                        preset="medium",
                        audio_nbytes=4, audio_codec=None,
                        audio_bitrate=None, audio_bufsize=2000,
                        temp_audiofile=None,
                        rewrite_audio=True, remove_temp=True,
                        write_logfile=False, verbose=True,
                        threads=None, ffmpeg_params=None,
                        logger='bar')

 - 영상을 gif로 변환

def write_gif(self, filename, fps=None, program='imageio',
                  opt='nq', fuzz=1, verbose=True,
                  loop=0, dispose=False, colors=None, tempfiles=False,
                  logger='bar')

 

전에 aa 변수에 저장해두었던 파일크립을 구워 삶은 뒤 위 두개의 함수를 사용하여 영상이나 gif파일로 저장하시면 됩니다

나중엔 aa에 저장한 파일클립을 어떻게 구워삶을 지에 대해 다뤄보겠습니다

 

감사합니다

728x90