0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

動画内の「真っ黒な区間」を自動検出するHTMLツールを作りました

0
Posted at

動画をドラッグ&ドロップするだけで、動画内の真っ黒な区間を検出し、フレーム単位と時間単位で一覧表示するHTMLツールを作成しました。

公開ページはこちらです。

ブラウザでアクセスするだけで使用できます。

何ができるツールか

このツールでは、動画を読み込ませることで、動画内の黒画面区間を自動的に検出できます。

主な機能は以下です。

  • 動画をドラッグ&ドロップして解析
  • 複数動画をまとめて投入可能
  • 複数動画を順番に自動解析
  • 黒画面区間をフレーム単位で表示
  • 黒画面区間を時間で表示
  • 解析結果をCSV保存
  • 解析結果をコピー
  • 黒判定のしきい値を調整可能
  • 最小区間フレーム数を指定可能

表示例としては、以下のような形です。

解析中: 111 / 9,214 frames (1.2%) / 1/5本目 / sample.mp4

複数動画を投入した場合も、現在何本目を解析しているか分かるようにしています。

主な用途

主に、動画編集後の「リップル削除失敗」を検知する用途を想定しています。

動画編集をしていると、意図しない黒画面や空白区間が残ってしまうことがあります。

例えば、

  • カット編集後に一瞬だけ黒画面が残る
  • リップル削除したつもりが、空白区間が残っている
  • 複数の動画を書き出した後、目視確認するのが大変
  • 長時間動画の中に混ざった黒画面を探したい

といったケースです。

このツールを使うと、複数の動画をまとめてドラッグ&ドロップしておくだけで、順番に解析して黒画面区間を一覧化できます。

そのため、例えば帰宅前に複数動画を投入しておき、後から結果を確認する、という使い方ができます。

使い方

使い方はシンプルです。

  1. 下記URLにアクセスします

  1. 動画ファイルをドラッグ&ドロップします

複数ファイルをまとめてドラッグ&ドロップできます。

  1. 自動で順番に解析されます

複数動画を入れた場合、1本ずつ順番に解析されます。

  1. 結果を確認します

動画ごとの黒画面区間と、全動画をまとめた黒画面区間一覧が表示されます。

  1. 必要に応じてCSV保存します

結果はCSVとして保存できます。

表示される情報

黒画面区間ごとに、以下のような情報を表示します。

  • 対象動画
  • 区間番号
  • 開始フレーム
  • 終了フレーム
  • フレーム数
  • 開始時間
  • 終了時間
  • 区間の長さ

時間は以下のような形式で表示されます。

00:01:23.456

また、黒画面区間は以下のような形で表示されます。

開始フレーム: 120
終了フレーム: 180
開始時間: 00:00:04.000
終了時間: 00:00:06.000
長さ: 2.000 秒

調整できる項目

検出設定として、以下の項目を調整できます。

FPS

フレーム番号を計算するためのFPSです。

ブラウザだけでは動画の正確なFPSを常に取得できないため、元動画のFPSが分かっている場合は、ここに入力してください。

例えば30fpsの動画であれば、30を指定します。

解析サイズ

動画フレームを解析するときの縮小サイズです。

小さいほど高速になりますが、細かい判定はやや粗くなります。

通常は初期値のままで問題ないと思います。

黒判定しきい値

ピクセルの明るさがこの値以下の場合に「黒」とみなします。

完全な黒なら低めでも検出できますが、動画圧縮の影響で少し明るい黒になっている場合は、値を少し上げると検出しやすくなります。

黒ピクセル率

1フレーム内の何%以上が黒なら、そのフレームを黒画面と判定するかを指定します。

例えば98%なら、画面の98%以上が黒い場合に黒フレームとして扱います。

最小区間フレーム数

何フレーム以上連続した黒画面を検出対象にするかを指定します。

一瞬だけの黒フレームを無視したい場合は、この値を大きくします。

注意点

このツールはブラウザ上で機械的に動画フレームを解析して、黒画面らしい区間を検出しています。

そのため、申し訳ありませんが、確実に検知できることを保証することはできません。

例えば、以下のような場合は検出結果が期待通りにならない可能性があります。

  • 動画の圧縮ノイズで黒が完全な黒ではない場合
  • 画面の一部に字幕やロゴなどが残っている場合
  • フェードイン、フェードアウトの途中をどう扱うか微妙な場合
  • 元動画のFPSと入力したFPSがずれている場合
  • ブラウザがその動画形式を正しく再生できない場合

最終的な確認は、必要に応じて動画編集ソフトなどでも行ってください。

セキュリティ面が気になる場合

公開ページはこちらです。

ブラウザでアクセスすることで使用できます。

ただ、Webページ上で動画を扱うため、「情報を抜くような処理が入っていないか怖い」という方もいると思います。

その場合は、下記のGitHubページからHTMLをダウンロードして、ローカル環境で開いて使用してください。

HTML単体で動くようにしているため、ダウンロードしてブラウザで開くだけでも使用できます。

また、あまりおすすめする方法ではありませんが、時間をかけたくない場合は、HTMLコードをAIに投げて、

このHTMLに、情報を外部に送信する処理や、ウイルス的な怪しい処理が含まれていないか確認してください。

のように聞いてから使うこともできます。

もちろん、AIによる確認も完全ではありませんが、ざっくり不安な処理が含まれていないか確認する用途には使えると思います。

ブラウザだけで動作します

このツールは、基本的にブラウザ上で完結するHTMLツールです。

動画を読み込み、canvasにフレームを描画し、そのピクセル情報を見て黒画面かどうかを判定しています。

大まかな処理の流れは以下です。

動画を読み込む
↓
指定FPSに基づいてフレーム位置へシーク
↓
canvasに現在フレームを描画
↓
ピクセルの明るさを確認
↓
黒ピクセル率が指定値以上なら黒フレームと判定
↓
連続した黒フレームを区間としてまとめる
↓
フレーム番号と時間を一覧表示

サーバー側で動画を解析する仕組みではなく、ブラウザ側で処理しています。

複数動画を放置解析できるようにした理由

最初は1本ずつ動画を解析する想定でした。

ただ、実際に使う場面を考えると、リップル削除失敗の確認は複数動画に対してまとめて行いたいことが多いです。

1本解析して、終わったら次の動画を入れて、また解析して……という使い方だと手間がかかります。

そこで、複数動画をまとめてドラッグ&ドロップできるようにし、順番に自動解析する形にしました。

これにより、

  • 寝る前に複数動画を投入
  • 外出前に複数動画を投入
  • 帰宅後に結果だけ確認

といった使い方ができます。

まとめ

動画内の黒画面区間を、フレーム単位・時間単位で検出するHTMLツールを作成しました。

主な想定用途は、動画編集後のリップル削除失敗や、意図しない黒画面区間の検出です。

公開ページはこちらです。

ソースを確認したい方や、ローカルで使いたい方はこちらから確認できます。

機械的な判定のため、確実な検出を保証するものではありませんが、複数動画をまとめて確認したい場合の補助ツールとして使えると思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?