输出视频长度错误

感谢您提供日志文件!我已经查看过了,它为我们提供了一些很好的线索。

我在日志中看到最突出的问题是这个重复出现的错误:

ERROR> 2025-07-20T15:50:04 --> StartAppWithAdminPrivilegesFromNonUISession WTSQueryUserToken failed (No logged on users) with error 1008. An attempt was made to reference a token that does not exist.
WARNING> 2025-07-20T15:50:04 MCEBuddy.AppWrapper.Comskip --> Unable to create UI Session process with Admin Privileges from NonUI Session. Is any user logged on?
WARNING> 2025-07-20T15:50:04 MCEBuddy.AppWrapper.Comskip --> Retrying process creation as a NonUI Session process with Admin privileges
WARNING> 2025-07-20T15:50:04 MCEBuddy.AppWrapper.Comskip --> Some functions like hardware encoding may not work in this mode

此错误出现了好几次,具体是在 MCEBuddy 尝试运行 Comskip(用于检测广告)和 Handbrake(用于视频转码本身),甚至在查询硬件编码支持(Intel、NVidia、AMD)时。

这表明作为服务运行的 MCEBuddy(MCEBuddy Running as Service : True)在非 UI 会话中(即没有用户登录到服务器桌面时)使用必要的管理员权限启动这些外部应用程序时遇到了麻烦。随后它会在非 UI 会话中重试,但会发出警告,称某些功能(如硬件编码)可能无法正常工作。

与您的底层问题最相关的最关键部分是:

WARNING> 2025-07-20T16:09:24 MCEBuddy.CommercialScan.Scanner --> Empty EDL File

这表明 Comskip 未能创建 EDL(编辑决策列表)文件,MCEBuddy 正是利用该文件来确定广告的位置以及在哪里剪辑视频。由于 EDL 文件为空,MCEBuddy 没有关于如何修剪视频的指令,导致输出文件具有原始(甚至更长)的长度,并且末尾带有“空白片段”。

日志中还出现了重复的 Impaired audio track reported, likely empty channel with no audio(报告受损的音轨,可能是没有音频的空声道)警告,但这不太可能是视频长度不正确的首要原因。

以下是我建议您尝试的操作:

  1. 确保用户已登录(用于测试目的): 尽管 MCEBuddy 设计为作为服务运行,但作为测试,请尝试在您主动登录安装了 MCEBuddy 的 Windows 服务器时重现该问题。这可能会绕过“无登录用户 (No logged on users)”错误以便进行测试。如果此时运行正常,则更强烈地指向服务权限问题。
  2. 将 MCEBuddy 作为应用程序而不是服务运行(用于测试): 暂时禁用 MCEBuddy 服务,并在管理员账户下将 MCEBuddy 作为常规桌面应用程序运行。这将确保它对 UI 会话和管理员权限具有完全访问权限。如果这解决了问题,我们就可以专注于正确配置该服务。
  3. 检查服务账户权限:
    • 打开您的 Windows 服务 (services.msc)。
    • 找到“MCEBuddy 2.x”服务。
    • 右键单击,转到“属性”,然后转到“登录”。
    • 确保它设置为“此账户”,并使用对 D:\tmp 目录和网络共享 (\\max\media2) 具有完全权限的管理员账户。重新输入密码。
    • 您也可以尝试勾选“允许服务与桌面交互”(尽管现代服务较少使用此项)。
  4. 更新显卡驱动程序: 尽管出现了硬件编码警告,但确保您的显卡驱动程序(无论是 Intel、NVIDIA 还是 AMD,视您的服务器而定)为最新版本,有时可以解决视频处理应用程序的意外问题。
  5. 重新安装 Comskip(高级): 如果上述步骤无效,则 Comskip 安装本身可能存在问题。您可以尝试全新安装包含 Comskip 的 MCEBuddy。

让我们从检查服务账户权限并尝试将其作为应用程序运行开始,看看这是否能绕过 WTSQueryUserToken failed 错误。