TS packet 格闘日記

アニメを見ながら TS ときゃっきゃうふふするお仕事。 github: https://github.com/github-mec/mecenc twitter: https://twitter.com/mecenc

CM 検出案

現状のCMカットの流れ

 

  1. TS から音声を抽出。
  2. 音声から無音区間を抽出
  3. 無音区間が15 or 30秒間隔で2つ以上並んでいると CM 候補。5 or 60秒 CM は現状残念ながら無視
  4. CM 候補のシーン切り替わりを適当に検出
  5. シーンの切り替わりが適切な間隔で並んでいればそこが CM。

当然、映像はシーン切り替わりの時にしか見ていないからそんなに精度は高くない。2-3本30分アニメを処理するとそのうち1本は失敗している。主な失敗要因は以下。

 

シーン切り替わりを正確に検出するのが難しい

映像だけから判断すると、黒フレームで終わるシーンと黒フレームで始まるシーンの繋ぎ目を正確に判断するのは困難。他にもシーン冒頭で激しく動く映像があるとそこを繋ぎ目と誤判定してしまう。結果 CM を切り損なう。

次回予告や提供のシーンを間違って切ってしまう

これらのシーンは15秒であることが良くあり、結果現状のアルゴリズムだと誤判定する。

5秒 or 60秒の CM を切り損なう

対応してないから仕方ないね。対応するのは簡単だけど本編が誤爆で削除される可能性が高くなるのでどうしたものか。

音ズレ

一部のアニメの音がずれて CM 候補の列挙に失敗する。ある程度は対策したけど駄目なものもいくつか。

 

シーン切り替え判定以外ほとんど画像を参照していないけど、意外と本編の誤判定は少ない、というかほぼ無い。本編中に無音な場所ってほとんどないし、あってもシーン切り替わりよりは同じシーンで純粋に音が無いシリアスシーンだったりで、問題ないことが多い。

今後の方針

というかざっくりとした改善案。

  • ウォーターマーク(局ロゴ)があればそこは本編
  • "提供" の文字があればそこは本編、というか提供画面。局ごとにフォント固定?
  • シーン切り替わりの時刻を参照。製作の都合か1秒単位でアラインされているっぽい
  • ステレオ or モノラルって本編判定に使えるの?
  • シーン切り替え場所がインターレースしてると、その前後の少なくとも一方は本編?
  • シーン切り替えの検出方法の改善

局ロゴ検出は早く実装しろよって感じだけど。冬コミまでにどこまで実装できるんかいな。