OBS FIX:“录制时发生未指定的错误”

当用户尝试使用开源程序 OBS Studio 开始录制时 , 通常会出现错误“录制时发生未指定的错误” 。在大多数情况下 , 这些是错误“ [ffmpeg muxer: ‘adv_file_output’] os_process_pipe_write for info structure failed” 的日志文件 。
大多数遇到此问题的用户都确认 OBS 的流媒体功能正常 , 但当他们开始录制时整个套件崩溃 。
如果您正在尝试解决此问题 , 您要做的第一件事就是确保您使用的是正确的录制设置 , 以防止外部干扰使用相同依赖项的其他程序 。
但是 , 由于缺少 DLL 或需要更新变量路径时 , 也会出现此问题 。其他潜在原因包括 GPU 驱动程序不一致、AV 干扰或 VPN 或代理干扰 。
您将在下面找到一些已确认的方法 , 其他受影响的用户已成功使用这些方法来修复“录制时发生未指定的错误”错误 。
1.更改录音类型在OBS中的录制功能默认为自定义输出 (FFmpeg)而不是使用标准录制模式的情况下 , 您经常会遇到“ 录制时发生未指定的错误”错误 。
使用自定义还会产生将默认编码器调整为远离H265 / HEVC 编码器(AMD 高级媒体框架)的意外后果 。
注意:当强制使用集成 GPU 的自定义编码器进行录制时 , OBS 是出了名的不稳定 。根据您使用的是集成 GPU 还是专用 GPU , 推荐的记录类型会有所不同 , 如下所示 。
如果您刚刚开始解决问题 , 请按照以下说明更改录音类型设置 , 然后再重新开始录音:

  1. 打开 OBS 并确保您没有主动流式传输或执行任何其他任务 。如果您的 OBS 应用程序繁忙 , 则某些设置菜单将不可用 。
  2. 加载您的项目 , 然后单击屏幕左下方的“设置”菜单 。
  3. 在“设置”菜单中 , 单击左侧菜单中的“输出”  , 然后转到右侧窗格并选择“录制”选项卡 。
  4. 接下来 , 查看 Recoding Type 当前使用的选项:
    • 如果它设置为标准 , 将其更改为自定义输出 (FFmpeg)
    • 如果它设置为自定义输出 , 请将其更改为标准 。
  5. 成功更改类型后 , 向下移动到编码器部分并将其设置为H265 / HEVC 编码器(AMD 高级媒体框架) 。
  6. 单击“应用”以保存更改 , 然后重新启动 OBS 并查看问题现在是否得到解决 。
2.手动下载丢失的DLL如果您已经尝试调整编码引擎 , 但仍然出现相同的“录制时发生未指定的错误” , 请查看错误的基本消息 。
如果任何重要的 .DLL 文件丢失 , 它们可能已被过度保护的 AV 套件删除 , 并且被隔离或完全从您的 PC 中删除 。
如果这种情况适用 , 您可以通过从本地专门目录下载丢失的 .dll 文件并将它们复制到 obs- ffmpeg文件夹中来轻松解决问题 。
重要提示:没有可以下载 100% 安全的 .DLL 文件的目录 。最著名和可以说是最安全的网站是 DLL-Files.com , 因为他们的大部分 DLL 库都是由工作人员上传和维护的 。如果您想要安全的方法 , 请按照下面的下一个方法进行操作 。
在处理 DLL 文件时 , 最好检查 DLL 文件中是否存在捆绑的恶意软件或广告软件 。为确保您的系统不会暴露在安全威胁之下 , 我们将向您展示如何在您在系统上主动使用这些文件之前检查它们是否感染了病毒 。
按照以下说明下载缺少的 DLL 依赖项并确保它们未与广告软件或恶意软件捆绑在一起:
  1. 按Windows 键 + E打开文件资源管理器 。
  2. 接下来 , 导航到 OBS 的安装位置 。默认情况下 , 您会在以下路径中找到它:C:\Program Files\OBS\\data\obs-plugins\obs-ffmpeg\
  3. 进入后 , 双击ffmpeg-mux64.exe和ffmpeg-mux32.exe并查看缺少哪些 .dll 依赖项 。最常见的是 , 以下错误消息将指向以下依赖项之一:avcodec-57.dllavformat-57.dllavutil-55.dllswresample-2.dll注意:记下缺少的依赖项 , 因为您将需要在接下来的步骤中下载它们 。
  4. 打开默认浏览器并导航到DLL-Fles.com 的根目录 。
  5. 使用搜索功能查找并下载您在第 3 步中发现的每个丢失的 .dll 文件 。
    重要提示:下载文件后 , 请勿尝试打开、重命名或移动文件 。
  6. 导航到 Virus Total 的上传页面并上传您之前下载的每个文件 。注意:确保单独检查每个依赖项 。
  7. 确保每个 DLL 文件都是安全的后 , 将它们复制到 obs-fmpeg 文件夹中 。默认位置是:C:\Program Files\OBS\\data\obs-plugins\obs-ffmpeg\注意:如果您将 OBS 安装在自定义位置 , 请导航至该位置 。
  8. 如果 OBS 程序当前已打开 , 请在再次打开之前将其关闭 , 以强制其加载缺少的依赖项 。
  9. 再次启动记录并查看是否仍在抛出“未指定错误” 。
