【MoviePy】トリミングした動画の映像が止まる / 動画音声がiphoneスマホで音がでない バグ対策のTips
動画編集を自動化する依頼を多々受ける中で、タイトルのようなバグが発生したので、その対策ネタを紹介します。
MoviePyに対する日本語記事って実はあんまり多くないんですよね。
なので何か問題があったときに原因をググりまくってみたけど、類似の案件が見つからない!
というわけで、他のMoviePyユーザーのために私が気づいたことを書くことにしました。
前半はタイトルの対策ネタ、後半はMoviePyについての解説になります。
【目次】
対策の結論!
・トリミングした動画の映像が止まる!
編集前の動画に編集後の動画を上書きするとバグります。
→上書きやめると直ります。
write_videofileのcodec引数に問題がある可能性があります。
→iphone用のcodec引数は以下。
codec='libx264', audio_codec='aac', temp_audiofile='temp-audio.m4a', remove_temp=True
これといって詳しい解説はありません。
調べてみるとMoviePyの仕様上の問題や動画データのエンコード・デコードに関する問題のようでした。
後は実際に試してみて、上記の原因や対策を見つけたってのが詳細になります。
では、後半はMoviePyについての解説。
MoviePyとは
Pythonを使って動画編集ができるオープンソース(無料)になります。
公式サイトは以下です。
zulko.github.io
上記サイトにアクセスすると、トップ画面に以下のような画面が表示されます。
VideoFileClipというモジュールの引数に、対象の動画ファイル名を指定してやるだけで、動画を読み込むことができます。
読み込める動画の拡張子はmp4、mov、avi等幅広く対応しています。
非常に引数が多彩で、audioやfps等の出力設定も簡単に設定できる優れもの。
ちなみにトリミングをする際は、VideoFileClipのsubclipという関数を呼び出すことで実装できます。
subclipの引数に開始時間と終了時間を指定できるので、Pythonプログラミングと組み合わせれば自由にトリミング時間を設定できるのです。