OBS Studioのリプレイバッファー×インスタントリプレイでハイライト映像表示
サッカーなどでよくある、目立った場面を再び流すやつをOBSで。
概略
OBSのウィンドウに映し出されているプレビュー映像に対して、直前の映像を保存。保存した映像を専用のシーンで再生する。
必要なもの
・OBS Studio 21.0~ (Python/Luaスクリプティングが使用できるバージョン) ・適当な動画ファイル(この記事ではOBSSの録画ファイルを使用)
1. リプレイ用の動画ファイル、専用シーン作成
録画の種別が標準になっていることを確認してください。デフォルトでは標準になっているはずです。1つのOBSSで同時配信をしている方はカスタム出力(FFmpeg)になっていると思いますが、カスタム出力を使用している場合、リプレイ機能を使用することは出来ません。
適当に録画して録画ファイルを作成し、ファイル名を分かりやすいものに書き換えましょう。この記事では「リプレイバッファ.mp4」としています。
リプレイ用のシーンを作成し、先程作成した動画ファイルをソースに追加してください。サイズはプレビューいっぱいにしておけばよいでしょう。プロパティの「ソースがアクティブになった時に再生を再開する」のチェックは有効に。
2. リプレイバッファーを有効にする
リプレイバッファーとは、映像を遡って一定時間保存する機能です(Shadow playのインスタントリプレイやアマレコTV Ver3のリプレイ機能と大体同じものです)。
ファイル→設定から設定画面を開き、出力タブ→リプレイバッファータブ内にある「リプレイバッファーを有効にする」にチェックを入れることで使用することが出来ます。 グレーアウトしている場合は、録画タブの種別が「標準」となっているかどうか確認してください。カスタム出力(FFmpeg)を使用している場合、リプレイバッファー機能は使用できません。
最大リプレイ時間は適当に。用途によりますが、大抵の場合30秒もあれば十分だと思います。 リプレイバッファーを有効にすると、コントロールに「リプレイバッファー開始」が追加されます。
3. インスタントリプレイを有効にする
OBSSについているLuaスクリプトのサンプルをそのまま使用します。
ツール→スクリプトからスクリプトの設定画面を開き、左下の「+」を押してLuaスクリプトを追加します。追加するスクリプトは「instant-replay.lua」です。 .\obs-studio\data\obs-plugins\frontend-tools\scripts\ 内にあります。ない場合はココからテキストをコピペして「xxx.lua」で保存してください。
選択すると右側に説明が、その下にMedia Sourceの項目が表示されます。先程追加した動画を指定しましょう。
4. ホットキーの設定
設定→ホットキータブを開き、Instant Replayの項目にホットキーをセットしてください。
5. 実行
「リプレイバッファー開始」を押してリプレイバッファーを有効にし、↑で設定したホットキーを押すと、直前の映像が録画用のフォルダ内に保存され、「リプレイバッファ.mp4」のパスが置き換えられます。この状態で作成したシーンに切り替えると、直前の映像が再生されます。
なお、ホットキーを押すたびに録画ファイルが生成されるので、溜まったらファイルを削除してください。「Replay」とファイルの頭についているものがそれです。
6. 補足
・通常速度では視認できないような展開が予想される場合は、動画のプロパティを開いて速度を適度に落とすとよいでしょう。映像もそれっぽくなります。
・手間はかかりますが、シーン切り替えにスティンガーを使用するとよりそれっぽくハイライト表示ができるでしょう。スティンガーについてはググるか ココ を見てください。
・リプレイ専用のシーンを作成せず、既存のシーンに「リプレイバッファ.mp4」を追加して小窓表示すれば、リアルタイムの映像を流しつつリプレイ映像を流すことが出来ます。場合によってはこのパターンを使用するのもありでしょう。