在OBS中通过WebSocket修改文本与图片源,核心是先连上OBS的WebSocket服务,再向对应输入源发送设置更新请求。文本源使用文本字段,图片源使用文件路径字段,两者都通过SetInputSettings方法完成。

连接OBS WebSocket
OBS默认开启WebSocket服务,端口一般是4455。连接时需要带上密码和通信标识。下面用Python的obs-websocket-py库示范如何建立连接。
import obswebsocket
import obswebsocket.requests as requests
# 连接本机OBS WebSocket,密码按实际填写
client = obswebsocket.obsws("127.0.0.1", 4455, "你的密码")
client.connect()
# 连接成功后可调用接口
print("已连接OBS")
修改文本源内容
文本源在OBS里是一个输入,类型通常是text_gdiplus或text_ft2_source。要改文字,用SetInputSettings并传入inputName和settings字典。
# 文本源名称在OBS里查看,比如叫“标题文本”
text_source = "标题文本"
new_settings = {
"text": "新直播标题内容"
}
client.call(requests.SetInputSettings(inputName=text_source, inputSettings=new_settings))
修改图片源内容
图片源的类型一般是image_source,它的设置里用file字段指定图片路径。把路径换成新文件即可更新画面。
# 图片源名称比如叫“右下角Logo”
image_source = "右下角Logo"
image_settings = {
"file": "C:/live/logo_new.png"
}
client.call(requests.SetInputSettings(inputName=image_source, inputSettings=image_settings))
常见注意点
- 源名称必须和OBS里完全一致,包括大小写。
- 改完设置不用手动刷新,OBS会立即应用。
- 若连接失败,检查WebSocket端口和密码,以及OBS是否开着。
使用原生WebSocket直接发请求
如果不想用库,也可以直接发JSON。下面是用JavaScript在Node里发的示例。
const WebSocket = require('ws');
const ws = new WebSocket('ws://127.0.0.1:4455');
ws.on('open', function() {
// 先鉴权
ws.send(JSON.stringify({
op: 1,
d: {
rpcVersion: 1,
authentication: "认证串"
}
}));
// 鉴权后发修改文本请求
ws.send(JSON.stringify({
op: 6,
d: {
requestType: "SetInputSettings",
requestId: "1",
requestData: {
inputName: "标题文本",
inputSettings: { text: "JS控制文字" }
}
}
}));
});
以上方式都能正确改OBS里的文本与图片源。只要请求格式对,源名称没错,内容就会实时变。
OBS_WebSocket文本源图片源修改时间:2026-07-30 19:00:10