テニスの試合動画を「プレー中だけ」に自動編集するツールを作りました
テニスの試合や練習をアクションカメラで定点撮影している方なら分かると思うのですが、撮りっぱなしの動画は「プレーしていない時間」が大半です。ボール拾い、サーブ待ち、コートチェンジ。2時間の動画を見返そうとすると、それだけで2時間かかってしまいます。
そこで、プレー中の区間だけを自動で判定して1本の動画にまとめるツールをPythonで作りました。
仕組み
定点カメラの映像であることを利用して、次の3つの条件がそろった区間を「プレー中」と判定しています。
- コートの奥側で人が動いている
- コートの手前側でも人が動いている(ラリー中は両方の選手が動きます。ボール拾いは片側だけなので除外されます)
- 近くで打球音が鳴っている
映像の判定だけだと「ボールを拾いに歩き回っている時間」もプレーと誤判定してしまうので、打球音を組み合わせたのがポイントです。逆に、サーブの瞬間はレシーバーがほぼ静止しているため、「短時間に打球音が続いたらプレーとみなす」救済ルールも入れています。
カットにはGPUエンコードを使っているので、処理は実時間よりずっと速く終わります。
結果
実際の試合動画(23ファイル・約128分・76GB)で試したところ、約66分の1本の動画になりました。ほぼ半分です。ファーストサーブのフォルトもちゃんと残っていて、見返すのがかなり楽になりました。
自分の動画振り返り用に作ったものですが、「定点撮影あるある」の悩みだと思うので、興味のある方はお問い合わせからお気軽にどうぞ。