Twitchのアーカイブダウンロードからニコニコ風コメント結合までを自動化する(無音区間削除もあるよ)

ツール関係

2025/8/15追記
もっと便利なものを作ったのでこちらを推奨します。
処理時間も大分短縮されています。
https://narinico.com/twitch-to-nicoment-auto/

こんにちは。
以前こちらの記事でTwitchの映像、チャットダウンロードからさきゅばすでのコメント合成の仕方を紹介したのですが、手順が多くてくそめんどくせぇってことで、自動化するコードを作成しました。

準備

必要なツールは以下になります。

TwitchDownloaderCLI

Twitchのアーカイブ、チャットをダウンロードしたり、チャットを動画化したものを作れたりする便利なツールです。
https://github.com/lay295/TwitchDownloader

リンク先の右側、Releasesからダウンロードできます。

今回使うのはCLI(コマンドで実行できるもの)なので「TwitchDownloaderCLI-1.xx.x-Windows-x64.zip」をダウンロードしてください。

ダウンロードしたら解凍します。場所はどこでもいいです。

そうしたらフォルダを開いて

上のアドレスバーのところで「cmd」と入力してください。

そうしたらコマンドプロンプトが起動するのでそこに以下のコマンドを入力してEnter

TwitchDownloaderCLI.exe ffmpeg --download

これでフォルダ内にffmpegが追加されます。これがないと動画のレンダリングができないので絶対に入れて下さい。

さきゅばす

コメントをニコニコのような流れる形に合成してくれるソフトです。
https://github.com/Saccubus/Saccubus1

こちらも同じように右のReleasesからダウンロードしてください。

「Saccubus1.xx.x.xx.zip」をダウンロード

ダウンロードが完了したら解凍して、中にある「saccubus3」というフォルダを先ほどダウンロードした「TwitchDownloaderCLI」の中に入れます。

フォルダの作成
「saccubus3」フォルダを開き、新しく以下のフォルダを作成します。
・[out]comment
・[out]converted
・[out]video


auto.batの変更
auto.batをメモ帳などで開き、いくつか変更を加えていきます。
完了したら保存してください。

・32行目に以下のコードを入力

:: 処理モードを引数から取得
set MODE=%1
if "%MODE%"=="" (
    set MODE=GPU
)

:: MODEによるコマンド切り替え
if "%MODE%"=="GPU" (
    set QCMD_OUT=-threads 0 -c:v h264_nvenc -pix_fmt yuv420p
) else if "%MODE%"=="CPU" (
    set QCMD_OUT=-threads 0 -c:v libx264 -pix_fmt yuv420p
) else (
    echo 不明なモードが指定されました: %MODE%
    exit /b 1
)

:: 実行
echo 実行するコマンド: %CMD% 1 0 QCMD_OUT="%QCMD_OUT%"
%CMD% 1 0 QCMD_OUT="%QCMD_OUT%"

・54行目「%CMD% auto?watch_harmful=1 000000 @PUP」の頭に「:」をつけコメントアウト

・102行目「pause」の頭に「:」をつけコメントアウト



本体設定
次にさきゅばす本体の設定を行います。
「saccubus3」フォルダ内にある「Saccubus.exe」を起動します。
※起動しない場合、以下のページを参考にJAVAをインストールしてください。
https://github.com/Saccubus/Saccubus1/wiki/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E5%8B%95%E7%94%BB%E3%81%A8%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E7%B5%90%E5%90%88%E3%81%99%E3%82%8B

基本設定

・fps変更にチェック
・最小、変換を60.0に設定。整数倍にチェックを入れる

ここを半分の30.0などにするとフレームレートが低くなるので少しカクカクしたコメントの流れ方になりますが結合にかかる時間が短くなります。

保存設定 – 動画・コメント

・動画保存のチェックを外す
・コメントダウンロードのチェックを外す
・「動画保存設定」の「保存するフォルダを指定し、ファイル名は自動で決定する」にチェックが入っており、参照先が「.\[out]video」となっていることを確認
・「コメント保存設定」の「保存するフォルダを指定し、ファイル名は自動で決定する」にチェックが入っており、参照先が「.\[out]comment」となっていることを確認

保存設定 – コメント付き動画

・動画を変換するにチェック
・ファイル名に動画IDを付加しないにチェック

動画設定 – 変換オプション設定(共通)

・共通FFmpegの設定の下のプルダウンを「外部ファイルを用いず、下に直接入力する」に変更

・出力オプションを空に

変換設定

・表示コメント数を「1000」
・フォントパスに好きなフォントを指定(初期はmsgothic.ttc)
・フォント番号を「0」

