OBS NVENC 4k Aufnahme mit ffmpeg in h.265/HEVC und h.264/AVC

  • Hey Leute!


    Hab jetzt auf ein 4k Aufnahmesetup gewechselt und da hat sich mit meinen bisherigen Einstellungen ein Problem ergeben. Hab bis jetzt immer mit OBS über NVENC in 3000x1080 um rechts neben der Full HD Game Aufnahme noch meine Facecam aufzunehmen. Für 4k dachte ich, ich gehe dann einfach auf 4920x2160 und alles ist gut. Ging aber nicht, da NVENC mit h264 maximal 4096x4096 unterstützt, da bleibt für die Facecam kein Platz mehr.


    Mit h.265 werden höhere Auflösungen unterstützt, nur unterstützt OBS das leider nicht direkt. Über FFMPEG bin ich prinzipiell schon soweit gekommen, dass die Aufnahme läuft mit diesen Settings:



    2 Dinge hätte ich noch gerne anders: Wenn ich schon über ffmpeg aufnehme, müsste ich doch eigentlich auch FLAC nutzen können. Wenn ich auf FLAC umstelle, kommt aber folgender Fehler beim Aufnahmestart:


    Jemand ne Ahnung was da evtl. schief läuft?


    Und optimalerweise würde ich gerne als mkv aufnehmen, wenn ich den Container auf Matroska umstelle, wird aber kein nvenc_hevc angeboten.. Hat dazu jemand ne Idee?


    Oder falls jemand ganz andere/bessere Möglichkeiten kennt mit Facecam in 4k aufzunehmen bin ich da natürlich auch offen...

  • Nochmal als Nachtrag, für diejenigen, die evtl. auch über OBS und ffmpeg aufnehmen wollen:


    Meine aktuellen Video Encoder Setting für NVENC h.265/HEVC mit konstanter Quantisierung und 120er gop:

    preset=hq rc=constqp qp=14 tier=high level=6.2 g=30 forced-idr=1 bf=0 rc-lookahead=30

    Achtung bei RTX Karten kann man die B-Frames größer 0 setzen, auf 2 oder 3 z.B.. Kann ich aber nicht testen, da ich noch eine GTX 1070 habe...


    Ich habe gestern noch ein wenig mit De-M-oN gechattet, er meinte, das man auch einen CRF Modus hinbekommt, wenn man das Rate Control auf VBR setzt, den Qualitätsparameter setzt und die Bitrate auf 0 stellt. Das sähe dann z.B. so aus:

    preset=hq level=6.2 tier=high rc=vbr b=0 cq=21 g=30 forced-idr=1 bf=0 rc-lookahead=30 maxrate=960000000 bufsize=960000000

    Siehe obigen B-Frame Hinweis, habe den Aufnahmemodus noch gar nicht getestet. maxrate und bufsize sollten auf maximalen Wert gesetzt werden, den habe ich in h.264 noch nicht ausgetestet. Siehe RE: OBS NVENC 4k Aufnahme mit ffmpeg in h.265/HEVC und h.264/AVC


    Oder hier noch variable Bitrate, ebenfalls ungetestet:

    preset=hq level=6.2 tier=high rc=vbr b=100000K maxrate=130000K bufsize=260000K g=30 forced-idr=1 bf=0 rc-lookahead=30

    Siehe obigen B-Frame Hinweis, habe den Aufnahmemodus noch gar nicht getestet.

    Die Werte für die Bitraten habe ich von Train92-YT übernommen, da ich selbst den Modus nicht nutze.


    Die GOP Angabe kann man auch höher setzen, das würde noch etwas Speicherplatz sparen, aber beim editieren ist bessere Spulbarkeit angenehm...


    Wichtig ist auf jeden Fall immer, das Level auf 6.2 und das Tier auf high zu stellen, um die Bitraten nicht zu limitieren und dem Encoder maximalen Spielraum zu geben.


    Und noch ein Hinweis zu OBS: Man kann den Standard AAC Encoder noch durch den besseren CoreAudio AAC Encoder ersetzen: https://obsproject.com/forum/r…-aac-encoder-windows.220/

    Also den AppleApplicationSupport aus dem iTunes Setup extrahieren und installieren. Da Apple auf Windows iTunes nur noch über den MS Store installiert, hab ich mir den Installer von heise runtergeladen: https://www.heise.de/download/product/itunes-18786


    Ohne den CoreAudio AAC Encoder steht im Log: [CoreAudio encoder]: CoreAudio AAC encoder not installed on the system or couldn't be loaded

    Mit steht dort: [CoreAudio encoder]: Adding CoreAudio AAC encoder


    Besser wär natürlich FLAC, aber FLAC nimmt bei mir immer nur mit 16Bit Tiefe statt 24 Bit auf, ich habe noch nicht geschafft ihn auf 24 Bit zu forcen, deswegen bleibe ich erstmal bei AAC mit 320KBit...

  • Drexel

    Hat den Titel des Themas von „OBS NVENC 4k Aufnahme mit h265/hevc“ zu „OBS NVENC 4k Aufnahme mit h.265/HEVC“ geändert.
  • Was meinst Du mit Peformance? Prinzipiell ergibt h.265 Komprimierung kleinere Dateien, auf RTX Karten noch mehr als auf GTX Karten, da GTX Karten keine B-Frames unterstützen... Und h.265 auf NVENC lässt halt höhere Auflösungen zu, das ist meine Hauptmotivation gewesen, mal h.265 auszutüfteln...

  • So um die Frage zur Performance nochmal etwas genauer zu beantworten:

    Ich habe gerade eine Aufnahme gemacht und mal ins Log File geschaut, da steht:


    Die Aufnahme ist 1 Stunde und 3 Minuten lang, also 40 geskipte Frames in einer Stunde so wie ich das sehe. Scheint mir vertretbar zu sein, ich habe ehrlich gesagt bei den h.264 in 3000x1080x60fps nie drauf geachtet, ob sowas im Log steht.


    Aufgenommen wieder Crash Bandicoot 4 in 4920x2160x60fps, das Game ist so semi anspruchsvoll vom Encode denke ich, es rendert intern zwar nur in FullHD afaik auch wenn die Konsole auf 4k gestellt ist, aber es läuft mit 60fps, d.h. jeder Frame ist anders und nicht nur jeder zweite wie bei 30fps.


    Wie das evtl. bei etwas anspruchsvolleren Games einer PS5 aussieht muss ich mal abwarten.

  • Und weitere Forschungsergebnisse.


    Hab heute nochmal ne Testaufnahme 3840x3240x60fps in h.264 gemacht mit Crash Bandicoot 4 und die Facecam drunter platziert, das geht ja auch noch. =)


    Also kein geskippten Frames, die 2 scheinen am Ende nicht verarbeitet worden zu sein.


    Dateigröße ist wundersame relativ gleich, bin auch mit beiden Encodern in nem Bereich, wo ein besserer Qualitätsparameter nix mehr bringt... Das kann natürlich bei detailreicheren 4K oder 144op Games noch anders werden. Muss ich mal im Auge behalten.


    Aufnahme wieder ffmpeg diesmal mit NVENC h264_nvenc (libx264) im "CRF" Modus und folgenden Parametern:

    preset=hq profile=high level=62 rc=vbr cq=18 g=30 forced-idr=1 bf=0 rc-lookahead=30 b=0 maxrate=960000000 bufsize=960000000

    Den Level Parameter habe ich weggelassen, den kann man maximal auf 5.1 setzen mit NVENC h.264 und 5.1 heißt maximal 4Kx30fps. Wenn ich den höher als 5.1 setze bekomm ich auch ne Fehlermeldung. Wenn er nicht als Paramter gesetzt wird, wird er aber automatisch auf 6 gesetzt... =O Das war Quatsch, siehe RE: OBS NVENC 4k Aufnahme mit ffmpeg in h.265/HEVC und h.264/AVC


    Ich denke ich bleib dann doch erstmal bei h264 Aufnahme, hab ja mit der vertikalen Erweiterung noch Platz für meine Facecam gefunden. =) Mit ner 3070 gibt's dann nochmal einen HEVC Versuch.

  • Was hier vergessen wurde, er nimmt nur von Konsole auf. ;)

    Denke das spart einigen die Fragen ob es Performance frisst in einer Fensteraufnahme oder einer ins Spiel gehookte von Spiele am PC. Das muss man dann selber testen.

  • Was hier vergessen wurde, er nimmt nur von Konsole auf. ;)

    Denke das spart einigen die Fragen ob es Performance frisst in einer Fensteraufnahme oder einer ins Spiel gehookte von Spiele am PC. Das muss man dann selber testen.

    Verdammt, hätte ich mir bei Crash Bandicoot wohl selbst denken können :D

    Egal, trotzdem vielen Dank für die Infos ;)

  • Naja, der NVENC Encoder frisst eigentlich keine Grafikleistung der GPU.


    Was ich aber merke ist, dass die CPU Belastung über ffmpeg deutlich höher ist, bei OBS Standard liegt die bei 12-15% während der Aufnahme, über ffmpeg bei 30-35%

  • Ich hab nochmal mit h.264 rumgespielt und festgestellt, dass man es damit schafft den Encode einer GTX1070 zu überlasten mit High Quality Profile. :)

    Also mit High Quality Profile ohne B-Frames aufnehmen oder mit Fast/High Performance Profile und B-Frames aufnehmen. Dann muss man evtl. mit dem Quality Parameter schon weiter runter um alle Details zu erfassen. Ist irgendwie ein wenig Bitschupserei wofür man sich letztendlich entscheidet denke ich.


    Das Überlasten kann aber auch den normalen Aufnahmemodus passieren habe ich festgestellt, also auch OBS schützt einen nicht vor allen Dummheiten. :)

  • Naja wenn man nach der Aufnahme eh nachcodiert würde ich High Performance Profil nehmen.


    Ich sehe nicht so viel Sinn darin die Grafikkarte mit H.265 bei Aufnahme zu belasten.

    Außerdem lässt sich H.265 wesentlich schlechter decodieren, was sich beim Seeking in der Timeline Software als auch bei der Encodezeit auswirkt

  • Anfangs ging's mir darum, dass die Auflösung mit Facecam nicht ausgereicht hat bis ich auf den Trichter gekommen bin sie unter dem Video zu platzieren...


    Bin jetzt auch erstmal wieder bei h264 Mal sehen was ne neue Grafikkarte bringt. Man spart in h265 halt auch Platz...

  • Mir ist vorhin aufgefallen, dass es hier schonmal ein ähnliches Thema von Dream gab, was ich aber wohl aus den Augen verloren habe: OBS Studio - Mit NVENC effizient aufnehmen


    Nur wird dort mit qmin und qmax gearbeitet statt dem cp Wert für "CRF". Das kann Vorteile habe, wenn der Level Paramter zu sehr einschränkt evtl.


    Mir ist noch aufgefallen, dass meine so erzeugten Dateien ziemlich Träge zu bearbeiten sind, jeder Click auf der Timeline und jeder Cut dauert min 5 Sek, bin mir nicht sicher, ob es nur an 4K liegt oder evlt. an der GOP Size z.B. Werde mal die GOP Size auf 30 setzen und schauen. Auch bietet TMPGENC an ein Proxy FIle zu erstellen, das probier ich auch mal, das wär aber umständlich, weil der Encode für das Proxy File auch dauert...

  • Drexel

    Hat den Titel des Themas von „OBS NVENC 4k Aufnahme mit h.265/HEVC“ zu „OBS NVENC 4k Aufnahme mit ffmpeg in h.265/HEVC und h.264/AVC“ geändert.
  • Zur besseren Editierbarkeit habe ich die GOP mal auf maximal 30 beschränkt und auf jeden I-Frame als IDR I-Frame erzwungen, also g=g=30 forced-idr=1. So kann ein Frame nach dem I-Frame nicht auf einen Frame vor den I-Frame referenzieren, was sonst möglich wäre. Das hat bei mir die Editierbarkeit wieder auf ein erträgliches Niveau gebracht in 4K.

  • Ich hatte heute wieder weitere erhellende Erkenntnisse:


    OBS scheint die maxrate und bufsize immer auf 120.000.000 zu setzen. Also die maximale Bitrate. Das sind ca. 14, Megabyte pro Sekunde. Das ist für einen VBR Modus welcher Art auch immer verheerend.

    Ich dachte immer der NVENC "CRF" Modus ist viel platzsparender als der CQP Modus, ist er aber nicht, ich bin nur vor dieses Limit gelaufen.

    Wenn ich die maxrate und bufsize mal auf ihren maximalen Wert setze, das sind 960.000.000, werden die Dateien auch wieder größer und der Level wird auf einmal auf 6.2 gesetzt und nicht nur auf 6. (Wenn man maxrate und bufsize auf 0 setzt bleiben die auf 120.000.000...)

    Generell scheint es egal zu sein, welchen Level man explizit setzt, der scheint immer automatisch Anhand von Auflösung und max Bitrate gesetzt zu werden. Wenn ich den nämlich manuell auf 6.2 setze, aber die Standard maxrate lasse, wird 6 draus. Generell ist dämlich, dass er die maxrate nicht an den Level anpasst, sondern umgekehrt.


    Mein Fazit ist auf jeden Fall, dass die Levelangabe in OBS egal ist, wenn man einen "CRF" Modus über VBR will (egal ob per cq Parameter oder qmin, qmax Kombi, der Encoder scheint sich strikt an das maxrate Limit zu halten), muss man die maxrate auf den maximalen Wert setzen um dem Encoder maximalen Spielraum zu geben.

    Den Level Parameter habe ich weggelassen, den kann man maximal auf 5.1 setzen mit NVENC h.264 und 5.1 heißt maximal 4Kx30fps. Wenn ich den höher als 5.1 setze bekomm ich auch ne Fehlermeldung. Wenn er nicht als Paramter gesetzt wird, wird er aber automatisch auf 6 gesetzt... =O

    Das stimmt btw nicht so ganz, ich habe ihn nur im falschen Format gesetzt. Man muss 62 statt 6.2 schreiben. Aber wird ja eh wie gesagt wieder automatisch korrigiert.


    Für den CQP Modus sind die maxrate Limits anscheinend egal, da geht er strikt nach eingestelltem QP Wert, zumindest sprengen die Dateigrößen bei niedrigem QP Wert die maxrate von 120.000.000 deutlich.


    Wahrscheinlich auch interessant für De-M-oN  Dream  Xaymar

  • Gerade noch eine interessante Entdeckung im OBS Log gemacht:

    Zitat

    10:06:49.302: error: Value 62.000000 for parameter 'level' out of range [0 - 51]

    Also man kann doch Level 6.2 nicht explizit setzen, aber wenn man die max Bitrate hochschraubt, setzt er automatisch 6.2. Aber solang die Level Angabe richtig formatiert ist (ohne . zwischen den Zahlen), schmeißt er keine Fehlermeldung beim Drücken des Aufnahmeknopfs sondern schluckt den Fehler einfach...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!