You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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

火山引擎 最新活动