ches3

OBS起動時のエラー表示を回避する

OBSを起動したままPCをシャットダウンすると、次回起動時に以下のようなエラーダイアログが表示されてしまうことがあります。

OBS Studioのクラッシュが検出されました
OBS Studioは正常にシャットダウンしませんでした。
セーフモードで実行しますか?(サードパーティプラグイン、スクリプト、およびWebSocketは無効)

OBS Studioのクラッシュが検出されました OBS Studioは正常にシャットダウンしませんでした。 セーフモードで実行しますか?(サードパーティプラグイン、スクリプト、およびWebSocketは無効)

以前は起動オプションに --disable-shutdown-check を指定することでこのダイアログを回避できましたが、このオプションはv32.0.0で削除されてしまいました。

この記事では、OBS 32.0.0以降のバージョンでこのエラーダイアログを非表示にする方法を紹介します。

手順

1. ファイル作成

デスクトップなどの分かりやすい場所に、obs.vbs という名前のファイルを作成します。

2. スクリプトを記述

次に、作成した obs.vbs をメモ帳などのテキストエディタで開き、以下のコードをそのままコピー&ペーストして保存してください。

Option Explicit
 
Dim sh, fso, sentinel, dir, exe, options
 
Set sh = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
 
sentinel = sh.ExpandEnvironmentStrings("%APPDATA%\obs-studio\.sentinel")
dir = sh.ExpandEnvironmentStrings("%ProgramFiles%\obs-studio\bin\64bit")
exe = fso.BuildPath(dir, "obs64.exe")
options = ""
 
' .sentinelフォルダを削除
If fso.FolderExists(sentinel) Then fso.DeleteFolder sentinel, True
 
' OBSを起動
sh.CurrentDirectory = dir
sh.Run """" & exe & """" & " " & options, 1, False

OBSをデフォルト以外の場所にインストールしている場合は、
dir = sh.ExpandEnvironmentStrings("%ProgramFiles%\obs-studio\bin\64bit") の部分をご自身の環境に合わせて書き換えてください。

3. スクリプトファイル起動

OBSのショートカットの代わりに obs.vbs ファイルを開くことで、起動時にエラーダイアログが表示されなくなります。

Tips

Windows起動時にOBSを自動起動したい場合

作成した obs.vbs ファイルをスタートアップフォルダに配置することで、Windowsの起動と同時にOBSを自動で立ち上げることができます。

スタートアップフォルダは、エクスプローラーのアドレスバーに shell:startup と入力してEnterキーを押すと開くことができます。

すでにスタートアップフォルダにOBSのショートカットが存在する場合は、二重起動を防ぐためにショートカットファイルを削除してください。

起動オプション

options = "" の部分でOBSの起動オプションを指定できます。

例: options = "--minimize-to-tray --startreplaybuffer"

  • --minimize-to-tray : 最小化状態で起動
  • --startreplaybuffer : 起動時にリプレイバッファを開始する

解説

OBSの異常終了検知は以下のような仕組みになっています。

  1. OBSは起動時に、設定フォルダ内(%APPDATA%\obs-studio\)の .sentinel というフォルダに検知用ファイルを作成
  2. OBSが正常に終了されると、このファイルは自動的に削除される
  3. PCのシャットダウンなどで強制終了された場合は、ファイルが削除されずに残ってしまう
  4. 次回の起動時に .sentinel 内にファイルが存在すると、前回の終了は異常だったと判断され、エラーダイアログが表示される

つまり、OBSを起動する前に .sentinel フォルダを強制的に削除してしまえば、OBSは常に正常終了されたと認識し、ダイアログが表示されなくなります。

上記のスクリプトでは .sentinel を削除してからOBSを起動するという処理を行っています。

処理自体はフォルダを削除してプログラムを起動するだけなので、バッチファイルなどでも実現可能ですが、ここではターミナル画面の表示を回避するためにVBScript (.vbs) を使った方法を紹介しました。

OBS公式の対応状況

この問題の根本的な原因は、PCのシャットダウンによってOBSが強制終了され、異常終了として扱われてしまう点にあります。

現在、OBSの開発リポジトリでは、シャットダウンプロセスを改善するための修正案が提出されています。

この修正が将来のバージョンに正式に取り込まれれば問題は根本的に解決され、今回紹介した回避策は不要になると思われます。

frontend: Adjust application shutdown logic by Warchamp7 · Pull Request #12668 · obsproject/obs-studio · GitHub

github.com

この記事を共有する