Python

moviepyによる動画変換処理 with ndarray

動画を処理するためのtipsです。

moviepyのインストールは

pip install moviepy

と簡単です。

VideoFileClipクラスのメソッドfl_imageにコールバック関数をセットします。
このコールバック関数は、各フレームの画像を'(Height, Width, Channel)'のndarrayとして受け取り、同様の形式のndarrayを返すことで動画を変換できます。便利ですね。

下記は、各ピクセル0〜255で表現されているndarrayを反転させることで色の反転を行った例です。

from moviepy.editor import VideoFileClip

def func(frame):
    """
    :param frame: (H, W, Channel) [ndarray]
    :return: (H, W, Channel) [ndarray]
    """
    return -frame + 255 # 色を反転

inpout_video = "test_input.mp4"
output_video = 'test_output.mp4'

clip1 = VideoFileClip(inpout_video)
project_clip = clip1.fl_image(func)

project_clip.write_videofile(output_video, audio=True)