Python

【コピペOK】PythonでOpenCVを使って動画の速度を変更する方法【編集の手間から卒業しよう】

【コピペOK】PythonでOpenCVを使って動画の速度を変更する方法【編集の手間から卒業しよう】

こんにちは、さすを(@sasuwo0409)です。

いきなりですが、

動画の速度を変更したいけど、いちいちアプリを使うのはめんどくさい

もっと楽に動画の速度を変えたい

と思ったことはありませんか?

僕はよく思います。(笑)

今回の記事は、そんな悩みを解決するPythonでOpenCVを使って動画の速度を変更する方法を紹介していきます。

それでは本文をどうぞ。

困っている女性
困っている女性

動画の速度を変更したいんだけど、いちいちアプリをつかうのめんどうなんだよなあ。

もっと簡単に動画の速度をかえられないかな。

あと、自動で変更できたら最高なのになあ。

さすを
さすを

これらの悩みを解決します!

この記事を読むとわかること:

PythonのOpenCVを使って動画の速度を変更する方法

筆者の情報:

  • 現役システムエンジニア 兼 副業ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっていることは朝からスタバに行くこと

注意:

  • Windowsをもとに説明しています。Macの方は、多少操作感が違うと思いますが、ご承知ください。
  • 万が一失敗しても大丈夫なように、オリジナルのファイルは別に保存しておくことをおすすめします。
さすを
さすを

Pythonのインストール・OpenCVのインストールが終わっていない方は、まずは以下のサイトからインストールをおこなってください!

Pythonのインストール:

Windowsの方:
>>【Windows版】Pythonのインストール方法【画像を使ってわかりやすく解説】

Macの方:
>>MacにPythonをインストールする3つの方法!それぞれの利点と手順を紹介

OpenCVのインストール:

>>【これだけ知っておけばOKです】 現役エンジニアもよく使う便利なPythonライブラリ22選

注意:OpenCVを使って動画速度を変更すると、音が消えてしまいます。
音を残したまま動画を遅くしたいという方は、【音も消えません!】Pythonを使って動画速度を遅くする方法の記事をご覧ください。

スポンサーリンク

1.PythonでOpenCVを使って動画の速度を変更する方法

1.PythonのOpenCVを使って動画の速度を変更する方法

まずはじめに、今回のフォルダ構成、ファイルは以下の通りです。

編集する動画のフォルダ構成(1)
編集する動画のフォルダ構成(1)
フォルダのパスC:\Users\Sasuwo\Desktop\dance_example
ファイル名ダンス1回目.MOV
ダンス2回目.MOV
編集する動画のフォルダ構成(2)


スクリプトのフォルダ構成(1)
スクリプトのフォルダ構成(1)
フォルダのパスC:\Users\Saswo\Desktop\Python\opencv
フォルダ名bin
cv2
numpy
numpy-1.20.3.dist-info
opencv_python-4.5.2.52.dist-info
ファイル名change_video_speed.py
スクリプトのフォルダ構成(2)

スクリプトのフォルダ構成は、後述する「change_video_speed.py」以外は、OpenCVをインストールすると自動的に入ります。

さすを
さすを

フォルダ名は、フォルダを開いてフォルダ名が書かれているボックスをクリックすればでてくるので、コピー&ペーストで使っていきましょう!

フォルダ名の探し方
フォルダ名の探し方

そして、動画の速度を変更を行うPythonのスクリプトはこちらです。

change_video_speed.py:

import os
import cv2
import time

start = time.time()

def video_speed_change(path_in, path_out, scale_factor, color_flag):
    # 動画読み込みの設定
    movie = cv2.VideoCapture(path_in)

    # 動画ファイル保存用の設定
    # 元動画のFPSを取得
    fps = int(movie.get(cv2.CAP_PROP_FPS))

    # 動画保存時のFPSはスケールファクタをかける
    fps_new = int(fps * scale_factor)

    # 動画の横幅を取得
    width = int(movie.get(cv2.CAP_PROP_FRAME_WIDTH))

    # 動画の縦幅を取得
    height = int(movie.get(cv2.CAP_PROP_FRAME_HEIGHT))

    # 動画保存時のfourcc設定(mp4用)
    fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')

    # 動画の仕様(ファイル名、fourcc, FPS, サイズ)
    video = cv2.VideoWriter(path_out, fourcc, fps_new, (width, height), color_flag)  

    # ファイルからフレームを1枚ずつ取得して動画処理後に保存する
    while True:
        # フレームを取得
        ret, frame = movie.read()        

        # 動画を保存する
        video.write(frame)

        # フレームが取得できない場合はループを抜ける
        if not ret:
            break

    # 撮影用オブジェクトとウィンドウの解放
    movie.release()
    return

#読み込みたいフォルダまで移動
path = "C:\\Users\\Yumiko\\Desktop\\dance_example"
    
#ファイル一覧取得
files = os.listdir(path)

for change_speed in files:
    path_in = path + "\\" + change_speed

    # 保存する動画のパス
    path_out = path + "\\" + change_speed + "スロー版.mp4"

    # FPSにかけるスケールファクター
    scale_factor = 0.6

    # カラー動画はTrue, グレースケール動画はFalse
    color_flag = True               

    # 動画の再生速度を変更する関数を実行
    video_speed_change(path_in, path_out, scale_factor, color_flag)

total = time.time() - start

print("処理が完了しました。")
print("処理時間:" + str(total) + "[sec]")
  • FPS:1秒間の動画が何枚の画像で構成されているかを示すの単位。
    Frames Per Secondの略で、フレームレートともいう。
  • スケールファクタ:速度変更の倍率。
  • フレーム:動画のもとになる静止画像の1コマ1コマ。
さすを
さすを

今回は、動画の速度を0.6倍に設定しました!

実行結果:

実行画面
実行画面
実行結果

実際に速度を確認してみると、きちんと遅くなっていることが確認できます。

動画速度の比較
動画速度の比較
さすを
さすを

速度を早くしたい場合は、「scale_factor」を1より大きくすればOKです!

2.Pythonスキルを伸ばす方法とは?

2-1.独学編

Pythonスキルを独学で身に着けるためには、参考書が必須です。

おすすめのPython書籍を以下の記事で解説したので、参考にしていただけたらと思います。

>>【レベル別&徹底解説】 Python書籍のおすすめ8選

本を買う前に、一度Pythonの学習をしてみたいという方は、Pythonを学べるおすすめ学習サイトを以下の記事で解説したので、こちらも参考にしてみてください。

>>【料金別&徹底解説】 Pythonおすすめ勉強サイト8選【楽しく学ぼう】

2-2.スクール編

お金がかかってもいいから、少しでも早くPythonスキルを身につけたい方は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。

エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。

本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

3.おわりに

3.おわりに

6,000万のPython案件に携わった経験のある筆者が、PythonのOpenCVを使って動画の速度を変更する方法を紹介してきました。

今日から動画の速度変更は自動でやってもらい、その間の時間で好きなことをしちゃいましょう!

自動化ができるようになると、使える時間を大幅に増やすことができます。

この記事が少しでもあなたの役に立てていたらうれしいです。

頑張るあなたを応援しています!

それでは!

>>【無料】Pythonでできること9選【初心者でも稼げます】

>>【初心者向け】Python学習の始め方【現役エンジニアがわかりやすく解説】

>>【徹底解説】Pythonエンジニアに転職する方法【失敗しない方法を詳しく解説】

>>【画像を使ってわかりやすく解説!】Pythonを使って自動でメール送信する方法【gmail編】

コメント

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