Hardware-Dekodierungsfehler aufgrund ungültiger Parameter

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:

[mpeg2video @ 0000026adf73eb00] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed → CUDA_ERROR_INVALID_VALUE: invalid argument

Vielen Dank im Voraus.Frontline_WHRODT_2019_05_14_21_59_00.wtv-Frontline-2019-05-15T07-06-32.9029270-04-00.log.zip (106,0 KB)

Tatsächlich bezieht sich die von den Grafiktreibern gemeldete Fehlermeldung auf decoding und nicht auf encoding. Es wird weiterhin der Hardware-Encoder verwendet:

2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0: Video: hevc (hevc_nvenc) (Main) (hev1 / 0x31766568), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1–1, 2000 kb/s, 29.97 fps, 30k tbn, 29.97 tbc
2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → Metadata:
2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → encoder : Lavc58.42.100 hevc_nvenc

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, Goose. Ich werde es dann einfach in Ruhe lassen, da es offenbar korrekt funktioniert.

Independent Lens_WHRODT_2020_03_30_21_59_00.wtv-Independent Lens-2020-03-30T23-43-56.7z.zip (142,0 KB) Goose, ich sehe ein weiteres Problem. Wenn das Programm startet, rast es mit Handbrake los, bricht aber mit einem Fehler ab und wechselt dann zu ffmpeg, was viel langsamer ist.

Ich habe zwei Konvertierungs-Logs angehängt, die das Problem verdeutlichen. Jede Hilfe ist willkommen.eNASCAR iRacing Pro Invitational Series_FS1HD_2020_03_29_12_59_00.wtv-NASCAR-2020-03-29T16-49-48.log (2,2 MB)

Entweder hat das Quellvideo beschädigte Daten oder Ihr Videotreiber hat einen Fehler und kann sie nicht verarbeiten:

2020-03-30T23:52:19 MCEBuddy.AppWrapper.Handbrake → Encoding: task 1 of 1, 16.18 % (386.94 fps, avg 353.10 fps, ETA 00h06m30s)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] 1048.345459s: Film → Video
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] 1048.879272s: Video → Film
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 00000000050d4dc0] Failed unlocking input buffer!: generic error (20)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 00000000050d4dc0] Failed unlocking input buffer!: generic error (20)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed

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.

Hallo!

Ich erhalte ähnliche Fehlermeldungen bei der Verwendung dieses Befehls:

ffmpeg -re -hwaccel cuvid -hwaccel_output_format cuda -extra_hw_frames 10 -i rtmp://xxxxxxxxx -map 0 -c:v h264_nvenc -b:v 2M -maxrate 2M -qmin 34 -qmax 51 -g 60 -bf 3 -b_ref_mode middle -bufsize 1M -c:a aac -ar 44100 -ac 1 -flush_packets 0 -f mpegts “udp:xxx.xxx.xxx.xxxx:xxxx”

[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.

Bitte gebt mir ein paar Tipps

Grüße!

Warum verwendest du hwaccel für das Decoding? Höchstwahrscheinlich wird es deine Konversion nur durch Bus- und Speicherübertragungs-Overhead verlangsamen.

Hi Goose.

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.

Cheers!

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.