Versuche, das zum Laufen zu bringen. Ich habe eine Quadro P1000-Karte, alle CUDA-Tests bestehen, aber bei der Ausführung schlägt es fehl und fällt auf Software zurück. Log-Datei angehängt, hier ist der Fehler, den ich finde:
Tatsächlich bezieht sich die von den Grafiktreibern gemeldete Fehlermeldung auf decoding und nicht auf encoding. Es wird weiterhin der Hardware-Encoder verwendet:
Die Hardware-Decoder-Anfrage von ffmpeg wird von der Grafikkarte abgelehnt und schlägt daher fehl. Es könnte mehrere Gründe geben – möglicherweise wurde der Videostream nicht korrekt erkannt, um den passenden Codec zu verwenden, oder die Karte unterstützt kein MPEG2-Decoding für diese spezifische Stream-Konfiguration.
Einen großen Performance-Gewinn wirst du vermutlich nicht feststellen, da dein Ausgangsvideo MPEG2 ist und MPEG2-Decoding per Software sehr effizient ist. Der Overhead, alle Videodaten in den Grafikspeicher zu kopieren, dort zu decodieren und wieder zurück an ffmpeg zu übergeben, bevor sie erneut zur Kodierung an die Grafikkarte geschickt werden, dauert vermutlich länger. In der Regel erzielt man bei h.264 und h.265 den größten Geschwindigkeitsvorteil durch Hardware-Decoding.
Wenn du es dennoch ausprobieren möchtest, kannst du deiner Profil-Zeile ffmpeg-general folgenden Parameter hinzufügen, der die Karte zwingt, einen bestimmten Hardware-Decoder zu verwenden:
-c:v mpeg2_cuvid
Dieser Parameter muss das letzte Element in der ffmpeg-general-Zeile sein.
Danke, dass du dir das angesehen hast. Ich musste kürzlich meinen Server neu aufsetzen, und als ich meine MCE-Profile neu installierte und wiederherstellte, deaktivierte ich „Bestes Audio auswählen“ und aktivierte „Mehrkanal-Audio“.
Ich kann es nicht erklären, aber seitdem hatte ich das Problem nicht mehr.
Ich erwähne das, falls jemand anderes ein ähnliches Problem hat.
Oder ich hatte einfach einen beschädigten Treiber oder so etwas, und als ich den Server neu aufsetzte, wurde es behoben.
[h264 @ 0x5641628791c0] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed → CUDA_ERROR_INVALID_VALUE: invalid argument
[h264 @ 0x5641628791c0] Using more than 32 (37) decode surfaces might cause nvdec to fail.
[h264 @ 0x5641628791c0] Try lowering the amount of threads. Using 16 right now.
[h264 @ 0x5641628791c0] Failed setup for format cuda: hwaccel initialisation returned error.
Warum verwendest du hwaccel für das Decoding? Höchstwahrscheinlich wird es deine Konversion nur durch Bus- und Speicherübertragungs-Overhead verlangsamen.
Ich habe 30 Live-Kanäle gleichzeitig laufen, der Server hat 2 Quadro P5000 GPUs, ich verwende hwaccel für das Decoding, um die CPUs nicht zu überlasten.
Du wirst es wahrscheinlich verlangsamen und mehr CPU verbrauchen, wenn du das Decoding aktivierst, aus den oben genannten Gründen, wenn du andere Softwarefunktionen verwendest (wie Audio-Encoding, Filter usw.). Versuche, es nicht zu verwenden.