lets5
@lets5

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PythonでのOpenCVを利用した動画ファイルの再生における再生速度について

Q&A

Closed

解決したいこと

PythonのバージョンはPython 3.10.7で、macを使用しています。

PythonでOpenCVを用いて動画ファイルを再生しようとしております。
その際に動画の再生速度を元の動画ファイル(fps30)にできるだけ合わせたいのですが、エラーを発生させずに再生はできるものの動画速度を合わせることができません。具体的にはかなり遅い速度で再生されます。
どなたか解決策を教えていただけると嬉しいです。

該当するソースコード

import cv2
import time

cap = cv2.VideoCapture('sample.mp4')

# fps
fps = 30
# キャプチャできなかったらエラー表示
if cap.isOpened()== False:
    print("Error!")

# 動画の再生
while cap.isOpened():

    # 次のフレームを読み込み
    ret, frame = cap.read()
    # 画像がなければ終了
    if not ret:
        break

    # 画像があれば表示
    if ret == True:
        # 画像の表示
        cv2.imshow('frame',frame)
        # (1/fps)秒一時停止
        time.sleep(1/fps)


        # Qキーで停止
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

cap.release()
cv2.destroyAllWindows()

自分で試したこと

調べていくうちにwhileの回転速度が速すぎることが原因ではないかと思い、上のコードではtime.sleepで調整しておりますが、うまくいっていません。
参考にさせていただいたWebサイトは多くあり、「opencv 再生速度」で検索したWebサイトはかなり拝見しました。再生速度に関しては特にこちらを参考にしました。
URL①:https://code-graffiti.com/opencv-using-video-files-in-python/
URL②:https://teratail.com/questions/477fwrr3lj61eg

0

1Answer

動画を画像にして別々に描画することの意義がよくわかりませんが。。。

ffmpegを使用することをおすすめします

動画に何かしら加工を施したいならimshowでなくmp4にwriteした後で確認されたほうが良いかと

1Like

Comments

  1. @lets5

    Questioner

    返信いただきありがとうございます!
    openCVで画像にして描画する以外の方法がわかっていなかったため、ffmpegについて調べてみます!

Your answer might help someone💌