Pythonで画像と音声を合成し動画を作成する

画像と音声を合成して動画を作成する方法の解説です。
言語はPythonを使います。

事前準備

今回のコードでは、次の2つのモジュールを使います。

  • pydub
  • moviepy

まだインストールされていない場合は、以下のコマンドを実行してインストールしてください。

pip install pydub
pip install moviepy

コード

コードは以下になります。
今回は1つの音声と1つの画像から動画を作っていますが、Pythonを使えば複数の音声と複数の画像からでも簡単に動画を作ることができます。

from pydub import AudioSegment
from moviepy.editor import *

audio_path = r'音声のファイルパス'
image_path = r'画像のファイルパス'

audio = AudioSegment.from_file(audio_path, 'mp3')
video = ImageClip(image_path).set_duration(audio.duration_seconds)
video.write_videofile(rf"test_movie.mp4", fps=10, audio=audio_path)

コード解説

4行目と5行目

動画として使用する画像と音声のファイルパスを指定します。

7行目

4行目で指定した音声ファイルから音声情報を取得します。
音声情報を取得する目的は、音声の再生時間を知るためです。

8行目

5行目で指定した画像ファイルから映像を作ります。
set_durationを使って映像の長さを音声の再生時間に合わせています。

これで動画を作るために必要な映像と音声が準備できました。

9行目

最後に8行目で作った映像をもとに動画を出力します。
出力ファイル名を「test_movie.mp4」とし、音声はaudioで指定しています。

出力の時にフレームレートを指定します。
今回は例として使うためフレームレートを10と低く設定していますが、実際に使う動画の場合はフレームレートを上げるとよいでしょう。

最後に & 関連書籍

以上になります。

分かりにくいところや、「もっとこうしてほしい」などのご意見がありましたら、ツイッターから連絡いただけると幸いです。
質問に関しても、お気軽にお問い合わせください。

余談ですが、Pythonを使ってインスタグラムを自動でいいねするコードなども公開しています。
興味があれば見てみてください。

以下は関連書籍です。

コメント

タイトルとURLをコピーしました