Last updated on

【WoLNamesBlackedOut】FF14の動画やSSからユーザー名を隠すアプリのWindows版をリリースしました!


FF14の動画やスクショからユーザー名を消したい!

FFXIV(Final Fantasy XIV)のMP4動画やスクショからユーザー名を黒塗りするソフトウェアです。
"WoLNamesBlackedOut"という名前にしています。

下は真ラムウのデモ動画です。モザイク、ブラーを利用しています。

「FF14のおもしろプレイや上手にできたプレイの動画をyoutubeとかにアップしたいけど、そこには他の人も映り込んでいるので、プライバシーとかを考えるとちょっと気軽には公開できないんだよねー」
という問題に対応するため、つくりました。
最初からゲーム内の表示をイニシャルにしていれば、このような問題は起こりませんが、それでは相手に呼び掛ける際に名前がわからずコミュニケーションを取りにくいという問題が発生します。
ゲーム内ではフルネームで、でもyoutubeでは匿名に、という私のわがままなニーズから生まれたアプリになります。

物体検出AIを利用してゲーム動画からキャラクター名を検出し、その部分を自動的に黒塗りやモザイク処理をします。
主にバトル動画での利用を想定していますが、街中などでもある程度は対応していると思います。

TensorRT-RTXを利用できる、NVIDIA Geforce RTX 3050以上を推奨ですが、DirectX12を利用したDirectMLにも対応しており、Geforce 1000シリーズや、AMD Radeon、Intel arcなどにも対応しています。
処理に必要なGPUメモリは6GBあれば十分です。(4GB程度のはず)
処理速度は当方の環境でTensorRT-RTX利用時、最大105FPSでした。
元の動画が60FPSであれば、半分倍程度の処理時間が必要ということになります。

動画の読み込みや書き出しにはffmpegを利用しており、GPUのハードウェアエンコーダ/デコーダを利用しています。
HEVC動画のハードウェアサポートが必要なため、外付けGPUが必要ですが、FF14をプレイしているパソコンであれば問題なく動作いたします。
ノートパソコンなどの統合GPUでは、intel11世代以降であれば動作すると思います。

ダウンロードはMicrosoftストアから。

GitHubはこのあたりに。

従来のPython版との違いについて

従来はPythonをPyinstallerというソフトを使ってWindowsのexeにしていましたが、今回はWindowsネイティブ対応するため、C#、C++でつくり直しています。
つくり直したことで、次のことが実現できました!

  • Microsoftストアからの配信で出所の不明なアプリの警告なし!
  • Microsoftストアからの配信で自動アップデート。たぶん差分アップデートにも対応。
  • アプリの起動が早い!
  • mp4動画だけでなくjpg、pngの静止画にも対応!
  • プレビュー画質が動画処理時と同じ!
  • プレビュー画像を保存できる!
  • UIポチポチしまくっても応答がなくならない!
  • 物体検出なしで固定枠塗りだけだとかなり早い!
  • 固定枠の場所が操作時によくわかる。固定枠の色も都度それらしく対応!
  • ブラーぼかし、モザイクぶかしに対応。
  • 従来と同様にinpaintingによる透明風処理対応!
  • TensorRT-RTX対応でGeForceで待ち時間なく高速処理が可能!
  • DirectML採用でAMD Radeon、Intel arcにも対応!
  • nvidiaではNVENCハードウェアエンコーダを利用した高速処理!
  • RadeonではAMF、IntelではQSVのハードウェアエンコーダを利用した高速処理!
  • 入力テンソル形状の見直しを行い処理速度が向上!
  • アプリのUIを、ダークテーマ、ライトテーマに切り替え可能!
  • HDR動画の処理も対応!
  • TensorRT-RTX対応によりファイルサイズを大幅に削減!
  • アプリのUI背景にマイカを適用!
  • X(Twitter)に投稿しやすい動画出力にも対応!
  • 好きなcopyright画像を利用できる!
  • 日本語UI対応!

    環境

    SDR動画

    備考

    CPU:Intel 11400F
    GPU:Geforce RTX 4700TiS

    105FPS
    (2.0.3.0)

    TensorRT-RTX
    (Geforce3050以上専用)

    CPU:CoreUltra9 285K
    GPU:RX7800XT
    (ユーザー様より)

    56FPS
    (2.0.3.0)

    DirectML
    (DirectX12 GPU)

 

処理前後のサンプル動画

処理前:

処理後:

上記の動画では青魔道士ばかりですが、ジョブ問わず消してくれるはずです。

 

"WoLNamesBlackedOut"の使い方

アプリ全体

メニュー部分のみ

