🐡

【MoviePy】 アプデが改悪すぎる件について

に公開

MoviePyが最近Ver.2になりましたが、それでめっちゃ混乱おきてるみたいなので変更点をまとめておきます。

もちろん改悪なものだけではなく、結構役立つアプデもあったので一緒に書いておきます。

https://bastakiss.com/blog/python-5/exploring-moviepy-2-a-modern-approach-to-video-editing-in-python-618

1: editor.pyを使用せず、直接インポートできるようになった

from moviepy.editor import VideoFileClip

これが

from moviepy import VideoFileClip

みたいにできるようになりました。

知らなかったら『なんでエラー起きるの??』となるので正直やめてほしいです..
せめてmoviepy.editorが見つからないっていうエラーが起きたときにはeditorは廃止されたって旨のメッセージくらいは出してほしかったですね...。

2: subclipsubclippedになった

よく使うメソッドですね。
正直ここはVSCodeで予測変換で出るのでなんともないです。

個人的に最高のアプデ

変更1: オブジェクトに不変性を持たせた

変更前
clip = VideoFileClip("example.mp4")
clip = clip.subclip(10, 20)       # 自身を変更
clip.set_duration(10)             # 同じオブジェクトを変更
変更後
clip = VideoFileClip("example.mp4")
clip = clip.subclipped(10, 20)    # 新しいクリップを返す(元のclipは変化しない)
clip = clip.with_duration(10)     # 新しいクリップを代入し直す

これだけでかなり使いやすくなった。

ちなみに、この影響で多くのメソッドがset_からwith_に変更されているらしいです。

変更2: エフェクトAPIが一新

変更前
from moviepy.editor import vfx

fade_in_clip = clip.fx(vfx.fadein, 1)
fade_out_clip = fade_in_clip.fx(vfx.fadeout, 1)
変更後
from moviepy import vfx

clip = clip.with_effects([vfx.FadeIn(1), vfx.FadeOut(1)])

かなーり使いやすくなった。

変更3: 音量は乗算で行うようになった

変更前
from moviepy.editor import afx

clip = clip.fx(afx.volumex, 0.8)
変更後
clip = clip.with_audio(clip.audio * 0.8)

直感でできるようになったので最高です!

Discussion