FF14の動画からPCユーザ名を消したい!
FFXIV(Final Fantasy XIV)のMP4動画からPC名を黒塗りするソフトウェアです。
"WoLNamesBlackedOut"という名前にしています。
FF14のおもしろプレイや上手にできたプレイの動画をyoutubeとかにアップしたいけど、そこには他の人も映り込んでいるので、ちょっと気軽に公開できないんだよねーという問題に対応するため、つくりました。
主にバトル動画での利用を想定していますが、街中などでもある程度は対応していると思います。
TensorRTを利用できる、NVIDIA Geforce RTX 2060以上を推奨ですが、DirectX12を利用したDirectMLにも対応しており、Geforce 1000シリーズや、AMD Radeon、Intel arcなどにも対応しています。
処理に必要なGPUメモリは6GBあれば十分です。(4GB程度のはず)
処理速度は当方の環境でTensorRT利用時、最大42FPS、DirectML利用時では最大34FPSでした。
元の動画が60FPSであれば、2倍程度の処理時間+音声の合成時間が必要ということになります。
ダウンロードはMicrosoftストアから。
GitHubはこのあたりに。
https://github.com/calocenrieti/WoLNamesBlackedOutWin
https://github.com/calocenrieti/WoLNamesBlackedOut_util
https://github.com/calocenrieti/WoLNamesBlackedOut_yolo
従来版との違いについて
従来はPythonをPyinstallerというソフトを使ってWindowsのexeにしていましたが、今回はWindowsネイティブ対応するため、C#、C++でつくり直しています。
つくり直したことで、次のことが実現できました。
良くなった点
- Microsoftストアからの配信で出所の不明なアプリの警告なし!
- Microsoftストアからの配信で自動アップデート。たぶん差分アップデートにも対応。
- アプリの起動が早い!
- 動画だけでなくjpg、pngの静止画にも対応!
- プレビュー画質が動画処理時と同じ!
- プレビュー画像を保存できる!
- UIポチポチしまくっても応答がなくならない!
- 物体検出なしで固定枠塗りだけだとかなり早い!
- DirectML採用でAMD Radeon、Intel arcにも対応!
微妙な点
- Geforceでは事前に各PCで一度TensorRTに変換した方がより速い(変換処理に約6分必要)
- 現状、動画処理時の停止ボタンがない
- アプリのファイルサイズも変化なし。
- 楽天アフィリエイトの広告がついている(成功報酬)
SDR動画
HDR動画
TensorRT
(Geforce2060以上専用)42FPS ※
29FPS
DirectML
(DirectX12 GPU)34FPS
23FPS
従来版
Pyinstaller+torch-tensorrt25FPS
20FPS
CPU:intel 11400F
GPU:Geforce RTX 4700Ti SUPER
適当な蛮神バトルの動画を処理してみて計測。音声の合成は未実施でFPSには含まれていません。
名前黒塗りのみで固定塗りなし、コピーライトあり。
※SDR画質のTensorRTの処理速度が伸び悩んでいるのは、当方のCPUが貧弱で負荷100%になっていたためと思われます。
処理前後のサンプル動画
処理前:
処理後:
動画では青魔道士ばかりですが、ジョブ問わず消してくれるはずです。
"WoLNamesBlackedOut"の使い方
アプリ全体

メニュー部分のみ