ざっくりした操作流れ

  1. 処理したい動画ファイルと、保存するファイル名を設定し、
  2. Previewで、処理イメージを確認。
    塗りの色やコピーライトなどを設定、確認ください。
    アプリ画面右側のプレビューで画面内で左クリックでドラッグすると固定枠を作成します。右クリックで固定枠を全て解除します。
    操作感はこちらをご確認ください。→https://youtu.be/87_rSwgOZ7Q
  3. この設定で良いなと思ったら、BlackedOut Startで動画の処理開始。
  4. 動画完成まで気長に待ちましょう。

メニューボタン説明

  • ファイルを開く(Open_File)
    処理するファイルを開きます。動画はmp4、静止画はjpg、pngに対応しています。
    なお、ファイルをウィンドウにドラッグアンドドロップすることでもファイルを開くことができます。
  • BlackedOutタイプ(BlackedOut_Type)
    名前の塗りつぶし方を選択できます。
     Solid:単色塗りつぶし
     Mosaic:モザイク
     Blur:ぼかし
     Inpaint:周辺の色から埋めて透明風処理
     No_Inference:名前検出処理しない
    モザイク、ぼかし、inpaintの場合、処理加減を多少調整可能なスライダーが表示されます。
  • 固定マスクタイプ(FixedFlame_Type)
    固定枠の塗りつぶし方を選択できます。Solid:単色塗りつぶし、Mosaic:モザイク、Blur:ぼかし
    モザイク、ぼかしの場合、処理加減を多少調整可能なスライダーが表示されます。
  • BlackedOutカラー(BlackedOut_color)
    名前を塗りつぶす色を選択します。アイコンが塗りつぶし色となっています。
  • 固定マスクカラー(FixedFlame_color)
    固定枠を塗りつぶす色を選択します。チャット欄などでの利用を想定しています。アイコンが塗りつぶし色となっています。
  • YOLO しきい値(YOLO Threshold)
    名前検出のしきい値をスライダー変更。低い方がよりたくさん検知します。
  • Copyrightを画像を追加(Add_Copyright)
    © SQUARE ENIXを画像に埋め込みます。
    隣のボタンでデフォルトのcopyright画像の代わりに自分の好きな画像を貼り付けられます。
  • 名前で対象外を有効化(Enable Exclude by Name)
    OCRをして名前でマスク対象外機能の有効/無効を選択します。
  • 対象外名設定(Exclude Names Settings...)
    対象外設定の詳細設定画面に飛びます。
    OCR用拡張ピクセル数(OCR Expand Pixels):OCR用に検出域を何ピクセル拡大して渡すか
    フレームごとのOCR最大ROI数(Max OCR ROIs per Frame):フレームごとのOCR処理件数
    テキスト類似度(Text Similarity ):対象外文字列の類似度
    対象外テキスト(カンマ区切り)(Exclude Texts (comma-separated)):対象外文字列の設定。カンマ区切りで複数設定可能
  • クロップを有効にする
    クロップを操作できるようになります。
  • 上(px)、左(px)、右(px)、下(px)
    クロップする範囲です。プレビュー画面で境界をドラッグすることでも設定できます。
  • 開始(分)、開始(秒)、終了(分)、終了(秒)(Start_Min、Start_Sec、End_Min、End_Sec)
    動画の処理を行う開始時刻、終了時刻を時分で設定します。
  • ビットレート(Mbps)(Bitrate(Mbps))
    動画出力のビットレートを設定します。
  • BlackedOut Start
    動画に対して名前の検出・塗りつぶしや、固定枠の塗りつぶしなどを実施します。
    処理完了後、ファイル保存の画面が表示されます。
  • ForX(Twitter)
    X(Twitter)に適した形式で動画を出力します。
    具体的には横1280px、30FPS、H264での出力になります。
    動画の長さが140秒以内の時に設定可能です。
  • 音声なし(No Audio)
    動画出力に音声をいれたくない時はチェックする。
  • 処理中プレビュー
    チェックを入れると動画処理中にその時の処理結果がプレビューに表示されます。ただ画像転送がされるのでちょっと重いです。
  • 間隔(秒)
    処理中のプレビューを取得する間隔です。
  • 経過(Eraped)
    動画処理の経過時間(秒)
  • FPS
    動画処理のスピード。フレーム/秒
  • 残り(ETA)
    動画処理が終了するまでの推定時間(秒)
  • デバッグログを出力(Export Debug Log)
    出力など処理をテキストログに書き出します。
    書き出しで処理が重くなるので普段は設定しない方がいいです。
    アプリ再起動後から有効。
  • 日本語UI(JapaneseUI)
    UIを日本語にするかどうか。
    アプリ再起動後から有効
  • ライセンス(License)
    ライセンスの表記
  • WoLNamesBlackedOutについて(About WoLNamesBlackedOut)
    アプリについての表記
  • 画像保存(Save Image)
    現在のプレビューを保存します。プレビュー実行直後のみ有効。
  • テーマ変更(Change theme)
    ウィンドウのライトテーマ、ダークテーマを切り替えます。

