我有一台服务器,装有两块独立的 Nvidia GTX 750 Ti 显卡以及板载 Intel 核显。最初 MCEBuddy 使用板载 CPU 和核显完成所有工作。我勾选了“使用硬件编码”并下拉选择 NVidia。在论坛查找后,我通过把编码选项顺序改成把 “ffmpeg” 放在第一位,成功让 NVidia GPU 参与编码。现在编码确实在用 NVidia GPU,但只能同时进行两个转码任务。我把 MCEBuddy 设置为 4 个并发转码,以为它会在需要时自动调用两块 NVidia GPU。然而实际情况是:它在一块卡上做两个转码,另外两个转码任务仍跑在板载硬件上。
MCEBuddy 是否支持同时使用多块 NVidia 显卡?如果支持,我该怎么做或该查看哪里?我看过日志,日志能识别两块卡并显示它们能力相同。还需要额外设置才能让两块卡都被调用吗?
感谢任何帮助!
Goose
(Goose)
2019年12月10日21:31
2
使用最新的 2.5.1 或更高版本时,无需对任何配置文件进行修改,因为 HandBrake 和 FFmpeg 均已支持 NVIDIA、Intel 和 AMD 的硬件编码器。MCEBuddy 会自动选择硬件和工具。你只需在图形界面中选择相应选项,其余工作由 MCEBuddy 完成。
如果你附上日志,我们就能查看具体情况。
Goose:
如果你附上日誌,我們就能看看發生了什麼事。
感謝回覆,聽到最新版本變得更方便真是好消息。抱歉,我發文時就應該附上日誌。這裡有兩個記錄檔:
第一個:「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)
Goose
(Goose)
2019年12月12日20:23
5
您的 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 驱动。所以我想知道接下来该怎么做?
Goose
(Goose)
2019年12月13日12:51
8
NVidia 將其顯示卡驅動程式限制為大多數非 Quadro 顯示卡一次最多只能同時進行 2 個轉碼串流,這是 NVidia 在驅動程式中設下的人為限制,因此當驅動程式嘗試啟動第 3 個轉碼時就會失敗。解決辦法是聯絡 Nvidia,或不要將轉碼僅限於 NVidia(將其設為 Any)。
部分 Quadro 顯示卡可無限制地同時進行轉碼(無限制)。以下是不同顯示卡限制的對照表:
相關討論串:
https://www.reddit.com/r/PleX/comments/a1s2wu/gtx750_for_transcoding/
以下兩個連結討論如何修補這些限制:
Driver patch for enabling unlimited NVENC sessions
Fixes "Bug" in Nvidia Driver preventing "Unsupported Configurations" from being used on KVM
延伸閱讀:
https://www.reddit.com/r/PleX/comments/9forj0/unlimited_gtx_980_transcodes_encoding_only_due_to/
哇!感谢你做了这么多研究,有些其实我自己也应该去做的。但这又回到了我最初问题的本意。从 MCEBuddy 的角度来看,有没有办法使用第二张 NVIDIA 显卡?我的系统里有两张一模一样的卡,MCEBuddy 识别到并显示两张都具备能力。