注意:如果上述步骤没有解决问题 , 您也可以在重新安装官网最新版本之前卸载您当前的OBS版本 , 重新添加依赖 。但请记住 , 走这条路将清除当前保存在 OBS 程序中的所有项目 。
3.更新变量PATH如果您已经尝试重新安装 OBS , 但仍然看到相同的“未指定错误” , 这可能是因为 OBS 用户的 ffmpeg 可执行文件没有找到预期的 DDL , 即使您的系统上有它们也是如此 。
您可以通过调整 PATH 环境以“帮助”OBS 找到预期的 DLL 来更正此问题 。
注意:此过程是技术性的 , 涉及进行 PATH 更改 , 这可能会对同样使用 ffmpeg 的其他程序产生负面影响 。
以下是如何使用提升的 CMD 更新 PATH 变量 , 以帮助 OBS 找到丢失的 .DLL 依赖项 , 这些依赖项间接导致“未指定的错误”:
  1. 按Windows 键 + R打开“运行”对话框 。
  2. 接下来 , 键入“cmd”并按Ctrl + Shift + Enter以打开具有管理员访问权限的提升的 CMD 提示符 。
  3. 在用户帐户控制(UAC) 中 , 单击是以授予管理员访问权限 。
  4. 进入提升的 CMD 提示符后 , 运行以下命令导航到 obs-ffmpeg 安装文件夹:光盘 C:\Program Files (x86)\obs-studio\data\obs-plugins\obs-ffmpeg注意:以上命令假设OBS Studio安装在默认安装路径 , Windows安装在C盘 。如果您的路径不同或者您使用的是 64 位版本的 OBS , 请相应地调整上面的命令 。
  5. 键入以下命令以运行ffmpeg-mux32可执行文件:启动 ffmpeg-mux32
  6. 在UAC提示符下 , 单击“是”以授予管理员访问权限 。
  7. 如果弹出错误仍然出现 , 您刚刚确认问题是由于变量PATH问题引起的 。
  8. 按Windows 键 + R打开另一个运行对话框
  9. 键入“sysdm.cpl”并按Ctrl + Shift + Enter以使用管理员权限打开系统属性 。
  10. 单击是接受UAC 提示 。
  11. 接下来 , 单击Advanced选项卡并单击Environment Variables 。
  12. 进入“环境变量”屏幕后 , 从“系统变量”部分选择路径变量 , 然后单击相关的“编辑”按钮 。
    注意:在此窗口中修改任何内容之前 , 请将当前变量路径复制并粘贴到记事本或安全的地方 。如果此修复不起作用 , 建议将此路径返回到它的原始值 。
  13. 在“变量值”文本框中 , 将光标移动到文本的开头并粘贴以下路径:C:\Program Files (x86)\obs-studio\bin\32bit;
  14. 单击确定 , 然后最后一次确认以关闭对话框 。
  15. 现在要检查问题是否已解决 , 请按Windows 键 + R打开“运行”对话框 。
  16. 接下来 , 键入“cmd”并按Ctrl + Shift + Enter以打开具有管理员访问权限的提升的 CMD 提示符 。
  17. 在用户帐户控制 (UAC) 中 , 单击是以授予管理员访问权限 。
  18. 运行以下命令导航到为 OBS Studio 安装 obs-ffmpeg 的位置:光盘 C:\Program Files (x86)\obs-studio\data\obs-plugins\obs-ffmpeg
  19. 键入以下命令以运行 ffmpeg 可执行文件:启动 ffmpeg-mux32
  20. ffmpeg-mux32将找到所有必需的 DLL。您可能会收到不同的错误消息(“缺少预期选项”) , 但您可以关闭它并转向您的应用程序 。注意:如果您收到其他错误 , 抱怨deflateBound不在zlib.dll中 , 您可以通过将特定版本的 zlib.dll 复制到 obs-ffmpeg 文件夹中来修复它 。为此 , 您只需运行以下命令:复制 "C:\Program Files (x86)\obs-studio\bin\32bit\zlib.dll" "C:\Program Files (x86)\obs-studio\\data\obs-plugins\obs-ffmpeg"请务必仔细检查路径以确保它们适合您的情况 。
