
PythonでOpenCVを使うとプログラマの思い通りに、しかも簡単に動画を編集することができます。ここでは動画の再生速度を元よりもスローにしたり、高速にしたりといった調整を行う方法を紹介します。
こんにちは。wat(@watlablog)です。
動画編集は高価なソフトを使うのも良いですが、無料のPythonでも色々できます!ここではOpenCVを使って動画の速度を自由に変更する方法を紹介します!
動画の速度調整種類とその効果
スロー再生で重要な映像をゆっくり見せよう!
動画の速度は遅くするか速くするかの2種類の変更が可能です。
まずは動画の速度を遅くするスロー再生ですが、これは動画のFPS(Frames Per Second)という1秒当たりに表示させるフレームの枚数の設定を小さくすることで実現させます。
スロー再生させることで得られる効果は「じっくり見せる」という所にあります。
例えば野球のボールがバットに当たる瞬間、物が衝突する瞬間、風船が割れる瞬間…と通常の速度で撮影された動画では一瞬で終わってしまう現象をゆっくりじっくり見せることができます。
高速な現象をゆっくり見ることで、その時にどういう挙動をしていたかを確認することができるので、実験評価目的でも利用されることがよくありますね。
早送り再生で退屈なシーンを高速で飛ばそう!
次は早送り再生です。これは元の動画のFPSを大きくすることで実現させます。
単調な映像を早送り再生をすることで、「視聴者のストレスを軽減する効果」を出します。
他にも、変化の少ない現象をあえて高速で見せることで、変化の本質的な意味を捉えやすくする目的で早送りは使われたりします。
こちらも実験結果を評価する時に使われることはよくありますね。
それではスロー再生と早送り再生を実現する動画の作り方をPythonコードで説明していきます。
PythonでFPSを調整して動画を再保存するコード
サンプル動画
今回のプログラムで使用するサンプル動画を以下のYouTube動画に示します。
これは「Python/OpenCVでWebカメラ!撮影した動画を保存する」で紹介したWebカメラで撮影した動画です。
全コード
以下に動画を読み込み、FPSを調整して動画の再生速度を変更するプログラムの全コードを載せます。
関数の中身の基本は先ほど紹介したWebカメラの映像を保存する記事内のコードと似ています。fpsを元の動画から取得した後にfps_newと新しいフレームレートを指定して動画を保存している所が違いになります。
実行結果:スロー再生
「scale_factor = 0.1」とFPSにかけるスケールファクターを小さくしてみましょう。
こうすることで以下のようなスロー再生動画が生成されます。
元動画の1/10のスピードになりました!
実行結果:早送り再生
続いて、「scale_factor = 3」とFPSに3をかけてみましょう。
すると以下のような3倍速動画が生成されます。
思い通りのプログラムが出来た!
まとめ
本記事では動画速度をスローや早送りで再生する概要やコードを紹介しました。
コードの実行結果として1/10倍速や3倍速の動画が生成されることを確認し、自在に動画再生速度を変更できることがわかりました。
動画再生速度はFPSを変更することで簡単に変えられるね!
Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!
コメント