ざっくりした操作流れ
- 処理したい動画ファイルと、保存するファイル名を設定し、
- Previewで、処理イメージを確認。
塗りの色やコピーライトなどを設定、確認ください。
アプリ画面右側のプレビューで画面内で左クリックでドラッグすると固定枠を作成します。右クリックで固定枠を全て解除します。
操作感はこちらをご確認ください。→https://youtu.be/87_rSwgOZ7Q - この設定で良いなと思ったら、BlackedOut Startで動画の処理開始。
- 動画完成まで気長に待ちましょう。
メニューボタン説明
- Open_File
処理するファイルを開きます。動画はmp4、静止画はjpg、pngに対応しています。
静止画の場合、アプリ右側にプレビューを表示します。 - BlackedOut_Type
名前の塗りつぶし方を選択できます。Solid:単色塗りつぶし、Mosaic:モザイク、Blur:ぼかし、Inpaint:周辺の色から埋めて透明風処理、No_Inference:名前検出処理しない
Inpaintの処理後のイメージはこちらをご確認ください → https://youtu.be/W32joBaRayg
モザイク、ぼかしの場合、処理加減を多少調整可能なスライダーが表示されます。 - FixedFlame_Type
固定枠の塗りつぶし方を選択できます。Solid:単色塗りつぶし、Mosaic:モザイク、Blur:ぼかし
モザイク、ぼかしの場合、処理加減を多少調整可能なスライダーが表示されます。 - BlackedOut_color
名前を塗りつぶす色を選択します。アイコンが塗りつぶし色となっています。 - FixedFlame_color
固定枠を塗りつぶす色を選択します。チャット欄などでの利用を想定しています。アイコンが塗りつぶし色となっています。 - Add_Copyright
© SQUARE ENIXを画像に埋め込みます。 - Use_TensorRT
動画処理にTensorRTを利用します(TensorRT変換済みの時) - Previewバー
動画の場合、Preview処理をする箇所を選択します。単位は秒です。 - Preview
画像に対して名前の検出・塗りつぶしや、固定枠の塗りつぶしなどを実施します。
アプリ右側に処理結果が表示されます。 - Start_Min、Start_Sec、End_Min、End_Sec
動画の処理を行う開始時刻、終了時刻を時分で設定します。 - BlackedOut Start
動画に対して名前の検出・塗りつぶしや、固定枠の塗りつぶしなどを実施します。
処理完了後、ファイル保存の画面が表示されます。 - STOP
動画処理をキャンセルします。
ボタンを押すと、アイコンが時計に変わり、しばらく後にキャンセルされます。 - Erapedsec
動画処理の経過時間(秒) - FPS
動画処理のスピード。フレーム/秒 - ETA
動画処理が終了するまでの推定時間(秒) - Convert ONNX to TensorRT
名前検出モデルをONNXからTensorRTに変換します。
Geforce RTX 2060など、TensorRTが利用できる場合のみ有効。 - License
ライセンスの表記 - about
アプリについての表記 - Save Image
現在のプレビューを保存します。プレビュー実行直後のみ有効。
既知の不具合
- 特にありません。
"WoLNamesBlackedOut"利用上のTIPS
- TensorRTへの変換は、最初に一度したらずっと有効です。
細かく言えば、名前検出モデルであるONNXファイルを更新した時には、そのモデルの再変換が必要ですが、従来の検出レベルで問題なければ再変換は不要です。 - TensorRTは、各GPUごとに最適化されるため、各PCでの変換が必要となっています。変換に6分程度必要で少々時間がかかりますが、タスクマネージャでも見ながらお茶を飲みつつお待ちください。
今後、実装したいこと
あくまでやりたいことで、できないかもしれません。
思いついた順に書いているので、特に要望なければ私のやりたい順で実装トライになります。
- copyrightの位置やサイズ、フォントなどのエディット機能
- プレビューの拡大や縮小
- 動画処理中に、たまにプレビューで画像が表示される
名前の検出精度について
「このパターン、必ずと言ってもいいほど消えないんだよねー」
とか
「チラチラしたり、たまに検出が漏れたりするなー」
というものがあれば、パターンを教えていただければ、対応できるかもしれません。
動画そのものか、動画から切り出した動画と同じ解像度の画像を5枚程度頂けるととても助かります。
学習データの作成は半自動化ができており、従来より比較的容易に作成できるようになりました。
ファイル送信は、例えば下記のようなサービスを利用して送付、ご連絡ください。
よろしくお願いいたします。
本アプリに関するお問い合わせ
ブログお問い合わせフォーム、もしくはツイッターでご連絡いただけると助かります。
謝辞
C++ ONNXでの物体検出には、soramimi様のコードを利用させて頂きました。
ありがとうございました。
C++ TensorRTでの物体検出には、杨晨様のコードを利用させて頂きました。
ありがとうございました。
https://cyberyang.com/inference/34.html
更新履歴
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
アプリ操作説明として投稿
開発での試行錯誤
バラバラとですが、このあたりに書いています。