blackantt 发表于 3 天前

需要用python调用 obs portable 版本对屏幕录像,录音。但调用后obs总弹出升级窗

需要用python调用 obs portable 版本对屏幕录像,录音。但调用后obs总弹出升级窗, obs主界面。

如何在调用时让obs在后台不显示升级窗口,不显示主界面,直接在后台录屏等?

FishC 发表于 3 天前

您好!这是一个很常见的问题,通过给 OBS 启动命令添加特定的参数,就可以让它以无界面、不更新的方式在后台运行。

核心解决方法是使用 OBS 的命令行参数。您需要使用 Python 的 `subprocess` 模块来调用 OBS 的可执行文件并传递这些参数。

### 解决方案

1.**找到 OBS 便携版的启动程序路径**:通常是 `obs64.exe`(64位系统)或 `obs32.exe`(32位系统),位于您的 OBS 便携版解压目录中。

2.**使用正确的命令行参数**:
    *   `--startrecording`: 启动后立即开始录制。
    *   `--startreplaybuffer`: 启动后立即开启回放缓存(如果设置了)。
    *   `--minimize-to-tray`: 启动后最小化到系统托盘(对于无界面模式,这个有时也必要)。
    *   `--portable`: 强制以便携模式运行(确保读取和写入当前目录的配置,对于便携版很重要)。
    *   `--disable-updater`: 禁用更新检查,这是阻止弹出升级窗口的关键!

    最关键的组合是 `--startrecording` 和 `--disable-updater`。

3.**编写 Python 代码**:使用 `subprocess.Popen` 来启动进程,这样您的 Python 脚本可以继续运行,而 OBS 在后台工作。

### 示例代码

假设您的 OBS 便携版路径是 `D:\OBS-Portable\obs64.exe`。


import subprocess
import time

# 定义 OBS 可执行文件的路径
obs_path = r"D:\OBS-Portable\obs64.exe"

# 构建命令行参数列表
# --disable-updater 禁用更新器,防止弹出升级窗口
# --startrecording 启动后立即开始录制
# --minimize-to-tray 最小化到托盘(在某些版本中有助于隐藏窗口)
# --portable 以便携模式运行
obs_args = [
    obs_path,
    "--disable-updater",
    "--startrecording",
    "--minimize-to-tray",
    "--portable"
]

try:
    # 启动 OBS 进程
    # subprocess.Popen 会启动程序后立即返回,不会等待程序结束
    obs_process = subprocess.Popen(obs_args)
    print("OBS 已启动并在后台开始录制...")

    # 你的其他代码可以在这里继续执行
    # 例如,等待一段时间
    time.sleep(10) # 录制10秒

    # 如果需要停止录制,可以编写停止脚本或手动操作
    # 一个简单的方法是使用 taskkill 命令终止 OBS 进程
    # subprocess.call(['taskkill', '/F', '/T', '/PID', str(obs_process.pid)])
    # print("录制已停止")

except Exception as e:
    print(f"启动 OBS 时出错: {e}")


### 重要说明和提示

*   **先配置 OBS**:在第一次使用这个脚本之前,您必须先用普通方式打开 OBS 便携版,手动设置好您的录制场景、音视频源(麦克风、显示器捕获)、输出格式、保存路径等。脚本只是“启动”OBS,并不会帮您做这些配置。
*   **停止录制**:上面的示例代码只是启动了录制。要停止它,最简单的方法是按 OBS 默认的快捷键(如 F9),或者用代码发送停止信号。示例中注释掉的 `taskkill` 命令是一种强制结束的方式,它会直接终止进程,OBS 会正常完成最后文件的写入。
*   **参数测试**:不同版本的 OBS 对参数的支持可能略有不同。如果 `--minimize-to-tray` 无效,可以尝试去掉它。核心参数 `--disable-updater` 和 `--startrecording` 通常是有效的。
*   **查看所有参数**:您可以在命令行中手动运行 `obs64.exe --help` 来查看您的 OBS 版本支持的所有参数。

总结一下,关键在于使用 `--disable-updater` 和 `--startrecording` 这两个命令行参数,并通过 Python 的 `subprocess` 模块来调用。希望这能解决您的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 需要用python调用 obs portable 版本对屏幕录像,录音。但调用后obs总弹出升级窗