プレビュー画像での操作について

  • Previewバー
    動画の場合、Preview処理をする箇所を選択します。単位は秒です。
  • 開始位置に設定、終了位置に設定( Set to Start、 Set to End)
    スライダーの位置を動画処理の開始位置、終了位置に設定します。

プレビュー画像の上で、次の操作が可能です。

  • 左クリック:固定マスクの配置
  • 右クリック:固定マスクをすべて解除
  • ホイール:プレビューの拡大縮小
  • ホイールドラッグ:プレビューのパン
  • CTRL+左ドラッグ:Copyright画像の移動
  • CTRL+マウスホイール:Copylight画像の拡大縮小

既知の不具合

  • 特にありません。

"WoLNamesBlackedOut"利用上のTIPS

  • インスタントリプレイなど他のアプリでnvencが利用されていると、うまくffmpegが動かないことがあるようです。正しく動画処理ができない時には、他のアプリでnvencが動いていないか確認してください。

今後、実装したいこと

あくまでやりたいことで、できないかもしれません。
思いついた順に書いているので、特に要望なければ私のやりたい順で実装トライになります。

  • copyrightと似た、自由文字列追加機能
  • 検出した名前の区別(パーティリスト、チャット欄、フィールドなど)
  • 区別して検出した名前ごとに処理を選択
  • FF14をキャプチャ、物体検出し、仮想カメラに出力(OBS対応として) 

名前の検出精度について

「このパターン、必ずと言ってもいいほど消えないんだよねー」
とか
「チラチラしたり、たまに検出が漏れたりするなー」
というものがあれば、パターンを教えていただければ、対応できるかもしれません。
動画そのものか、動画から切り出した動画と同じ解像度の画像を5枚程度頂けるととても助かります。
学習データの作成は半自動化ができており、従来より比較的容易に作成できるようになりました。
ファイル送信は、例えば下記のようなサービスを利用して送付、ご連絡ください。
よろしくお願いいたします。

 

本アプリに関するお問い合わせ

ツイッター、ブログお問い合わせフォームなどでご連絡いただけると助かります。

https://x.com/calcMCalcm

 

謝辞

C++ ONNXでの物体検出には、soramimi様のコードを利用させて頂きました。
ありがとうございました。

C++ TensorRTでの物体検出には、杨晨様のコードを利用させて頂きました。
ありがとうございました。
https://cyberyang.com/inference/34.html

 


更新履歴

2.0.8.0:2026/08/16
・dGPUを優先的に選択するように修正しました。

2.0.7.0:2026/08/15
・クロップ機能を追加しました。
・静止画を読み込んだ際、動作が適切でない不具合を修正しました。
・プレビューのスライドバーやボタンをプレビューの下に移動しました。

2.0.6.0:2026/08/14
・プレビュー画面で拡大縮小やパンができるように改修しました。
・動画出力中に定期的にプレビュー画面に処理状況を表示することができるようになりました。
・動画のアスペクト比が16:9ではない時、copyrightがプレビューと動画出力でずれてしまう不具合を修正しました。
・ffmpegのビルドを変更しました。

2.0.4.0:2026/08/13
・動画の長さを間違って取得していた不具合を修正
・FFmpegをLGPLでビルドし直し、組み込み
・プレビューでもWindowsML関係の動きがわかるように修正

2.0.3.0:2026/08/12
・dll同梱忘れのため更新

2.0.2.0:2026/08/11
・GPU内で全ての処理を実施するためパフォーマンスが大幅に改善しました。
・WindowsML対応により、ファイルサイズが削減され、また各PCに適した高性能な推論を実現しました。それに伴いTensorRT-RTX固有の機能を削除しました。
・従来は動画処理後に音声を付加していましたが、映像出力時に音声も同時に付加するように変更しました。
・Copyrightの位置、大きさを調整できるようになりました。また各PCで独自のCopyrightをアップロードできるようになりました。
・プレビューのスライドバーを動かすことで、すぐに処理結果がプレビューに反映されるようになりました。また現在のスライドバーの位置を動画の開始、終了に簡単に設定できるようになりました。
・AI-OCR機能で、指定した名前はマスクをしないという設定が可能になりました。コンマ区切りで複数名設定できます。
・検出モデルの更新を行いました。また検出のしきい値を変更可能としました。
・UIを日本語に対応しました。従来の英語も選択可能です。
・サポートができるようにデバッグログを出力するモードを追加しました。
・GPU内処理対応のため、inpaintの処理が従来版と異なります。
・音声なし出力を可能としました。

