【副業実験記#8】Python+MoviePyで動画を自動生成してみた話

子育てSEパパのIT×AI×副業ラボ_副業実験記_8 副業実験記

つづき。


はじめに

引き続き、雑学動画自動生成ツールを自作できないか、検討してみているお話です。

今回は、動画を自動生成できるPythonライブラリ「MoviePy」について、雑学動画自動生成ツールで使えるか検証してみた話です。

検証準備

Pythonのインストール

「Python」で雑学動画自動生成ツールを作るつもりなので、検証でも同様に使います。

詳細は以下の記事にまとめていますので、ご興味ある方は、そちらをご覧ください。

PyCharmのインストール

Pythonでの開発を楽にしてくれる統合開発環境「PyCharm」を使います。

Pythonで雑学動画自動生成ツールを作る際に使うつもりなので、検証でも同様に使います。

詳細は以下の記事にまとめていますので、ご興味ある方は、そちらをご覧ください。

検証用Pythonプロジェクトおよびvenvの作成

検証用「Pythonプロジェクト」を作成します。

PyCharmで簡単に作成できます。

Pythonプロジェクトを作成したら、その中で「venv」(Python仮想環境)を作成しておきます。

詳細は以下の記事にまとめていますので、ご興味ある方は、そちらをご覧ください。

Pythonパッケージのインストール

今回は、以下のパッケージを使用します。

Noパッケージ説明
1moviepyPythonで動画を編集・加工できるオープンソースのライブラリパッケージです。

検証用Pythonプロジェクトでvenvを起動し、パッケージをインストールします。

ターミナルでコマンド実行してインストールする方法やPyCharm上で画面を操作してインストールする方法がありますが、今回は、PyCharm上で画面を操作し、venvにパッケージをインストールします。

MoviePyは、バージョン1系と2系でライブラリの使い方が大幅に変わっているようなので、注意が必要そうでした。

ChatGPTにMoviePyのシンプルなコードの記載を依頼したところ、バージョン1系を使ったコードの回答が返ってきたので、今回は、バージョン1系を使います

FFmpegのインストール

「FFmpeg」は、動画や音声の変換・編集・再生などができる無料のコマンドラインツールです。

MoviePyは、内部でFFmpegを使って動画を生成するようなので、事前にインストールします。

詳細は以下の記事にまとめていますので、ご興味ある方は、そちらをご覧ください。

音声ファイルの準備

検証時に作成した以下の音声ファイルを使用します。

画像ファイルの準備

以下の検証時に作成した画像ファイルを使用します。

音楽(BGM)ファイルの準備

雑学動画でよくBGMになっている「Escort」という音楽を使用します。

検証してみた

MoviePyを使用した動画自動生成の流れ

以下の流れで音声ファイルや画像ファイル、音楽(BGM)ファイルをもとに動画を生成するようでした。

  1. 音声ファイルを読み込む
  2. 音楽(BGM)ファイルを読み込む
  3. 音楽(BMG)を音声の長さに合わせる
  4. 音声と音楽(BGM)を合成する
  5. 画像ファイルを読み込む
  6. 画像の表示時間を音声の長さに合わせる
  7. 画像と合成した音声と音楽(BGM)を合成する
  8. 合成した画像と音声、音楽(BGM)をもとに動画を生成する

MoviePyを使用した動画自動生成の試し

では実際に、音声ファイルと画像ファイル、音楽ファイル(BGM)を合わせて動画を生成してみます。

MoviePyを使ったPythonサンプルコード

from moviepy.editor import *

# ファイルパス
image_path = "output.png"
voice_path = "output.wav"
bgm_path = "escort.mp3"
output_path = "output_video.mp4"

# 音声クリップの読み込み
voice_clip = AudioFileClip(voice_path)
bgm_clip = AudioFileClip(bgm_path).volumex(0.3)  # BGMの音量を30%に調整(お好みで)

# BGMの長さをナレーション音声に合わせてトリミング or ループ
bgm_clip = bgm_clip.set_duration(voice_clip.duration)

# 音声とBGMをミックス
mixed_audio = CompositeAudioClip([bgm_clip, voice_clip])

# 画像を読み込み、音声の長さに合わせて表示時間を設定
image_clip = ImageClip(image_path).set_duration(voice_clip.duration)

# 画像に合成音声を設定
video = image_clip.set_audio(mixed_audio)

# 出力(fps=24が一般的)
video.write_videofile(output_path, fps=24)

Pythonサンプルコード実行結果

D:\PyCharmProjects\MoviePyTest\.venv\Scripts\python.exe D:\PyCharmProjects\MoviePyTest\image_and_audio_to_video.py 
Moviepy - Building video output_video.mp4.
MoviePy - Writing audio in output_videoTEMP_MPY_wvf_snd.mp3
t:   0%|          | 0/61 [00:00<?, ?it/s, now=None]MoviePy - Done.
Moviepy - Writing video output_video.mp4

Moviepy - Done !
Moviepy - video ready output_video.mp4

プロセスは終了コード 0 で終了しました

サンプルコードで生成された動画

output_video.mp4

他にも様々な機能がありそうでしたが、基本的な機能だけでも、十分に、雑学動画自動生成ツールで使えると感じました。

おわりに

「MoviePy」ですが、音声ファイルと画像ファイル、音楽ファイル(BGM)を合成して動画を自動生成できることが分かりました。

これで、動画自動生成には「MoviePy」を使えば良いことが分かったので、次の技術やツールの検証に移ろうと思います。

(今回も検証用のコードは、ChatGPT(GPT-4oモデル)に出力してもらったものを微修正したものです)


今回の記事も、同じように副業に悩んでいる人、手探りで取り組んでいる人にとって、何かの参考になれば嬉しいです。

これからも記録を続けていく予定なので、よければフォローしてもらえると嬉しいです。


つづき。

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