OBS Studio - Verlustfreie Aufnahme & Sammelthread

  • Kurze Frage zur einer Problemlösung. Ich habe alle einstellungen zur x264 übernommen und möchte nun gerne League of Legends aufnehmen. Sobald ich das Programm starte ändern sich die FPS auf 30 und gehen kein stück höher oder runter. Sobald ich OBS schließe gehen sie wieder auf 240-300 FPS. Selbst wenn ich alle Einstellungen von Ultra auf very Low stelle ändert sich nichts. Überall sind 60 FPS eingestellt oder mehr darüber.

    Kann dir leider nicht helfen, da es bei mir das gleiche Spiel ist mit den Einstellungen.

  • Die Szene selber ist also NV12 (bzw das, was man eingestellt hat)

    Definitiv nicht ^^ Glaub mir, sonst würdest du das Spiel nicht anfassen, weil das dermaßen Scheiße aussehen würde beim spielen.


    Das Spiel wird via DirectX oder OpenGL in RGB32 ausgegeben und von OBS auch abgefangen.


    Kein Spiel Entwickler würde Spiele in YUV Farbräumen entwickeln. Keiner.


    Die Frames werden via einem RGB -> YUV Wandler entsprechend umgewandelt, damit später auch die Interpolation auch hinhaut. Sonst wird das schlecht und du hättest, wenn es in NV12 gemacht werden würde von vornherein, überall graue streifen im Bild haben, weil keine Interpolation stattgefunden hat. Weil die Szene ja vorher NV12 war. Und dann sähe das Bild richtig schlecht aus.

  • Definitiv nicht Glaub mir, sonst würdest du das Spiel nicht anfassen, weil das dermaßen Scheiße aussehen würde beim spielen.

    Vllt wandelt die Grafikkarte für OBS es ja um, weil OBS es so anfordert? Weiß ja nicht wie das Teil programmiert ist^^
    Aber logischer fänd ich jetzt auch das OBS es selber umwandelt.^^

  • Vllt wandelt die Grafikkarte für OBS es ja um, weil OBS es so anfordert? Weiß ja nicht wie das Teil programmiert ist^^

    Wenn wir mal bei NVEnc bleiben und davon ausgehen das die GPU dafür sorgt das es NV12 wird, warum wird dann von der PASCAL und einigen anderen Generationen bereits ein YUV 4:4:4 supportet?


    Die GPU hat damit rein gar nix zu tun bei NVEnc. Der NVEnc ist erstmal wie ich dir schon mal irgendwo gesagt habe ein Software Encoder der auf Basis einer GPU arbeitet. Der Chip auf der NVIDIA Karte macht wenn überhaupt über den Codec selbst die Umrechnung von RGB auf den entsprechenden Farbraum. Das wäre dann wohl logischer.


    Heißt im Klartext:
    RGB32 -> OBS Hooking auf DX oder OpenGL -> NVEnc (Nutzt die OBS Settings) -> NVIDIA CHIP (Umwandlung des Farbraumes anhand der NVEnc Einstellung) -> NV12 Aufnahme


    Da NVEnc mehr kann als NV12, YV12 und YUY2, ist halt auch YV24 drin. Jedenfalls wenn man den Beschreibungen von NVIDIA glauben darf.


    Und Shadowplay arbeitet ja noch mal beim Hooking anders. Der Rattenschwanz bleibt jedoch.



    Du weißt ja das MagicYUV auch in der Lage ist Farbräume zu wandeln. Was ja UTVideo z.B. gar nicht kann.

  • @Sagaras Du verwechselst "Szene" mit "Capture"


    Die Szene kann alles enthalten: Capture, Desktop Capture, Text, Bilder, Gifs, Videos... (ist ja eigentlich für streaming gedacht)


    Sprich im vergleich zum normalen Capture Programm wie Afterburner hast du immer einen Schritt mehr


    Afterburner: Capture -> Encoding


    OBS: Capure -> Szene (rendert via GPU) -> Encoding


    Das Capturing mag mit RGB geschehen, das rendern der Szene jedoch mit dem eingestellten Farbraum.


    Hast du im Codec also nochmal was anderes konvertierst du zweimal (es sei denn die Szene steht auf RGB)


    Das ist auch der Grund warum bei hoher GPU Last die FPS zwar stabil sind, die Szene aber FPS drops haben und du das auf der Aufnahme siehst.
    Weil deine GPU das Szenen Rendering nicht mehr schafft (dafür wurde der FPS Counter in der letzten Version eingeführt)


    Glaub mir hab mich stark mit dem Thema beschäftigt :)

  • Ich melde mich hier einfach mal mit einer Frage zu Wort. Ich nutze OBS Studio und habe jetzt schon seit längerem das Gefühl, dass 1080p60 FPS Aufnahmen nicht wirklich aussehen wie 60 FPS. Vor allem jetzt nachdem ich mein System etwas umgestellt habe, wirkt das Ganze wie mit 30 FPS aufgenommen. System ist folgendes:


    2x NVIDIA Geforce GTX 1080 (SLI)
    Intel i7 6950x @ 3.00 GHz
    32 GByte RAM
    1920x1080 Auflösung @ 60Hz


    Ich denke, die Kiste sollte doch locker die x264 Einstellungen aus dem Eingangsbeitrag packen und in guter Qualität speichern? Aufgenommen wird auf ein ROOT-USB3 System mit einer Schreibgeschwindigkeit zwischen 100/110mb pro Sekunde. Woran könnte es also liegen, dass die Aufnahmen teils schlieren und keinesfalls nach "smoothen" 60 FPS aussehen? :/


    Bin für jede Hilfe dankbar! :D

  • wirkt das Ganze wie mit 30 FPS aufgenommen.

    Es ist mir auch schon häufiger aufgefallen, dass OBS Aufnahmen teils nicht so flüssig wirken wie mit manch anderen Aufnahmeprogrammen, bei SLI würde ich aber zuerst mal in den Eigenschaften der Spielaufnahme die Multi-Adapter-Kompatibilität aktivieren.


    ein ROOT-USB3 System mit einer Schreibgeschwindigkeit zwischen 100/110mb pro Sekunde.

    Im Gegensatz zum Rest des Systems erscheint das recht schwach auf der Brust. Kann limitieren, muss aber nicht zwangsweise. Eine einzelne gute interne HDD kommt generell so auf die ~180-190 MB/s.


    die Kiste sollte doch locker die x264 Einstellungen aus dem Eingangsbeitrag packen und in guter Qualität speichern?

    In guter Bildqualität sicher, da mit den Einstellungen aus dem ersten Beitrag verlustfreies Material erzeugt wird. Ist denn die FPS Anzeige unten rechts im OBS Studio Hauptfenster passend? Ansonsten sollte eine Log-Datei mit einem Aufnahmeversuch zumindest etwas Aufschluss darüber geben, woran es letztlich hapert, wenn es mit der obigen Änderung nicht besser werden sollte.


    schlieren

    Hast du da vielleicht einen Screenshot von? Ist wahrscheinlich nichts relevantes, aber Grafikartefakte sollten schließlich nicht auftreten.

  • Es ist mir auch schon häufiger aufgefallen, dass OBS Aufnahmen teils nicht so flüssig wirken wie mit manch anderen Aufnahmeprogrammen, bei SLI würde ich aber zuerst mal in den Eigenschaften der Spielaufnahme die Multi-Adapter-Kompatibilität aktivieren.

    Im Gegensatz zum Rest des Systems erscheint das recht schwach auf der Brust. Kann limitieren, muss aber nicht zwangsweise. Eine einzelne gute interne HDD kommt generell so auf die ~180-190 MB/s.

    In guter Bildqualität sicher, da mit den Einstellungen aus dem ersten Beitrag verlustfreies Material erzeugt wird. Ist denn die FPS Anzeige unten rechts im OBS Studio Hauptfenster passend? Ansonsten sollte eine Log-Datei mit einem Aufnahmeversuch zumindest etwas Aufschluss darüber geben, woran es letztlich hapert, wenn es mit der obigen Änderung nicht besser werden sollte.

    Hast du da vielleicht einen Screenshot von? Ist wahrscheinlich nichts relevantes, aber Grafikartefakte sollten schließlich nicht auftreten.


    Mega nice, danke Dir für Deine Antwort. "Schlieren" sind es jetzt nicht direkt, sieht mehr wie ein typisches "nachziehen" wie bei 30 FPS aus. Kann ich schwer erklären. :D Aber ich hab mal einen Logfile von einer Witcher 3-Testaufnahme hochgeballert, vielleicht findest Du irgendwas? Vielleicht bin ich auch einfach zu verwöhnt von 60 FPS Aufnahmen via ShadowPlay/Fraps, wo es halt echt total smooth und sauber aussieht. OBS Studio ist da scheinbar etwas eigen. Oder ich zu pingelig.


    Zur ROOT: Wie kann man denn die Schreibgeschwindigkeit am besten Testen bei USB? Dann würde ich da mal etwas tiefergehend "testen" als nur einen großen File draufkopieren und die Schreibgröße pro Sekunde beobachten. :D


    http://www.file-upload.net/dow…OBSStudioLogfile.txt.html


    Danke Dir allemal jetzt schon für Deine Mühe! :)

  • Vielleicht bin ich auch einfach zu verwöhnt von 60 FPS Aufnahmen via ShadowPlay/Fraps, wo es halt echt total smooth und sauber aussieht.

    Shadowplay : Nimmt in VFR auf, daher auch so schön weich :) Trotzdem wäres viel angenehmer für die Nachbearbeitung wenn es CFR aufnehmen würde..
    Fraps : Setzt die FPS Rate des Spiels auf ein Vielfaches deiner AufnahmeFPS, zb wenn du in 30fps aufnimmst, und das Spiel liefert damit noch 65 fps, lässt dich Fraps in 60fps spielen, oder liefert es 100 fps, in 90 fps spielen etc, so das im Falle 30 aufnahme, 60 spielen Fraps einfach jeden 2. Frame nehmen kann und nicht aus einem willkürlichem Wühlhaufen sich irgendwelche rauspicken muss.


    Trotzdem find ich das bei Fraps nicht so gut gelöst, weil man kann ja während des Spielens zwischen 50 und 70 schwanken und würde dann ständig umschalten. Im Falle 30fps aufnahme also von 30 und 60 hin- und her schwanken, was natürlich sehr bemerkbar ist wenn ein Spiel auf 30 runterbricht deswegen.
    Bei 60fps haste ja breitere Multis mit 60,120,180 usw. Von daher wirste da nicht viele Umschaltungen erleben, allerdings vermutlich bei den meisten neueren Spielen nicht höher als 60fps spielen können.


    Andere Programme wie DXTory, MSI Afterburner usw lassen die einen Framelimiter selber setzen. So kannste zb sagen FPS Limit = 120. So haste dann zumindest keine eventuellen Umschaltungen mehr.
    Fraps wird irgendwann auch nicht mehr hinhauen, die letzte Version kam ja Anfang 2013 raus und ich denke da wird demnach auch kein Update mehr kommen.

  • @TobinatorLP
    Die Log-Datei zeigt folgendes:

    Zitat

    Output 'adv_file_output': Total encoded frames: 1635
    Output 'adv_file_output': Total drawn frames: 1658
    Output 'adv_file_output': Number of skipped frames due to encoding lag: 17 (1.0%)
    Output 'adv_file_output': Number of lagged frames due to rendering lag/stalls: 217 (13.1%)

    Ganze 13.1% der Frames gingen verloren, weil die GPU(s) nicht hinterherkamen. Das ist bei OBS auch so eine Sache, mit der ich mich nicht anfreunden kann im Gegensatz zu anderen Aufnahmeprogrammen.

    OBS: Capure -> Szene (rendert via GPU) -> Encoding

    OBS nutzt diese zum Rendern der Szene und ist die GPU zu sehr mit dem Spiel ausgelastet, bekommt OBS zu wenig Aufmerksamkeit und Frames werden verworfen. Bei Aufnahmeprogrammen wie Dxtory, MSI Afterburner oder Fraps kann dieser Fall nicht auftreten.



    Glaub mir hab mich stark mit dem Thema beschäftigt

    Weißt du denn auch, wie sich obiges Problem umgehen oder zumindest mildern lässt? Die Vorschau zu deaktivieren und OBS neuzustarten sollte eigentlich kaum etwas bringen, ich erinnere mich aber an ein Demonstrationsvideo von dir dazu, wo es dadurch deutlich besser wurde.

  • @TobinatorLP
    Bist du DER Tobinator? :D
    Wie @Kayten schon sagte 13,1% deiner Frames werden gedroppt, macht statt 60fps etwa 52 fps
    Nimm erstmal die aktuelle Version 16.2 - dort werden dir die FPS unten in der Leiste angezeigt.


    Vorschau deaktivieren macht es definitiv besser (Rechtsklick auf die Szene) es kann aber viele andere Faktoren haben,
    warum du so viele Frames drops,
    zB Skalierungsfilter, Farbraum, SLI oder deine CPU hat zu wenig Lanes für 2 Gafikkarten etc. Ich will da jetzt nicht mit gefährlichem Halbwissen prahlen.


    Was auch gut ist mal iTunes zu installieren, damit wird die CoreAudio Bibliothek installiert und das verwendet OBS dann fürs AAC encoding (besser, schneller, vermeidet viele Probleme)


    Außerdem nutzt du Windows 10 Anniversary Update... da gibt es bei einigen Leuten schlimme Probleme (Liegt an Microsoft - sie arbeiten wohl an einer Lösung)
    Viele Infos dazu hier: https://obsproject.com/forum/t….55256/page-3#post-244374


    Generell kann ich dir das OBS Forum empfehlen ;)


    Leider ist dein Logfile nicht komplett - Beim Beenden von OBS gibts so ne Liste von Infos. die wäre ganz interessant gewesen.

  • Dann kannst du mir ja aus dem Quellcode entsprechend von OBS den Teil der dies bewirkt hier posten. Immerhin ist ja das ganze OpenSource. Also sollte es dir ja möglich sein. ^^
    Wäre dann ein Handfester Beweis. Dann würde ich Ruhe geben. ^^

  • Dann würd ich eher Shadowplay nehmen, wo das wenigstens funktioniert. Aber 1 Ghz VRAM sich abzwacken lassen würde ich nun absolut nicht akzeptieren. Noch hinzukommend das die 60fps Aufnahme eher wie eine 25fps Aufnahme wirkte. Aber vllt klappts ja bei deinem Battlefield etwas besser. Weiß ich ja nicht.
    Shadowplay ist zwar lossy, aber wenn du 1440p aufnimmst, kann man zumindest mit dem Material noch was anfangen, da es da eig. artefaktfrei ist. Bei komplexem Material können sich jedoch marginale bilden. Besser als NVEnc in OBS aber allemal, sollte bei dir das gleiche ablaufen wie bei mir. Den Encode würd ich aber möglichst hochwertig dann machen, damit dein 2. Transcode so wenig Schaden wie möglich macht. Bei x264's CRF dürfte aber hauptsächlich nur die Dateigröße anwachsen bei einer Lossy Quelle.

  • Bei x264 bitte NV12 nutzen und bei NVEnc bitte auch. Die können das verarbeiten in der Regel und der Farbraum ist wesentlich Performanter bei der Aufnahme.


    UTVideo kann bloß kein NV12, da ist I420 dann anzuraten als gleichwertigen Farbraum.


    Wie sieht's eigentlich mit der Effizienz bei lossless Aufnahmen mit NVENC aus im Vergleich zu Utvideo und Co.?

Jetzt mitmachen!

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