1.6.5.0:2026/03/17
・DirectMLでの処理を改善しました。TensorRT-RTXよりも速くなりました。

1.6.4.0:2026/03/16
・不正に終了する不具合を修正しました。

1.6.3.0:2026/03/14
・動画出力時、まれに再生できないファイルを作成する問題を修正しました。
・Radeonを利用している時、ForXの出力ができない問題を修正しました。
・ForXで推定終了時間や進捗バーが正しく表示されない問題を修正しました。
・TensorRT-RTXでまれにキャンセルできない問題を修正しました。

1.6.2.0:2026/03/04
・ForXの対象となる2分20秒の計算に誤りがあった点を修正しました。
・TensorRT-RTXでの処理において、スレッド化をinpaint処理だけとし、他の塗り処理を従来の形に戻しました。
・ファイル保存時、タイムスタンプをつけたファイル名を提案するように変更しました。
・不要な内部コピーを減らし処理効率が改善しました。
・ONNXRUNTIMEなどのパッケージを整理、更新しました。

1.6.1.0:2026/02/06
・DirectMLでの処理においてキャンセルできない不具合を修正しました。
・DirectMLでの矩形描画処理を改善しました。FPSが改善しています。
・TensorRT-RTXでの矩形描画処理を並列化しました。特にinpaintにて大幅にFPSが改善しています。

1.6.0.0:2026/02/02
・X(Twitter)に投稿できる動画を出力できる設定を追加しました。140秒以内に設定した動画のみ設定可能です。
・プレビューエリアを縮小した状態から起動するようにしました。
・稀に動画が出力されているものの再生できない不具合に対策をしました。
・×ボタンを押しても無反応なことがある不具合を修正しました。
・物体検出モデルをyolov8からyolo26にしました。検出精度が向上し誤検知が減っている気がします。

1.5.2.0:2025/12/22
・TensorRT-RTX1.3に対応しました。
・GPUにハードウェアエンコーダ/デコーダが無い場合でも静止画の処理は実施できるようにしました。(動画はできない)
・DirectMLのGPUでの初期化に失敗した場合、CPUでの処理とするように変更しました。

1.5.1.0:2025/11/17
・TensorRT-RTX1.2に対応し、処理速度が改善しました。

1.5.0.0:2025/10/27
・TensorRT-RTX1.1に対応しました。
・TensorRT-RTX対応により圧縮時のファイルサイズが3.7GBから700MBに削減されました。
・OPENCV4.13を自前でビルドしたことで処理速度が改善しました。
・楽天アフィリエイトの広告をやめました。代わりに寄付を募っています。よろしくおねがいします。
・名前の検出モデルを更新しました。相手がいるエモートなどでも黒塗りしやすくなっていると思います。
・FFmpegを8.0に更新しました。
・起動時、ウィンドウサイズを指定して起動するように変更しました。
・UI背景にマイカを適用しました。
・UIレイアウトを調整しました。

1.4.12.0:2025/07/22
・AMD Radeon GPUを利用している時、ffmpegのオプション指示が間違っており正常に動作しませんでした。オプション指示を修正しRadeon環境でも正常動作するように致しました。
・ウィンドウにファイルをドラッグアンドドロップすることでファイルを開けるようにしました。

1.4.10.0:2025/07/19
・ffmpegの不要なオプション指定をなくしました。
・処理する動画に音声がない場合でも正常に処理できるように修正しました。

1.4.9.0:2025/07/18
・AMD Radeon GPUを利用している時、動画と音声の結合が正しく動作しない不具合について対策を行いました。
・ビットレートを変更しても動画では変更されない不具合を修正しました。(下げる場合のみ有効になってました)

1.4.8.0:2025/07/01
・不具合対策として待機時間を長くしていたところを従来相当に戻しました。
・cuda toolkitを12.9に更新しました。
・NuGet ONNXパッケージを1.22に更新しました。
・ライセンス表記に漏れていたUltralyticsを追記しました。

1.4.7.0:2025/06/20
・アプリで作成する一時ファイルをアプリ終了時に削除するようにしました。
・Discordへのリンクを追加しました
・動画処理の終了条件の1つであるデータ待ち時間を30秒として、長く待つようにしました。暫定処置で次回のアップデートで元に戻します。