※フォント番号について(docフォルダ内「最初に必ず読んで.txt」から引用)

・フォント番号
フォントファイル(.ttc)には、複数のフォントが同時に入っている事があります。
それを指定するためのオプションです。
通常0は固定幅、1はプロポーショナルらしいです。

・影の種類を「06:Html5プレイヤー風」に変更
・フォントサイズを自動調整にチェック
・全てのコメントを不透明ににチェックを入れ「1.0」と入力
・コメント行送りにチェックを入れ「-3」と入力
・開発版を有効にチェック
・CAフォント対応にチェック

これで一通りの設定は完了です。Ctrl + Sで設定を保存しておいて下さい。

また、他にも細かい調整ができるので詳しく知りたい方はさきゅばすのdocフォルダにある「最初に必ず読んで.txt」をご参照ください。ていうか必ず読んでって書いてあるから必ず読んだほうがいいと思う。
あと細かい設定についてはWikiにめちゃくそ詳しく纏められているのでこれも一通りは見ておいた方がよいと思います。
https://github.com/Saccubus/Saccubus1/wiki

Python

無音区間削除を行いたい場合この後導入するツール「Auto-Editor」を使用するためにPythonをインストールする必要があります。
以下からPython3をダウンロードし、インストールします。
https://www.python.org/downloads/

多分最新版で大丈夫だと思います。

「Use admin privileges when installling py.exe」、「 Add python.exe to PATH」をクリックして選択し「Install Now」をクリックします。完了したらCloseしてください。

左下のwindowsアイコンからコマンドと入力してコマンドプロンプトを選択し実行します。

「python –version」と入力しEnter→バージョンが確認できれば導入はOKです。

Auto-Editor

無音区間を検知し、カットしてくれるツールです。

インストールはコマンドで行います。コマンドプロンプトを起動し、下記のコマンドを順番に入力してください。

pipをアップグレードします。

pip install --upgrade pip

Auto-Editorをインストールします。

pip install auto-editor

定期的に更新されるので下記のコマンドでアップグレードします。

pip install auto-editor --upgrade

以下のコマンドを実行し、helpが表示されたらインストールは完了です。

auto-editor --help

ffmpeg

Auto-Editorで無音区間のカットを行った際にシークバーの移動が重くなる現象が発生します。どうやらffmpegのカットでも同じようなことが起こるらしく、再エンコードをしない場合キーフレームの関係で映像が止まったり真っ暗になったりするみたいです。
じゃあ再エンコードすればええやんけってなるんですけどauto-editorで再エンコードの設定をしてもコマンドを認識してくれないんすよ~~。つまりauto-editorに同梱されているffmpegはエンコする想定のものじゃないってこと!???!
しゃーないので自前でffmpegを用意して再エンコードをかけてあげます。
エフェクトやオーバーレイがかかっているわけじゃないので再エンコード自体ははやく終わると思います。
とにかく必要なので入れてください。ノーマライズ処理とかでも使います。

https://www.gyan.dev/ffmpeg/builds/

リリースビルドの最新リリースにある「ffmpeg-release-full.7z」を選択しダウンロード。

ダウンロードが完了したら解凍してCドライブ直下に配置します。

次に環境変数の設定を行います。これをすることでffmpegをどこからでも実行できます。
スタートメニューからシステム環境変数の編集をクリック

環境変数をクリック

上のPathを選択して編集ボタンをクリック

新規を選択し、先ほどCドライブ直下に置いたffmpegのbinのディレクトリパスを入力します。

↓のアドレスバーの値

OKを選択して閉じます。これで導入は完了です。
コマンドプロンプトを開き、「ffmpeg -version」と入力してエラーにならなければ完了です。

Pythonのコード類

次に自動実行を行ってくれるコード類を「TwitchDownloaderCLI」内に追加します。
本当はGitHubとか使った方がいいんだろうけどなんかめんどくさいのでドライブで配布します。

Twitch_さきゅばす自動実行 - Google ドライブ

ダウンロードした「twitch_downloader.py」「twitch_to_nico.py」「auto.bat」を「TwitchDownloaderCLI」内に追加します。めっちゃ適当に書いたんで汚いです。許せ。

これであとは「auto.bat」を実行すれば起動できます。

流れ

「TwitchDownloaderCLI」フォルダ内auto.batをダブルクリックで実行します。

処理するVOD IDをカンマ区切りで入力してください:
配信のVOD IDを入力します。URLの数字になっているところです。

