この記事は自分の学習・思い出すために書くものです。随時追記していきます。
Moviepy
公式ドキュメント
動画編集用のpythonモジュールです。OpenCV2と異なり、動画特化のモジュールで動画像と音声を同時に編集することが得意です。反対にあまり最適化されていないのかエンコードには時間がかかるので、YouTubeの切り抜きの自動化みたいな感じで使うとき以外は、ほかのモジュールを使った方がよいかもしれません。(あまり他のモジュールを知らないのであれですが、動画像ならOpenCV、音声ならtorchaudioあたりを使った方がいい感じがします。)
MoivePyは動画編集用のPythonモジュールで、一般的な操作(カット・結合・タイトル挿入)、ビデオ合成(非線形編集)、CG合成を使用することが可能です。また、一般的なビデオフォーマットによる読み書きが可能です。
モジュールの説明
Clip
Moviepyの基本的なクラスです。ほかのクラスはこのクラスをオーバーライドしています。
クラス変数
start #クリップ開始時間
end #クリップ終了時間
duration #クリップの長さ
クラス関数
close() return None #リソース開放
copy() return Clip #浅いコピーの作成
cutout(ta,tb) return Clip # ta[s]とts[s]間を切り落としたClipを返す
subclip(t_start=0,t_end=None) return Clip # t_start[s]とt_end[s]間だけを切り取ったClipを返す
...その他関数は公式ドキュメント参照
VideoClip
動画はこのクラスに集約されます。このクラスをインスタンスする関数はいくつかあります。https://moviepy.readthedocs.io/en/latest/ref/VideoClip/VideoClip.html#
VideoClip(make_frame=None, is_mask=False, duration=None, has_constant_size=True) #新しく動画を作るときに使います。
VideoFileClip(filename, decode_file=False, has_mask=False, audio=True, audio_buffersize=200000, target_resolution=None, resize_algorithm='bicubic', audio_fps=44100, audio_nbytes=2, fps_source='fps', pixel_format=None) #既にある動画を読み込むときに使います。
ImageClip(img, is_mask=False, transparent=True, fromalpha=False, duration=None) #一枚の画像を読み込むときに使います。
ColorClip(size, color=None, is_mask=False, duration=None) #一色で塗りつぶした動画を作成するときに使います。
TextClip(text=None, filename=None, size=None, color='black', bg_color='transparent', font_size=None, font='Courier', stroke_color=None, stroke_width=1, method='label', kerning=None, align='center', interline=None, tempfilename=None, temptxt=None, transparent=True, remove_temp=True, print_cmd=False) #テキストのみの動画を作成するときに使います。
CompositeVideoClip(clips, size=None, bg_color=None, use_bgclip=False, is_mask=False) #クリップを重ね合わせた動画を作成するときに使います。
AudioClip
音声はこのクラスに集約されます。Video.audioにこのクラスを指定することで動画に音声を含ませることができます。このクラスにもインスタンス化する関数がいくつかあります。
AudioClip(make_frame=None, duration=None, fps=None) # 新しくオーディオクリップを作成します。
AudioFileClip(filename, decode_file=False, buffersize=200000, nbytes=2, fps=44100) # ファイルから音声を読み込みます。
CompositeAudioClip(clips) # 音声を合成するときに使用します。
基本的な構造について
既に存在する動画ファイル、音声ファイルをVideoFileClipまたはAudioFileClipで読み込んだ場合、そのファイルのパラメータ(fps等)も読み込みます。
#サンプルコード
import moviepy.editor as mp
filename="video1.mp4"
videoclip=VideoFileClip(filename)
print(videoclip.fps)
print(videoclip.audio.fps)
----
30
44100