OBS WebSocket连接时出现KeyError 'status'错误的原因排查
OBS WebSocket连接触发KeyError:'status'问题
错误信息
Exception has occurred: KeyError
'status'
File "obswebsocket_tests.py", line 3, in
client.connect()
测试代码
import obswebsocket, obswebsocket.requests client = obswebsocket.obsws("localhost", 4444) client.connect() v = client.call(obswebsocket.requests.GetVersion()).getObsWebsocketVersion() print(v) client.disconnect()
OBS客户端界面

问题原因及解决方法
核心原因
这个错误是OBS WebSocket版本不兼容导致的:你当前使用的OBS WebSocket是v5.x版本,但代码依赖的obswebsocket库只支持v4.x及以下的旧协议。v5版本的响应结构和旧版完全不同,旧库无法解析v5的返回内容,因此触发了KeyError:'status'。
解决思路二选一:
1. 升级代码适配v5版本协议
- 先卸载旧库,安装适配v5的新版库:
pip uninstall obswebsocket pip install obs-websocket-py - 修改代码适配v5的API(注意端口和密码配置):
from obswebsocket import obsws, requests # 填写OBS WebSocket设置里的端口和密码(如果设置了的话),v5默认端口是4455 client = obsws("localhost", 4455, password="你的OBS密码") client.connect() # v5版本的GetVersion返回结构不同,调整获取方式 version_data = client.call(requests.GetVersion()) print(f"OBS WebSocket版本: {version_data['obsWebSocketVersion']}") client.disconnect()
2. 降级OBS WebSocket插件到v4.x
如果不想修改代码,可以在OBS的插件市场中找到OBS WebSocket插件,安装v4.9.1版本(旧版协议的最后一个稳定版)。安装后在OBS的「工具→WebSocket服务器设置」中确认端口为4444,启用服务器后即可正常运行原有代码。
额外注意事项
- 务必检查OBS的WebSocket设置:确保端口、密码和代码配置一致,且服务器处于启用状态。
- v5版本的WebSocket协议和旧版差异极大,旧代码无法直接兼容,必须二选一调整。
内容的提问来源于stack exchange,提问作者Michael Bong
相关产品推荐
相关产品推荐

