PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cuda encoding mittels GT 730 + FFMPEG


Peterxy
2017-11-21, 13:23:30
Bezugnehmend auf diesen vorausgegangenen Tread: https://www.forum-3dcenter.org/vbulletin/showthread.php?t=585090
möchte ich das Thema GPU encoding zwecks besserer Übersicht in diesen neuen/seperaten Tread hier verlagern.
Von @Screemer kam die Idee als Alternative zum kostenpflichtigen DGindexNV (Cuda Frameserver) über FFMPEG cuvid zu gehen. Das ist jedoch leider langsamer (Filterung läuft nicht über die GPU), die Bildqualität z.t. schlechter. Höherwertigeres Resize wiederum führt zu langen encodingzeiten, womit einzig über cuvid gehen nicht weiterführend ist. Daraufhin hatte ich mir GPU encoding über nvenc noch angesehen:

Dekodierung: GPU (hwacc_cuvid)
Filterung: CPU (yadif,scale area)
Encoding: GPU (nvenc)
interessanterweise lassen sich so selbst mit einer GT 730 parallel 2 videos gleichzeitig encoden. Natürlich ist die Qualität schlechter als reines CPU encode o.ä., andererseits geht es qualitativ "ok" in Anbetracht einer 5x Zeitersparnis.

Womit ich auch zum eigentlichen Punkt komme, inwiefern sich bei nvenc noch was optimieren läßt:
-2pass: Kann es sein das die nvenc 2pass Funktion buggy ist & gar nicht funktioniert? (erhalte immer ein leeres 2pass logifle)
-B Frames & Co:
Wie kann man überprüfen ob die gesetzten Settings angenommen wurden?
(unter Media-Info werden x.264 nvenc settings nicht ausgelesen)


Da der Flaschenhals bei FFMPEG letzlich aber nach wie vor darin liegt, das deint/resize nicht über die GPU ablaufen,
wie kann man ein DGdecNv.avs script über FFMPEG als Eingangsvideo aufrufen oder alternativ FFMPEG nvenc über vdub als externen encoder einbinden? (Versuch endet immer mit der Fehlermeldung "anonymous pipe")

Peterxy
2017-11-22, 13:07:21
EDIT:
Thema hat sich glaub ich erledigt, hab eine Script-Lösung hingebastelt gekriegt und zwar über diesen Weg:
DGDecNV/Cudaframeserver -> avisynth -> FFMPEG nvenc

GPU übernimmt so über DGDecNV:
+ GPU H.264 Dekodierung
+ GPU deinterlace
+ GPU crop
+ GPU resize
+ GPU denoise, shp, blur usw.

Mittels FFMPEG nvenc:
+ GPU encodiert

Die GT730 hat sich nun letztlich doch gelohnt, die Folge einer Serie läßt sich so selbst mit LowEnd Hardware in 5-10Minuten encoden, schneiden + archivieren, da macht aufnehmen wieder Spaß. :tongue:
Den Cudaframeserver mit FFMPEG nvenc kombinieren, sieht btw. qualitativ nicht nur ordentlich aus, sondern ist sogar nochmals doppelt :eek: (!) so schnell wie FFMPEG cuvid + nvenc.

Hätte ich nicht mit gerechnet, das DGDecNV speedmäßig so kraß cuvid aussticht - aber zeigt andererseits nun auch wieviel Leistung das deinterlace/Resize unter FFMPEG schluckt und das cuvid (was nur das Dekoden der CPU abnimmt) letztlich speedmäßig kaum etwas bringt.
(bzw. gar nicht erst bringen kann mangels GPU/Filtersupport, wenn videos von 1080i auf 720p runterskaliert werden sollen o.ä.)