シーン切り替え位置を再生バー上で確認し、すぐに移動できるようにしました
動画の中でシーンが切り替わる位置を見つけ、再生バーに表示するWindows用動画プレーヤーです。シーン切り替えはOpenCVのフレーム差分とVGG16の特徴距離の2つの方式で検出し、私はシーン検出を除くプレーヤー機能をすべて開発しました。
- 8つ詳細パネルで扱う機能
- 2つプレーヤーに接続したシーン検出方式
- 10%Ctrl+ホイール1回で狭まるタイムラインの範囲
再生バーの黄色いマーカーがシーンの切り替わる位置です。マーカーにマウスを重ねると、そのフレームをプレビューします。
- 担当する役割
- シーン切り替え検出アルゴリズムを除くプレーヤー機能をすべて開発しました。再生バーの分割位置表示とプレビュー、タイムラインの拡大、シーン移動、分割位置の編集と保存、ffmpegによる区間保存、メディア情報ウィンドウを作りました。
- 成果
- Pythonの検出結果をプレーヤーで受け取り、シーン切り替え位置を再生バーに表示して、プレビュー、移動、修正、区間保存まで1つの画面でできるようにしました。
- 1分割位置の表示検出されたフレームを再生バー上のマーカーで表示
- 2プレビューと移動マーカーにマウスを重ねるとそのフレームをプレビューし、クリックで移動
- 3タイムラインの拡大Ctrl+ホイールでマウス位置を中心に拡大、縮小
- 4編集と保存分割位置の追加と削除、メタ情報の保存、ffmpegによる区間保存
この技術によって期待される変化
長い動画もシーン単位で探索
前のシーン、次のシーンのボタンとバー上のマーカーで、目的のシーンにすぐ移動できます。
密集した位置も拡大して選ぶ
Ctrl+ホイールでマウス位置を中心にタイムラインを拡大するため、近接した分割位置も見分けて選べます。
自動検出の結果を人が手直し
誤って検出された位置は削除し、抜けた位置は追加して保存できるため、自動検出のあとの手作業による修正が1つの画面で続けられます。
問題と解決策
問題タイムラインを拡大したまま次のシーンに移ると、その位置が表示範囲の外に出てしまいました。
解決移動先の位置が範囲を外れる場合は、その位置より5秒広く範囲を広げて一緒に表示するようにしました。
問題OpenCVで区間を保存すると音声が抜けていました。
解決ffmpegで区間を切り出し、音声まで保存するようにしました。
問題プレーヤーはPythonの検出がいつ終わるのか分かりませんでした。
解決結果ファイルができたら位置を描画してボタンを有効にし、検出の実行中は新しい検出を止めるようにしました。
プレーヤー画面
シーン分割の実行、シーン移動、分割位置の編集、区間保存をこのパネルで行います。動画のコーデックや解像度などの情報も表示します。