使用Python脚本通过WebSocket连接OBS失败:目标机器主动拒绝连接求助
排查OBS WebSocket连接被拒绝的问题
嘿,我遇到过类似的问题,这个“目标机器主动拒绝连接”的错误一般是OBS的WebSocket服务没正常运行,或者你的脚本配置和OBS设置不匹配。下面给你一步步拆解排查:
1. 确认OBS的WebSocket服务已启用
- 打开OBS,进入
工具菜单找到WebSocket服务器设置——如果找不到这个选项,说明你缺少WebSocket组件:- OBS 28及以上版本是内置WebSocket服务的;旧版本需要手动安装官方的obs-websocket插件
- 务必勾选
启用WebSocket服务器选项,否则服务根本不会启动
2. 核对端口与密码的配置匹配度
- 检查OBS设置里的
服务器端口是否和你脚本中写的4455一致(默认端口是4455,若手动修改过需同步调整脚本) - 密码部分要注意:如果OBS设置了连接密码,你脚本里的
password=""必须改成对应密码;如果没设置密码,确保OBS里的认证选项为不要求认证,保证脚本的空密码能匹配
3. 给OBS足够的启动加载时间
你脚本里用了time.sleep(5),但5秒有时候真不够——尤其是首次启动OBS时,要加载场景、插件等资源,启动速度较慢。要么把sleep时间延长到10-15秒,要么写个循环重试逻辑,比如:
import obsws_python as obs from subprocess import call from os import chdir import time OBS_Path = "C:\\Program Files\\obs-studio\\bin\\64bit\\" chdir(OBS_Path) call(['obs64.exe']) # 循环尝试连接,最多重试10次 max_tries = 10 current_try = 0 client = None while current_try < max_tries: try: client = obs.ReqClient(host='localhost', port=4455, password="", timeout=3) print("终于连上OBS啦!") break except Exception as e: print(f"第{current_try+1}次连接失败,2秒后重试...") time.sleep(2) current_try += 1 if client: obs_version = client.get_version() print(f"OBS版本: {obs_version.version}") client.set_current_program_scene("clip paint") client.start_record() client.disconnect() else: print("多次尝试后仍无法连接,需排查其他问题")
4. 排查防火墙或杀毒软件的拦截
有时候Windows防火墙或第三方杀毒软件会拦截OBS的WebSocket端口(4455)通信。可以临时关闭防火墙测试,如果能正常连接,就把OBS添加到防火墙的允许列表中,避免后续再次被拦截。
5. 通过OBS日志定位具体问题
如果以上方法都没用,就打开OBS的帮助->日志文件->查看当前日志,搜索websocket相关条目,日志里通常会记录服务启动失败的具体原因,能帮你快速定位问题。
内容的提问来源于stack exchange,提问作者cooky