4. 启动OBS前禁用GPU驱动(临时修复)OBS Studio 社区中另一个流行的修复方法是在打开程序后禁用活动的 GPU 驱动程序 。
【OBS FIX:“录制时发生未指定的错误”】这个修复应该有效 , 因为它刷新了 OBS 使用的 GPU 日志并强制程序创建一个新日志 。
为此 , 您需要进入设备管理器并禁用活动的专用 GPU , 然后重新启动 OBS 并启动录制会话 。
以下是在启动 OBS 之前禁用 GPU 驱动程序以修复“录制时发生未指定错误”错误的快速指南:
  1. 按Windows 键 + R打开“运行”对话框 。
  2. 接下来 , 键入“devmgmt.msc”并按Ctrl + Shift + Enter以打开具有管理员访问权限的设备管理器 。
  3. 在UAC(用户帐户控制)提示中单击是以授予管理员访问权限 。
  4. 在设备管理器中 , 展开与Display Adapters关联的下拉菜单 。
  5. 右键单击活动的专用 GPU  , 然后从刚刚出现的上下文菜单中单击禁用设备 。
  6. 在确认提示中 , 再次单击“是”。
    注意:确认后 , 您可能会在启动通用驱动程序时遇到屏幕闪烁 。
  7. 视频信号恢复后 , 打开 OBS Studio 并加载您的项目 。
  8. 返回设备管理器 , 右键单击禁用的 GPU(在显示适配器下) , 然后单击启用 。
  9. 返回 OBS Studio , 启动录制会话 , 查看问题是否已解决 。
5. 将 obs-ffmpeg-mux 文件列入白名单(如果适用)您可能会看到“录制时发生未指定错误”的另一个原因是您的 AV 触发的误报造成的干扰 。OBS Studio 是开源的 , 许多可用的模组和插件很容易被第 3 方 AV 套件和 Windows 安全标记 。
如果您使用的是第三方套件 , 请进入您的 AV 设置并将安装文件夹 + mainobs-ffmpeg-mux 可执行文件分别列入白名单 。
注意:此过程将根据您使用的第 3 方 AV 而有所不同 。
如果您使用内置的Windows Defender(Windows 安全) , 请按照以下步骤将 obs-ffmpeg-mux 可执行文件+安装路径列入白名单:
  1. 首先按Windows 键 + R调出“运行”对话框 。
  2. 输入“control firewall.cpl”并回车 , 打开经典的Windows防火墙界面 。
  3. 要授予管理员访问权限 , 请在UAC(用户帐户控制)中单击是 。
  4. 接下来 , 从左侧菜单中选择“允许应用程序或功能通过 Windows Defender 防火墙”。
  5. 从允许的应用程序菜单中 , 选择更改设置并通过在UAC(用户帐户控制)问题中选择是来授予管理员访问权限 。
  6. 一旦您拥有适当的权限 , 请查看允许的应用程序列表并检查您是否可以找到与 OBS Studio 相关的任何条目 。
  7. 如果它们不存在 , 请单击“允许另一个程序”选项 , 然后单击“浏览” , 导航到它们的位置 , 然后添加ffmpeg-mux + 安装文件夹 。
  8. 保存您的修改 , 重新启动您的 PC , 然后重新启动 OBS Studio 。
  9. 开始录制会话并查看问题是否已解决 。
6. 禁用 VPN 或代理连接另一个可能导致 OBS Studio 出现此问题的第三方组件是代理或 VPN 客户端 。如果您在使用 OBS Studio 进行直播时尝试启动录制会话 , 使用匿名应用程序可能会导致程序抛出“录制时发生未指定的错误”错误 。
如果您的情况与上述情况类似 , 请尝试在重启 OBS studio 之前删除您的 VPN 客户端或禁用您的代理服务器 。
我们制定了两个指南来解决这两种情况 , 因此请选择与您相关的指南 。
6.1. 禁用 VPN 连接在 Windows 机器上禁用 VPN 服务的方法会有所不同 , 具体取决于它是由 Windows 还是由第三方程序配置的 。
如果您使用的是独立程序 , 则必须转到 VPN 界面并断开那里的连接 。
但是 , 如果您使用内置选项设置 VPN , 则可以通过执行以下操作来禁用它:
  1. 按Windows 键 + R打开“运行”框 。
  2. 然后 , 在键入“ms-settings:network-vpn”后按Enter以启动Windows 设置应用程序中的 VPN 选项卡 。
  3. 在右侧 , 单击您的VPN 连接 。
  4. 从新的上下文菜单中选择删除 , 以防止它干扰与外界的连接 。
  5. 重启OBS Studio , 看看现在录音功能是否正常 。
6.2 关闭代理连接以下是如何做到这一点:
  1. 按Windows 键+ R打开“运行”框 。
  2. 在下一个菜单中键入“ms-settings:network-proxy”  , 然后单击Enter以访问“设置”应用中的“代理”选项卡 。
  3. 在“设置”菜单中 , 导航到“代理”选项卡并选择“手动代理设置” 。
  4. 取消选中屏幕右侧的“使??用 代理服务器”框 。
  5. 关闭代理服务器后重新启动您的 PC , 并尝试再次远程连接 Cisco AnyConnect 以确定问题是否已解决 。