2020年3月11日水曜日

Python:OpenCVで動画再生時の各フレームの絶対時間を取得する方法

OpenCVで再生している動画(mp4など)に対して、「○時○分○秒の動画を再生したい」という時の各フレームの絶対時間を利用したい場合、そのフレームの絶対時間がわかればいいんですが、どうやら記録されていないようです。そこで、次のアプローチが考えられます。

再生開始時からの経過時間は取得できる
cv2.CAP_PROP_POS_MSECを利用することで、再生中のフレームの経過時間(相対時間)を取得できます。つまり、動画の再生開始の絶対時間さえわかれば、この時間をプラスすることで再生時間がわかります。

再生開始時間を取得するには
動画ファイルの保存時間が1つの手がかりになりますが、それは動画が終了した時の時間になります。ただ、経過時間はわかるわけですから逆算すれば求めることができるでしょう。ただし、ファイルのタイムスタンプは秒が最小ですので、ミリ秒単位での誤差(最大999ミリ)が生じます。

録画時に細工をする
もし、動画録画のアプリケーションに細工ができるなら、録画開始時間を記録しておくとよいでしょう。録画アプリケーションをOpenCV等を利用して作成して、各フレームの時間を記録することもできると思います。どちらがスマートかは As you likeで。。。。

0 件のコメント:

コメントを投稿