やりたいこと
複数のアニメ素材を曲の拍に合わせて切り替えて、お手軽AMVを自動生成したい。
構想
- 使いたい動画ファイルを選ぶ(指定のフォルダに入れておく?)
- 曲の尺とBPMを入力
- 何拍で動画を切り替えるか入力
- 素材の再生速度を入力
- 動画ファイルを書き出し
AviUtlを使ってエフェクト類も自動でなんかしらできたらいいなって思う。
開発環境
PCになにも入っていないので脳死で
Visual Studio Codeをインストール。
Pythonもインストール。
Moviepyってライブラリで動画を切ったり繋げたりできるらしい。
コーディング(仮)
モジュール類
Moviepyの公式ドキュメントの例文見ながら見様見真似で
from moviepy.editor import * ##動画を切ったり繋いだりするmoviepy
import random ##動画をどこから切り取るかをランダムに指定するためのrandom
import glob ##素材フォルダの動画ファイルを取得するために
変数
length = 90 #秒
BPM = 174
beats = 0.5
素材ファイル名を取得
file_path = "sozai.mp4"
sozai = VideoFileClip(file_path)
動画を切り刻む
tstart = random.randint(0,85) #素材の長さを取得して変数にする
div1 = sozai.subclip(tstart,tstart+(60/BPM*beats)) #1カットの長さ
loops = int((BPM/beats)/60*length+1) #何回繰り返したらlengthで指定した長さになるか
切り刻んだ動画を後ろにくっつけていく
div2 = sozai.subclip(tstart,tstart+(60/BPM*beats)) #もう一個同じように刻んで
div1 = concatenate_videoclips([div1,div2]) #後ろにくっつける
これをloops回繰り返して任意の尺にしていく
書き出し
final_clip.write_videofile(
"result.mp4",
codec='libx264',
audio_codec='aac',
temp_audiofile='temp-audio.m4a',
remove_temp=True
)
設定項目が多くてなんだかよくわからなかったのでココのをコピペ
終わりに
どれだけ調べてもわからないことが今後出てこないことを願うばかり。
今後どっかしらで躓いたとき、解決に役立ったページのリンクは
問題とセットでどっかにまとめておきたい。
コメント