鱼C论坛

 找回密码
 立即注册
查看: 67|回复: 1

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

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

如何在调用时让obs在后台不显示升级窗口,不显示主界面,直接在后台录屏等?
最佳答案
4 天前
您好!这是一个很常见的问题,通过给 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`。


  1. import subprocess
  2. import time

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

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

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

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

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

  29. except Exception as e:
  30.     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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层    本楼为最佳答案   
您好!这是一个很常见的问题,通过给 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`。


  1. import subprocess
  2. import time

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

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

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

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

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

  29. except Exception as e:
  30.     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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-8 12:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表