1.4.6.0:2025/06/18
・環境によって、動画が最後まで処理が進まず途中で保存画面が出て保存したら保存エラーになる、という不具合の対策として、動画書き出し中は処理が終了しないように修正しました。
・キャンセルがすぐに反映されるようになりました。
・その他動作には影響のない細かなコードの修正

1.4.5.0:2025/06/17
環境によって、動画が最後まで処理が進まず途中で保存画面が出て保存したら保存エラーになる、という不具合の対策として、動画の書き出し処理を修正しました。

1.4.4.0:2025/06/16
環境によって、動画が最後まで処理が進まず途中で保存画面が出て保存したら保存エラーになる、という不具合の対策として、
・フレームバッファーを100 → 500 に増加しました。
・動画処理の終了条件の1つであるデータ待ち時間を0.2秒から2秒にし、少し長く待つようにしました。

1.4.3.0:2025/06/09
ffmpegのオプションを修正し、色空間がbt709以外のSDR動画の時、出力される動画が薄暗くならないようにしました。

1.4.2.0:2025/06/05
・最大化、最小化、閉じるボタンもテーマ切り替えに追従するようにしました。
・ファイルオープン、プレビュー、動画処理のボタンをアクセントカラーに変更しました。

1.4.1.0:2025/06/03
ウィンドウのライトテーマ、ダークテーマ切り替えを実装しました。
但し標準の最大化、最小化、閉じるボタンはWindowsのシステムと同じテーマのままで変更されません。

1.4.0.0:2025/05/26
・動画コーデックAV1の動画において検出精度向上を目的にモデルの更新を行いました。
・TensorRTを10.11に更新しました。geforce50xxで性能改善するかもしれません。
・動画出力時、ビットレートを指定できるようになりました。
・動画処理時、現在の処理内容を表示するようになりました。
・今回のようにTensorRT.engineファイルの更新が必要な場合、古いengineファイルを削除するようになりました。
・ファイル未選択時、UI操作を制限するように変更しました。

1.3.2.0:2025/04/30
Previewのスライドバー横のカウント表示を秒から分秒に変更しました。

1.3.1.0:2025/04/28
Solid塗りつぶしのカラーピッカーで色を変更した後、再度カラーピッカーで色を変更する際、設定した色からカラーピッカーがスタートするように変更しました。

1.3.0.0:2025/04/21
geforce50xxに対応するため、TensorRT、CUDA-Toolkitを更新しました。
TensorRTの更新のため、TensorRTへのモデル変換が必要になります。
ご迷惑をお掛けしますがよろしくお願いいたします。

1.2.6.0:2025/04/03
・Windows11 24H2において、動画処理時、ffmpegの起動に失敗する問題に対策を行いました(遅延処理を追加しました)

1.2.3.0:2025/03/29
・モザイク、ブラーを名前検出に適用していた場合、特定の条件で異常終了する不具合を修正しました。
・プレビュー中や動画処理中に、固定枠を描けないように修正しました。
・動画処理をキャンセルできるストップボタンを実装しました。ストップ押下後、少し後に停止します。
・2つのチェックボックスについて、前回の終了状態を保存するようにしました。

1.2.2.0:2025/03/26
・プレビューでの固定枠設定時の表示方法を改善しました。
 Solidではマウス操作時は半透明で、確定で不透明になります。
 モザイクなどでは赤点線枠としています。
・プレビュー画像での固定枠設定方法の説明をUI上に追加しました。
・動画と音声を再結合する処理でもプログレスバーなどを利用し処理状況を数値表示するように変更しました。

1.2.1.0:2025/03/25
FFmpegのライセンス表記が正しくなかったのを修正しました。

1.2.0.0:2025/03/24
塗りつぶし処理にモザイク、ブラーを追加。
これに合わせてUIを変更しました。

1.1.3.0:2025/03/19
誤記訂正、不要コードの削除。
ハードウェアエンコーダが利用できない統合GPUでは起動しても実行できないようにしました。

1.1.0.0:2025/03/18
モデルの形状を変更し、処理速度を約2倍に改善しました。
モデル形状の変更に伴い、これまでに変換済みのTensorRTファイルは利用できません。
お手数をおかけしますが再度変換をお願いいたします。

1.0.15.0:2025/03/10
動画が処理できない不具合を修正しました。
DirectMLが遅い不具合を修正しました。

1.0.14.0:2025/03/07
モデルを更新しました。FHDよりも低い解像度への対応になります。

1.0.12.0:2025/03/03
統合GPUを起動不可にしました。

1.0.0.0:2025/02/26
アプリ操作説明として投稿



開発での試行錯誤

バラバラとですが、このあたりに書いています。