MCEBuddy 会在一个服务器上使用多个 NVidia 显卡吗?

我有一台服务器,装有两块独立的 Nvidia GTX 750 Ti 显卡以及板载 Intel 核显。最初 MCEBuddy 使用板载 CPU 和核显完成所有工作。我勾选了“使用硬件编码”并下拉选择 NVidia。在论坛查找后,我通过把编码选项顺序改成把 “ffmpeg” 放在第一位,成功让 NVidia GPU 参与编码。现在编码确实在用 NVidia GPU,但只能同时进行两个转码任务。我把 MCEBuddy 设置为 4 个并发转码,以为它会在需要时自动调用两块 NVidia GPU。然而实际情况是:它在一块卡上做两个转码,另外两个转码任务仍跑在板载硬件上。

MCEBuddy 是否支持同时使用多块 NVidia 显卡?如果支持,我该怎么做或该查看哪里?我看过日志,日志能识别两块卡并显示它们能力相同。还需要额外设置才能让两块卡都被调用吗?

感谢任何帮助!

使用最新的 2.5.1 或更高版本时,无需对任何配置文件进行修改,因为 HandBrake 和 FFmpeg 均已支持 NVIDIA、Intel 和 AMD 的硬件编码器。MCEBuddy 会自动选择硬件和工具。你只需在图形界面中选择相应选项,其余工作由 MCEBuddy 完成。

如果你附上日志,我们就能查看具体情况。

感謝回覆,聽到最新版本變得更方便真是好消息。抱歉,我發文時就應該附上日誌。這裡有兩個記錄檔:

第一個:「NASA’s Unexplained Files (2014) - 2019-09-23 07 00 00 - Episode 18.ts-Convert to MP4-2019-12-10T07-06-25.0474815-06-00」使用的是 NVidia GPU,轉換成功。

第二個:「NASA’s Unexplained Files (2014) - 2019-12-10 06 00 00 - Secrets of the Alien Signals.ts-Convert to MP4-2019-12-10T06-00-00.1406690-06-00」使用的是 Intel 處理器。

當時有四個轉換在跑(2 個用 NVidia GPU,2 個用 Intel),我在 NVidia 的工作完成後就停止處理,所以 Intel 的沒跑完。我在 Notepad++ 裡比對兩個檔案,發現 Intel 的記錄裡多次出現這些訊息:

ERROR> 2019-12-10T06:13:08 → StartAppWithAdminPrivilegesFromNonUISession WTSQueryUserToken failed (No logged on users) with error 1008. An attempt was made to reference a token that does not exist.

WARNING> 2019-12-10T06:13:08 MCEBuddy.AppWrapper.FFmpeg → Unable to create UI Session process with Admin Privileges from NonUI Session. Is any user logged on?
WARNING> 2019-12-10T06:13:08 MCEBuddy.AppWrapper.FFmpeg → Retrying process creation as a NonUI Session process with Admin privileges
WARNING> 2019-12-10T06:13:08 MCEBuddy.AppWrapper.FFmpeg → Some functions like hardware encoding may not work in this mode

不太確定這是什麼意思。感謝你的幫忙!如果你能找出為什麼它沒有用到兩張 NVidia 卡,或甚至為什麼在同一張卡上不能跑超過兩個轉換,我會非常感激。

NASA’s Unexplained Files (2014) - 2019-09-23 07 00 00 - Episode 18.ts-Convert to MP4-2019-12-10T07-06-25.0474815-06-00.log (1.2 MB) NASA’s Unexplained Files (2014) - 2019-12-10 06 00 00 - Secrets of the Alien Signals.ts-Convert to MP4-2019-12-10T06-00-00.1406690-06-00.log (1.8 MB)

顺便说一下,我正在使用 2.5.1.1。

您的 Nvidia 顯示卡驅動程式發生錯誤。MCEBuddy 首先嘗試使用 ffmpeg,但您的驅動程式失敗:

2019-12-10T06:16:03 MCEBuddy.AppWrapper.FFmpeg → [h264_nvenc @ 000002241ac32000] OpenEncodeSessionEx failed: out of memory (10)
2019-12-10T06:16:03 MCEBuddy.AppWrapper.FFmpeg → Last message repeated 1 times
2019-12-10T06:16:03 MCEBuddy.AppWrapper.FFmpeg → [h264_nvenc @ 000002241ac32000] No NVENC capable devices found

接著它嘗試使用 HandBrake,但 Nvidia 顯示卡驅動程式再次失敗:

MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 0000000005d708c0] OpenEncodeSessionEx failed: out of memory (10)
2019-12-10T06:16:15 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 0000000005d708c0] OpenEncodeSessionEx failed: out of memory (10)
2019-12-10T06:16:15 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 0000000005d708c0] No NVENC capable devices found
2019-12-10T06:16:15 MCEBuddy.AppWrapper.Handbrake → [06:16:15] encavcodecInit: avcodec_open failed

它沒有使用您的 Intel 硬體,因為您在轉換任務設定中只選擇了 Nvidia(如果您選擇了 Any,它就會自動改用 Intel QuickSync),而是改為使用軟體編碼。

99.999% 的硬體編碼器問題都是因為顯示卡驅動程式有問題。

我明白你的意思,但它在 Nvidia GPU 上同时跑 2 个转码任务时完全正常;只有当并发数调到 4 且超过两个任务时才会失败。如果保持并发数为 2,它就能在那块 Nvidia GPU 上顺利跑完这两个任务。我装的是最新版 Nvidia 驱动。所以我想知道接下来该怎么做?

  1. 您可以嘗試使用不同版本的顯示卡驅動程式。可能是因為記憶體不足,或是硬體對同時進行的轉換數量有限制。我知道某些硬體會將轉換限制在 2 或 4 個串流同時進行。
  2. 您也可以將選項設定為「Any」,這樣當 Nvidia 失敗時,系統會嘗試使用您的 Intel 硬體。
  3. 您也可以直接將同時進行的轉換限制為 2 個。

NVidia 將其顯示卡驅動程式限制為大多數非 Quadro 顯示卡一次最多只能同時進行 2 個轉碼串流,這是 NVidia 在驅動程式中設下的人為限制,因此當驅動程式嘗試啟動第 3 個轉碼時就會失敗。解決辦法是聯絡 Nvidia,或不要將轉碼僅限於 NVidia(將其設為 Any)。

部分 Quadro 顯示卡可無限制地同時進行轉碼(無限制)。以下是不同顯示卡限制的對照表:

相關討論串:
https://www.reddit.com/r/PleX/comments/a1s2wu/gtx750_for_transcoding/

以下兩個連結討論如何修補這些限制:

延伸閱讀:
https://www.reddit.com/r/PleX/comments/9forj0/unlimited_gtx_980_transcodes_encoding_only_due_to/

哇!感谢你做了这么多研究,有些其实我自己也应该去做的。但这又回到了我最初问题的本意。从 MCEBuddy 的角度来看,有没有办法使用第二张 NVIDIA 显卡?我的系统里有两张一模一样的卡,MCEBuddy 识别到并显示两张都具备能力。