ここにカンマ区切りで複数のVOD IDを入れることで連続で処理することができます。

コメントの合成方式を選択してください。(1:Twitch風, 2:ニコニコ風)
コメントをどのように表示するかを選択します。

Twitch風の場合は下の画像のように配信映像の上にチャットを合成します。

1:Twitch風を選択した場合、そのあとの質問でチャットの合成位置を選択できます。

ニコニコ風の場合はニコニコ生放送のようにコメントが流れるようになります。

処理モードを選択してください。(1: CPU, 2: GPU)
ここではCPU、GPUどちらで処理するかを選択できます。

ちなみにGPUはNVIDIAを想定しているのでAMDの場合はコマンドを変更してあげる必要があります。
twitch_downloader.py 173行目
codec = “h264_amf”


twitch_downloader.py 313行目
codec = “h264_amf”

saccubus3フォルダ内 auto.bat 40行目
set QCMD_OUT=-threads 0 -c:v h264_amf -pix_fmt yuv420p

AMDのGPUを持っていないので動作確認ができません。
もし問題があればCPUを使ってください。


ノーマライズ処理を行いますか?(y/n)
音量を音割れしないギリギリまで引き上げてくれる処理です(loudnorm)。はいなら「y」いいえなら「n」
私が見ている配信者は音がくっそちっせぇので合成段階から音量上げたろうってことで入れました。
編集ソフトで対応するからいらねって場合はnで良いです。ちょっとだけ処理に時間がかかります。


無音削除を行いますか?(y/n)
無音区間を検知してその部分をカットできます。はいなら「y」いいえなら「n」
ちなみにすげー時間がかかるので覚悟の準備をしておいてください。

あとはEnterで実行されます。複数VOD IDを入力した場合は上で聞いた内容を元に処理を行うので何回も入力する必要はありません。

補足

Twitch風合成についてですが、チャットの幅、高さ、フォントサイズを変えたい場合は「twitch_downloader.py」112行目「チャットレンダーの設定」を変えてあげれば反映されます。


無音区間の削除についてですが、「twitch_downloader.py」325行目のthresholdを調整してあげることで、どれくらい音が小さかったらカットするのかというのを指定できます。
例えば今回のものだと「音量が20%未満の区間を削除する」という風になっています。


ちなみにTwitch風合成の方が圧倒的に処理時間が短いです。なんとかならんかなぁ…

参考

・TwitchDownloaderCLI README.md
https://github.com/lay295/TwitchDownloader/blob/master/TwitchDownloaderCLI/README.md#example-commands
CLIコマンドが様々乗っているのでTwitchからのダウンロード時になんか設定値を変えたい場合は参考にしてください。

・さきゅばす1.x Wiki
https://github.com/Saccubus/Saccubus1/wiki
さきゅばすの使い方が載っています。今回はbatで自動実行でしたが自前で落としてきた動画、コメントxmlがあれば、それぞれ[out]video、[out]commentに入れることで合成を実行できます。
私が前に書いた記事も参考にしてみてください。
https://narinico.com/twitch-chat-niconico/

・動画編集でジェットカットを無料で自動化する方法
https://rcg.jp/auto_editor/
auto-editorの導入で参考にさせてもらいました。ほかにもパラメータを指定できるので見ておくと良いかもです。
コマンド一覧は公式サイトに載っているので参考にしてください。
https://auto-editor.com/ref/options

・[FFmpeg] 音声を聞きやすく調整する
https://kirinsuki.net/2024/03/17/
ffmpegでの音量調整について纏められています。今回使ったのはloudnormでしたが他にもやり方があるようです。試してみてください。

コメント

  1. ピノ より:

    有益な情報ありがとうございます!
    これってダウンロードする動画の時間指定は可能ですか?
    長時間の配信だとダウンロードするのに時間がかかるのでここからここまでを時間指定してダウンロードができればいいなと思いました

    • narinico より:

      TwitchDownloaderCLIに時間指定のコマンドがあるのでtwitch_downloader.pyの動画とチャットのダウンロード処理にコマンドを追加してあげればできるとは思います。
      加工とかは自由なんで実装してもらっても大丈夫です。暇があったら対応します(ただすごく面倒なのでやらない可能性があります)

    • narinico より:

      時間帯指定ができて処理時間も大幅に短縮した改良版を作りました。
      よろしければこちらをお使いください。
      https://narinico.com/twitch-to-nicoment-auto/

  2. yuuula より:

    いつもお世話になっております。
    こちらはyoutubeやニコニコ、kickなどには対応することはできないのしょうか?

タイトルとURLをコピーしました