![Wie kann ich Speicher in Grafikkarten freigeben?](https://rvso.com/image/1648621/Wie%20kann%20ich%20Speicher%20in%20Grafikkarten%20freigeben%3F.png)
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_cuda
oderyadif_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.