貧者のcomskip (2) - CMの断片をかき集める

ffmpegのフィルターでほぼシーンを分割することに成功したが、ややオーバキルなことには触れた。断片をかき集めることに諦めて止めたことにも触れた。でもやっぱり止めたん止めた。短い断片のシーンチェンジ率が跳ね上がってあまり宜しくなかったのだ。仕方がない。

CMは概ね15秒、30秒、60秒、120秒の長さが有るようだ。5秒とかは番宣。で、15秒のCMの長さの分布を取ってみると、3σで0.08455329秒だった。つまり長さtは、99.97%の確率で、14.91544671 < t < 15.08455329であるということだ。2フレームちょいの誤差が有るということだ。

で、隣り合う15秒より短い断片をいくつか足しあわせて、上の条件に合うものを併合すれば良いような気がする。前回の手続きを下のように改訂する。

  1. 無音部分の開始時間と終了時間を取得する
  2. シーンチェンジの時間を取得する
  3. シーンチェンジが無音期間中だったらこれを編集点とする
  4. 15秒より短い断片を検査し、併合する
  5. 30秒より短い断片を併合するが、断片の併合で生じた断片は対象外とする
  6. 60秒より短い断片を併合するが、断片の併合で生じた断片は対象外とする
  7. 加えて、編集点と編集点の間のシーンチェンジの回数を数え、編集点の時間間隔で割り算しこれをシーンチェンジ率とする


上の方法でアニメ8話分のデータをとってみた。楽勝っぽいやろ。多分同じ番組だったら楽勝だな。自前のパーセプトロンマシンがそう語っておる。というか、この例に限れば、ldaもqdaもsvmも要らない。それぞれにしきい値を与えれば済む。もう少し凝って、上に開いた放物線を書いてしきい値としてもうまく行くだろう。


要するに、

  • 本編のシーンチェンジは、10秒に1回前後
  • 本編が長くなるに連れてシーンチェンジ率は値に幅が出てくる
  • 本編に比べCMは高いシーンチェンジ率を持つ


ということだ。そらそうだわな、金払って15秒しか無いのに言いたいことはたくさん有るとき、シーンの繋ぎは増えるわな。本編は番組のテンポっつうものが支配しているが、緩急もつけまっせつうことか。