Wie kann ich Speicher in Grafikkarten freigeben?

Wie kann ich Speicher in Grafikkarten freigeben?

Ich verwende NVIDIA Quadro P620.

Ich habe ffmpeg mehrmals zum Transkodieren mit meiner GPU verwendet, mit dem Befehl

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.avi -c:v h264_nvenc output.mp4

Dann bricht ffmpeg die Transkodierung ab und sagt mir:

No decoder surfaces left

Es scheint, dass der GPU-Speicher gefüllt und nicht freigegeben wurde. Wenn ich entferne-hwaccel_output_format cudaOption, die Transkodierung funktioniert wieder.

Wie leere ich den GPU-Speicher? Wie verwalte ich den GPU-Speicher in Windows 10?

Antwort1

Dies scheint ein bekannter Fehler zu sein:
#7562 Offener Defekt bei Verwendung von -hwaccel nvdec führt zu „Keine Decoderoberflächen mehr vorhanden“ bei Interlaced-Eingabe und 3 oder mehr B-Frames..

Die in diesem Beitrag vorgeschlagenen Problemumgehungen waren:

  • Fügen Sie den Parameter hinzu-extra_hw_frames 3
  • Benutzen Sie den Filter scale_cudaoder yadif_cuda.

Antwort2

Versuch, die obige Lösung zu verbessern.

  ffmpeg -hwaccel cuda -hwaccel_output_format cuda -extra_hw_frames 5 -i input.mp4  -c:v h264_nvenc -b:v 5M output.mp4

Wir müssen die zusätzlichen Threads hinzufügen, die nach dem hwaccel-Ausgabeformat benötigt werden. Wenn Sie es nach der Eingabe einfügen, erhalten Sie möglicherweiseCodec AVOption extra_hw_frames (Number of extra hardware frames to allocate for the user)

Sie können je nach Maschine mit extra_hw_frames spielen.

Antwort3

Dies wird durch die Änderung der Standardanzahl von B-Frames von 0 auf auto (also -1) verursacht. Passierte hier:https://github.com/FFmpeg/FFmpeg/commit/a0949d0bcb0eee2f3fffcf9a4810c0295d14c0dc

Die Problemumgehung besteht darin, -bf 0 nach -c:v h264_nvenc zu verwenden oder -extra_hw_frames 5 oder mehr vor der Eingabe hinzuzufügen oder einige Threads aus -hwaccel cuda zu entfernen (Threads sind hier ein weiterer Fehler:https://trac.ffmpeg.org/ticket/8948#comment:4).

https://trac.ffmpeg.org/ticket/7562betrifft speziell das Deinterlacing von Inhalten, es scheint behoben zu sein.

verwandte Informationen