注記
MoviePy は最近 v2.0 にアップグレードされ、重大な破壊的変更が導入されました。ここで最新の v1 ドキュメントを参照できますが、v1 はもうメンテナンスされていないことに注意してください。コードを v1 から v2 に更新する方法の詳細については、このガイドを参照してください。
MoviePy (オンライン ドキュメントはこちら) は、ビデオ編集用の Python ライブラリです。カット、連結、タイトル挿入、ビデオ合成 (別名ノンリニア編集)、ビデオ処理、カスタム エフェクトの作成が可能です。
MoviePy は、GIF を含む最も一般的なオーディオおよびビデオ形式をすべて読み書きでき、Python 3.9 以降を使用して Windows/Mac/Linux 上で実行できます。
この例では、ビデオ ファイルを開き、10 秒から 20 秒の間のサブクリップを選択し、画面の中央にタイトルを追加して、結果を新しいファイルに書き込みます。
from moviepy import VideoFileClip , TextClip , CompositeVideoClip
# Load file example.mp4 and keep only the subclip from 00:00:10 to 00:00:20
# Reduce the audio volume to 80% of its original volume
clip = (
VideoFileClip ( "long_examples/example2.mp4" )
. subclipped ( 10 , 20 )
. with_volume_scaled ( 0.8 )
)
# Generate a text clip. You can customize the font, color, etc.
txt_clip = TextClip (
font = "Arial.ttf" ,
text = "Hello there!" ,
font_size = 70 ,
color = 'white'
). with_duration ( 10 ). with_position ( 'center' )
# Overlay the text clip on the first video clip
final_video = CompositeVideoClip ([ clip , txt_clip ])
final_video . write_videofile ( "result.mp4" )
内部では、MoviePy はメディア (ビデオ フレーム、画像、サウンド) をインポートし、それらを Python オブジェクト (numpy 配列) に変換します。これにより、すべてのピクセルにアクセスできるようになり、ビデオまたはオーディオのエフェクトをわずか数行のコードで定義できます (例としては内蔵エフェクトなど)。
このライブラリには、クリップを混合する方法 (連結、クリップを並べて再生する、または透明度を付けて互いの上に重ねて再生するなど) も用意されています。最終的なクリップは、mp4/webm/gif/などに再度エンコードされます。
これにより、MoviePy は非常に柔軟で親しみやすくなりますが、データのインポート/エクスポート操作が重いため、ffmpeg を直接使用するよりも遅くなります。
pip install moviepy
で moviepy をインストールします。カスタム FFMPEG やプレビューなどの追加のインストール オプションについては、このセクションを参照してください。開発の場合は、そのリポジトリのクローンをローカルに作成し、 pip install -e .
オンライン ドキュメント (こちら) は、master ブランチにプッシュされるたびに自動的に構築されます。ドキュメントをローカルでビルドするには、 pip install moviepy[doc]
を介して追加の依存関係をインストールし、 docs
フォルダーに移動してmake html
を実行します。
MoviePy は、もともと Zulko によって作成され、MIT ライセンスの下でリリースされたオープンソース ソフトウェアです。このプロジェクトは GitHub でホストされており、誰でも投稿して問題を解決したり、フィードバックを送信したりできます。投稿ガイドラインをお読みください。助けを求めたり、単に使用法や例について話し合ったりするには、Reddit チャネルを使用してください。
メンテナー募集中!このライブラリはメンテナーの関与によってのみ存続しており、十分な帯域幅を誰も持っていない場合もあります。いくつかの問題 (特にあなたに影響を与える問題) に協力して解決したり、プル リクエストをレビューしたりすることに興味のある開発者についての情報をお待ちしています。ご興味がございましたら、問題をオープンするか、直接お問い合わせください。ありがとう!