Python 3 + OpenCV を用いて動画の長さを取得する
1. はじめに
OpenCV は,画像解析や機械学習などの機能が実装されている FLOSS のライブラリです。C/C++ 以外にも,Java や Python など,様々なプログラミング言語向けのラッパーが開発,配布されています。また,OpenCV は画像だけでなく動画も操作することが出来ます。本記事は,Python 3 + OpenCV を用いて動画の長さを取得する手順について記述します。
また,本記事内で行っている作業は以下の環境下で実行したものです。Python や OpenCV はインストール済みの前提で記述しており,インストール手順は割愛していることをご了承ください。
- OpenCV Ver.4.4.0.46
- Python Ver.3.6.9
- Zorin OS 15 Core (Ubuntu 18.04 LTS)
2. 解析用動画準備
解析用の動画として,Pixabay で公開されている動画を活用します。Pixabay からダウンロードした動画を,任意のディレクトリに sample.mp4 として保存します。Mediainfo コマンドを用いて,ダウンロードした動画のメディア情報を取得すると,30 秒 15 ミリ秒の動画であることがわかります。
3. スクリプト
以下のスクリプトを,上記でダウンロードした動画と同じディレクトリ内に app.py というファイル名で保存します。OpenCV によって,動画のフレーム数 (8 行目) とフレームレート (9 行目) を取得するが出来ます。取得したフレーム数をフレームレートで割ることで,動画の長さ (秒) を取得することが出来ます。
4. 動作確認
上記で保存した app.py を実行します。秒数が表示されれば正常に動作しています。Mediainfo コマンドを用いた解析結果では,30 秒 15 ミリ秒でしたが,OpenCV を用いた解析結果では 30 秒と,ミリ秒以下が切り捨てられていることがわかります。そのため,OpenCV を用いて詳細な解析を行う際は注意が必要です。
5. おわりに
ここまで,Python 3 + OpenCV を用いて動画の長さを取得する手順について記述してきました。第 4 章でも述べた通り,OpenCV を用いた解析ではミリ秒以下が切り捨てられているため,OpenCV を用いて詳細な解析を行う際は注意が必要です。