CodeGym /コース /Python SELF JA /MoviePyを使った複合ビデオ編集:タイトル、音楽、アニメーション効果

MoviePyを使った複合ビデオ編集:タイトル、音楽、アニメーション効果

Python SELF JA
レベル 48 , レッスン 3
使用可能

1. ビデオのコンポジション:学んだスキルをすべて組み合わせよう

今日は特別なものを作ろう — MoviePyライブラリを使ってタイトル、音楽、アニメーション効果を含む複合ビデオだよ。でもその前に一つ質問:既にビデオにテキストを追加して、オーディオトラックと同期させたことある?もしまだなら、今がそのスキルを学び自動化の魅力を味わうタイミングだね!

まず始める前に、前回のレクチャーで学んだことをちょっと振り返ろう。ビデオとオーディオクリップの抽出と処理、テキストやグラフィックの追加、アニメーション効果の作成などを習得したよね。これらをすべて一つに組み合わせて、自分だけの傑作を作り上げよう。

複合ビデオ作成の主なステップ

  1. タイトルの追加: オープニングとエンディングのタイトルはビデオプロジェクトの始まりと終わりを示すのに役立つよ。
  2. 音楽の追加: 背景音楽は、ビデオに感情的な雰囲気を加えるね。
  3. アニメーション効果: 動くテキストや画像がコンテンツを活気づけて、もっと楽しくするよ。

2. 複雑なビデオを作成しよう

これまで学んだ要素をすべて含んだビデオプロジェクトを作成するところから始めるよ。こんな感じになるよ:


from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip, concatenate_videoclips
from moviepy.audio.AudioClip import CompositeAudioClip, AudioFileClip

# メインビデオクリップをロード
main_clip = VideoFileClip("clips/scene1.mp4")

# 音楽ファイルをロード
background_music = AudioFileClip("audio/background.mp3")

# タイトルを作成(例: ビデオの冒頭用)
title_text = "私たちの映画の傑作へようこそ!"
title_clip = TextClip(title_text, fontsize=70, color='white', bg_color='black', size=main_clip.size)
title_clip = title_clip.set_duration(5)

# タイトルをメインビデオの上に追加して複合ビデオを作成
final_clip = CompositeVideoClip([main_clip, title_clip.set_start(0)])
    

まずは簡単な複合ビデオを作成し、タイトルを追加してみたよ。今回の場合、タイトルはビデオの最初の5秒間を占めているね。CompositeVideoClipを使うことで、複数のビデオクリップを組み合わせて重ねることができるんだ。

レイヤーを重ねて要素をアニメーション化

もっと生き生きとしたダイナミックなビデオにするために、アニメーションやグラフィックをいくつか追加してみよう。例えば、ゆっくりと画面内に現れる動くテキストを追加するとしよう。


from moviepy.editor import TextClip

# アニメーションテキストを作成
animated_text = TextClip("見てインスパイアされよう!", fontsize=50, color='yellow', bg_color='black')
animated_text = animated_text.set_duration(3).set_position(lambda t: ('center', 200*(1 - t/3)))

# テキストをビデオに追加(5秒目から開始)
final_clip = CompositeVideoClip([main_clip, title_clip.set_start(0), animated_text.set_start(5)])
    

set_positionの関数を使うことで、時間tに応じてテキストの位置をアニメートできるんだ。この場合、テキストが3秒間で上から下にゆっくり移動する仕組みだよ。

スケールアップ効果のあるロゴ追加

もしやりたいなら、ロゴを追加することもできるよ(必須ではないけどね)。


from moviepy.editor import ImageClip

logo = ImageClip("logo.png").set_duration(5)
logo = logo.resize(lambda t: 1 + 0.2 * t).set_position(('right', 'bottom'))
    

ここでは:

  • resize(lambda t: 1 + 0.2 * t) はロゴのサイズを毎秒20%拡大して、スケールアップ効果を作り出しているよ。

3. 音楽の取り扱い

次に音楽を追加して、ビデオをもっと魅力的にしよう。ビデオの世界では、音楽は感情そのものだよ。作品全体のムードを形作ってくれるんだ。

ビデオをロードして音楽トラックを追加


from moviepy.editor import VideoFileClip, AudioFileClip

# メインビデオとオーディオファイルをロード
video = VideoFileClip("main_video.mp4")
audio = AudioFileClip("background_music.mp3").subclip(0, video.duration)

# ビデオに音楽を追加
video_with_audio = video.set_audio(audio)
    

ここでは:

  • AudioFileClip("background_music.mp3").subclip(0, video.duration) はオーディオトラックをビデオの長さに合わせて調整しているよ。
  • set_audio(audio) はビデオに背景音楽を追加しているんだ。

または、音楽を2番目のトラックとして追加


# 最終ビデオクリップにオーディオを設定
final_audio = CompositeAudioClip([main_clip.audio, background_music.set_duration(main_clip.duration).volumex(0.5)])
final_clip = final_clip.set_audio(final_audio)
    

CompositeAudioClipを使えば、メインビデオクリップの音声トラックと背景音楽を組み合わせることができるよ。この場合volumexを使って音楽の音量を調整して、ナレーションなどがある場合に邪魔にならないようにしているんだ。

オーディオとビジュアルの同期

オーディオを扱うときの重要なポイント:音楽トラックの長さをビデオと一致させることだね。これはset_durationメソッドを使って簡単にできるよ。上でその例を見てね。

4. 動画のエクスポートと最適化

さて、ビデオプロジェクトが完成したから、エクスポートして必要な形式で保存しよう。

動画のエクスポート


# 最終ビデオをファイルにエクスポート
final_clip.write_videofile("final_video.mp4", codec='libx264', bitrate='800k')
    

write_videofileメソッドを使って、ビデオプロジェクトをMP4形式で保存するよ。例えばlibx264のような適切なコーデックを選ぶことで、大半のデバイスでの互換性と良好な品質が得られるんだ。

次回のレクチャーでは、動画のエクスポートについてもっと詳しく学ぶよ。

ウェブやソーシャルメディア向けの最適化

ウェブやソーシャルメディア向けに動画を作成するときは、品質を保ちながらサイズを小さくすることが大切だよ。これは例えば、bitrateなどのパラメータを調整することで実現できる。アップロード先のプラットフォームに合わせて調整してね。

そして、動画が完成したよ!おめでとう、MoviePyを使って初めての映画を作ったね。ぜひソーシャルメディアで結果を共有して、友達や同僚からの反応を楽しんでね。ビデオの世界での冒険が成功しますように!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION