OBS Streaming - Performanceprobleme (Details im Thread)

Quafi

Ensign
Registriert
Apr. 2017
Beiträge
197
ZUSAMMENFASSUNG FÜR NEUANKÖMMLINGE:
Die Streamingperformance von OBS Studio ist stark eingeschränkt, da, die Vordergrundanwendung in Bezug auf die GPU priorisiert wird und, sobald diese die Grafikleistung auslastet, OBS somit nicht ausreichend Ressourcen erhält, um einen stabilen Stream liefern zu können.
Das ist ein bekanntes Problem von einer der neueren Windows 10 Versionen, welches allerdings erst auftritt wenn die GPU voll ausgelastet ist. Dann bekommt OBS keine Zeit mehr ab für das Compositing und hat Aussetzer.
Eine Lösung steht noch offen.

--------------------

Hallo beisammen,
entschuldigt den schwammigen Titel, ich wusste nicht, wie ich das Problem gescheit in Kurzform beschreiben soll.

Ich habe soeben versucht, mit OBS Studio zu streamen. Jedoch ist die Performance eine Katastrophe.
Sobald ein Spiel aktiv im Vordergrund ist, verliere ich über 60% der Frames aufgrund von Renderingverzögerung, der Stream fällt von 60fps auf 10fps ab.
Interessant zu bemerken ist, sobald ich aus dem Spiel heraustabbe und es nicht mehr das aktive Fenster ist, springt der Stream auf stabile 60fps ohne Probleme hoch. Dabei pausiert sich das Spiel (mit mehreren getestet, hier als Beispiel DeadbyDaylight) jedoch nicht sondern rendert brav weiter, somit dürfte die Belastung des Systems eigentlich nicht sinken, wodurch sich eine Hardwarelimitierung doch eigentlich ausschließen würde.

Ich bin ein bisschen mit meinem Latein am Ende und hoffe jetzt inständig auf eure Ideen ;)

Specs:
CPU: Intel i7-5820K @4,1Ghz
RAM: 32GB (Quad Channel @ 2667 Mhz)
GPU1: NVIDIA GTX 1080
GPU2: NVIDIA GTX 1050

Die 1050 ist in OBS Studio als Rendering-GPU ausgewählt, um die Rechenlast von der 1080 auszulagern. Jedoch macht es in Hinsicht auf dieses Problem keinen Unterschied, welche GPU hierfür ausgewählt ist.

Der Stream läuft für gewöhnlich auf 1440p60fps@20Mbit/s, jedoch hat auch eine geringere Einstellung von 720p60fps@5Mbit/s keine Abhilfe geschaffen.
 
Zuletzt bearbeitet: (Zusammenfassung)
Tadaa!
 

Anhänge

  • Zwischenablage01.png
    Zwischenablage01.png
    69,8 KB · Aufrufe: 733
  • Zwischenablage02.png
    Zwischenablage02.png
    39,8 KB · Aufrufe: 706
  • Zwischenablage03.png
    Zwischenablage03.png
    52 KB · Aufrufe: 741
  • Zwischenablage06.png
    Zwischenablage06.png
    79,9 KB · Aufrufe: 656
  • Zwischenablage07.png
    Zwischenablage07.png
    40,8 KB · Aufrufe: 535
  • Zwischenablage08.png
    Zwischenablage08.png
    67,8 KB · Aufrufe: 597
Moin,

kann sein, dass die kleine GPU das einfach nicht packt bzw. es da Probleme mit den zwei GPUs gibt. Probier mal bitte nicht mit NVENC zu encoden, sondern einfach x264, so dass deine CPU den Job übernimmt. Das Teil hat ja schon ordentlich Power. Grundsätzlich würde immer die CPU als Encoder nehmen, da diese oft kaum belastet wird im Vergleich zur GPU, wenn's ums Spielen geht.

Und ganz wichtig: Game Capture als Capture Source nutzen, nicht Window oder Screen Capture. Falls du das schon tust, dann folgende Änderungen testen:

- Keyframeintervall einmal bitte auf 2 stellen, ist normalerweise der Standard.
- Profile mal mit high, mal mit main testen und schauen, welches besser läuft.
- Skalierungsfilter einmal auf Bicubic testen.
- Wenn du x264 nutzt, dann Prozessorauslastung-Voreinstellung erst mal auf "veryfast" lassen. Kannst du, wenn's dann läuft, noch immer hochstellen.

Mit den Settings dann einmal folgendes probieren:

- Fang mal klein an und probier' erstmal 720p60FPS@6Mbit/s.
- Wenn das so hinhaut, dann hau mal auf 1080p60FPS@12Mbits/s.
 
Die GPU wird beim Encoden auch nicht groß belastet, da sowohl bei NVIDIA als auch beim AMD dafür ein seperater Teil der GPU die Arbeit übernehmen.
Die CPU wird bei einem 1440p60 Stream allerdings ziemlich schwitzen. Könnte auch sein, dass das für die GPU schon etwas zu viel ist.
 
Mit Nvidias Hardwarelösung verliert man vielleicht 3% GPU Performance, CPU würde ich nicht benutzen.
 
Wenn ich, ohne ein Spiel zu spielen streame, ist die CPU zu 25% - 35% ausgelastet, die 1080 als auch die 1050 zu 33%. Bei der 1050 beschränkt es sich hierbei auf die Videoencodierung, die 1080 rechnet gleichzeitig noch mit dem Decodieren (verm. der Hintergrundvideos und Webcam) sowie 3D-Berechnung von OBS beschäftigt. Rendert also offensichtlich auch fleißig mit.

Die CPU zu verwenden hat qualitativ schlechtere Ergebnisse erzielt, da die einfach nicht stark genug ist, das selbe wie der Chip der GPU zu leisten. Ich müsste sie mit dem veryfast preset rechnen lassen um nicht von der CPU limitiert zu werden. Sobald ein GameCapture eingefügt wird, besteht das Problem jedoch weiterhin - wenn auch weniger stark.

Ich verwende zwei verschiedene Methoden, das Spiel abzugreifen, je nach Kompatibilität. Entweder, den GameCapture-Modus von OBS, oder einen DirectView-Stream, welcher als Videoaufnahmegerät eingebunden wird. Bei beiden tritt die selbe Problematik auf.

Keyframeintervall bleibt bei 4, da das der Standard für YouTube-Streams ist ;)

Und wie schon gesagt, eine geringere Auflösung bringt keine Abhilfe mit sich.

Es macht mir den Eindruck, als würde irgendeine Priorisierung im Hintergrund die Ressourcen von OBS limitieren, wenn ein Spiel im Vordergrund ist. Denn merke, sobald dieses Spiel nicht mehr das aktive Fenster ist, läuft alles perfekt.
 
Das ist ein bekanntes Problem von einer der neueren Windows 10 Versionen, welches allerdings erst auftritt wenn die GPU voll ausgelastet ist. Dann bekommt OBS keine Zeit mehr ab für das Compositing und hat Aussetzer. Aber wie gesagt, das tritt eigentlich erst unter Volllast auf.
 
Sobald das Spiel in OBS reinkommt, fällt die Performance enorm ab. Wenn ich spiele, aber kein GameCapture in OBS einbinde, ist der Stream hervorragend. Aber sobald das aktive Spiel in OBS eingebunden wird, fällt es drastisch ab.
Zudem: Die fps fallen auch Ingame von 120fps auf 50fps.
Ergänzung ()

McClane schrieb:
Das ist ein bekanntes Problem von einer der neueren Windows 10 Versionen, welches allerdings erst auftritt wenn die GPU voll ausgelastet ist. Dann bekommt OBS keine Zeit mehr ab für das Compositing und hat Aussetzer. Aber wie gesagt, das tritt eigentlich erst unter Volllast auf.
Nun, das ist sie ja. Die Spiele lasten sie ja zu 100% aus. Ich frage mich nur, wieso das Problem dann nicht auftritt, wenn die Spiele im Hintergrund aktiv sind. Gerendert wird ja trotzdem. Windows scheint wohl bei einem aktiven Spiel die anderen Anwendungen zu drosseln. Ist hier ein Workaround bekannt?
 
McClane schrieb:
Die GPU wird beim Encoden auch nicht groß belastet, da sowohl bei NVIDIA als auch beim AMD dafür ein seperater Teil der GPU die Arbeit übernehmen.

Mag stimmen mit der Dedizierung der Last auf bestimmte Teile der GPU, kann jedoch nach persönlicher Erfahrung nicht bestätigen, dass das Ergebnis besser ist bzw. das Streaming keinen EInfluss hat. Wenn ich ein Spiel spiele, was schon an nahe an die 100% GPU-Leistung zieht (was die meisten neuen Spiele heutzutage gut hinkriegen sollten, vor allem bei hohen Auflösungen), dann ergibt es meines Erachtens nach keinen Sinn, die GPU auch noch mit dem Streaming zu belasten. Wie erwähnt waren das aber vielleicht nur meine persönlichen, schlechten Erfahrungen.

nicK-- schrieb:
Mit Nvidias Hardwarelösung verliert man vielleicht 3% GPU Performance, CPU würde ich nicht benutzen.

Hier quasi dieselbe Antwort. Wenn man sich mal Ein- sowie Zwei-PC-Setups von professionellen Streamern anschaut, dann wird dort dortlich mehr Wert auf CPU-Power gesetzt und das Streaming wird auch von dieser in den meisten Fällen übernommen. Will damit nicht sagen, dass dies zum besten Ergebnis führt, jedoch ist das Encodieren durch die CPU von den meisten als Standardlösung akzeptiert und sollte in der Regel auch funktionieren. Ich konnte mit einem i5 3570k auch diverse Spiele in 720p@60FPS respektive 1080p@30FPS recht problemlos streamen.

Wenn ich, ohne ein Spiel zu spielen streame, ist die CPU zu 25% - 35% ausgelastet, die 1080 als auch die 1050 zu 33%. Bei der 1050 beschränkt es sich hierbei auf die Videoencodierung, die 1080 rechnet gleichzeitig noch mit dem Decodieren (verm. der Hintergrundvideos und Webcam) sowie 3D-Berechnung von OBS beschäftigt. Rendert also offensichtlich auch fleißig mit.

Die CPU zu verwenden hat qualitativ schlechtere Ergebnisse erzielt, da die einfach nicht stark genug ist, das selbe wie der Chip der GPU zu leisten. Ich müsste sie mit dem veryfast preset rechnen lassen um nicht von der CPU limitiert zu werden. Sobald ein GameCapture eingefügt wird, besteht das Problem jedoch weiterhin - wenn auch weniger stark.

Ich lese daraus, dass du also auch schon x264 erfolglos probiert hast? Sicherlich erzielst du mit x264 und schnellem Preset kein so tolles Ergebnis, darum geht's es bezüglich deines Problems jedoch erst mal gar nicht. Interessant zu wissen ist erst einmal, ob du immer noch heftige Performanceverluste hast, wenn du einen recht anspruchslosen Stream aufsetzt (was ja der Fall zu sein scheint).

Ich verwende zwei verschiedene Methoden, das Spiel abzugreifen, je nach Kompatibilität. Entweder, den GameCapture-Modus von OBS, oder einen DirectView-Stream, welcher als Videoaufnahmegerät eingebunden wird. Bei beiden tritt die selbe Problematik auf.

Keyframeintervall bleibt bei 4, da das der Standard für YouTube-Streams ist ;)

Und wie schon gesagt, eine geringere Auflösung bringt keine Abhilfe mit sich.

Es macht mir den Eindruck, als würde irgendeine Priorisierung im Hintergrund die Ressourcen von OBS limitieren, wenn ein Spiel im Vordergrund ist. Denn merke, sobald dieses Spiel nicht mehr das aktive Fenster ist, läuft alles perfekt.

Dann könntest du einfach noch mal Window- oder Screen-Capture testen und schauen, was das ausmacht. Wenn das Ergebnis da tatsächlich besser ist, als bei Game-Capture, dann stimmt wirklich was nicht.

Keyframe-Intervall-Standard bzw. empfohlenes Setting ist 4 bei Youtube? Sicher? https://support.google.com/youtube/answer/2853702?hl=de

Keyframe-Frequenz:

Zwei Sekunden empfohlen

nicht mehr als vier Sekunden

Tritt das Problem bei wirklich jedem Spiel bei dir auf? Hast du schon mal andere Spiele getestet, welche weniger anspruchsvoll sind? Bzw. hast du das Problem schon von Anfang an oder ist es erst aufgetaucht?
 
reVr0x schrieb:
Ich lese daraus, dass du also auch schon x264 erfolglos probiert hast? Sicherlich erzielst du mit x264 und schnellem Preset kein so tolles Ergebnis, darum geht's es bezüglich deines Problems jedoch erst mal gar nicht. Interessant zu wissen ist erst einmal, ob du immer noch heftige Performanceverluste hast, wenn du einen recht anspruchslosen Stream aufsetzt (was ja der Fall zu sein scheint).
Exakt. Ultrafast ist jetzt nicht so unbedingt für seine Qualität bekannt ^^ Und selbst mit x264 ändert sich ja nichts am Problem.

reVr0x schrieb:
Keyframe-Intervall-Standard bzw. empfohlenes Setting ist 4 bei Youtube? Sicher?
Ich hatte gestern Restream ausprobiert, da wurde ich angemeckert, ich solle doch vier Sekunden einstellen ^^ Naja, egal, steht jetzt wieder auf 2. Passt.

reVr0x schrieb:
Dann könntest du einfach noch mal Window- oder Screen-Capture testen und schauen, was das ausmacht. Wenn das Ergebnis da tatsächlich besser ist, als bei Game-Capture, dann stimmt wirklich was nicht.
Nein, die Performance ist hierbei auch nicht besser. Es ist wirklich so, sobald ein Spiel im Vordergrund ist und die GPU auslastet, geht die Performance in den Keller.

Getestet mit diversen Spielen.
 
reVr0x schrieb:
Grundsätzlich würde immer die CPU als Encoder nehmen, da diese oft kaum belastet wird im Vergleich zur GPU, wenn's ums Spielen geht.
Das ist Unfug, die GPUs haben dedizierte Schaltkreise für das Video De- und Encoding. Mit OBS geht etwas Leistung verloren, da es einen Overhead gibt die Bilder für das Video abzugreifen, nVidias Shadow Play beispielsweise kann direkt auf den Framebuffer zugreifen und kostet quasi überhaupt keine Leistung (von etwas I/O für Netzwerk und/oder Speichermedium abgesehen).
reVr0x schrieb:
Hier quasi dieselbe Antwort. Wenn man sich mal Ein- sowie Zwei-PC-Setups von professionellen Streamern anschaut, dann wird dort dortlich mehr Wert auf CPU-Power gesetzt und das Streaming wird auch von dieser in den meisten Fällen übernommen. Will damit nicht sagen, dass dies zum besten Ergebnis führt, jedoch ist das Encodieren durch die CPU von den meisten als Standardlösung akzeptiert und sollte in der Regel auch funktionieren.
x264 per SW über die CPU wird bevorzugt, da damit die Bildqualität gegenüber den fix verdrahteten Encodern einer GPU teilweise erheblich ansteigt - gerade bei den für Streaming üblichen kleinen Bitraten.
 
Ich habe der Übersicht halber nochmal eine Kurzzusammenfassung des Problems in den Hauptpost geschrieben.
 
OBS arbeitet wohl derzeit an dem Problem soweit ich weiß. Einzige mir bekannte Lösung: GPU entlasten. Ich hab bei mir die FPS etwas gedrosselt und dann war das Problem weg. Meine alte Graka war bei 144fps etwas am Limit. Hab sie dann auf 120 gedrosselt und dann konnte ich wieder mit OBS ohne Drops aufzeichnen.
 
Drosseln bringt auch nicht unbedingt viel, da manche Spiele die 60fps-Grenze - geschweige denn 120fps - gar nicht erst erreichen. Zudem habe ich mich bei Shootern bspw. sehr an 165Hz gewöhnt, da auf 60Hz runterzugehen schmerzt doch arg.
 
Hab mir mal das hier angesehen:
https://obsproject.com/wiki/GPU-overload-issues

Habe die Grafikeinstellungen heruntergestellt, um mehr Kapazitäten zu schaffen - das hat jedoch erst bei der niedrigsten Einstellung abhilfe geschaffen und ist dementsprechend keine realistische Möglichkeit.

Ebenfalls habe ich, um die Berechnungen zu vereinfachen, die Leinwandgröße von OBS geviertelt - auch ohne positives Ergebnis.
Alle anderen Tips sind sowieso schon der Fall, dementsprechend war auch das keine große Hilfe.
 
Dann gibt es derzeit keine andere Möglichkeit. Zumindest nicht mit OBS. Oder mehr Leistung.
 
iamunknown schrieb:
Das ist Unfug, die GPUs haben dedizierte Schaltkreise für das Video De- und Encoding. Mit OBS geht etwas Leistung verloren, da es einen Overhead gibt die Bilder für das Video abzugreifen, nVidias Shadow Play beispielsweise kann direkt auf den Framebuffer zugreifen und kostet quasi überhaupt keine Leistung (von etwas I/O für Netzwerk und/oder Speichermedium abgesehen).

x264 per SW über die CPU wird bevorzugt, da damit die Bildqualität gegenüber den fix verdrahteten Encodern einer GPU teilweise erheblich ansteigt - gerade bei den für Streaming üblichen kleinen Bitraten.

Interessant, besten Dank für die Info/Erklärung! Werde ich dann selbst noch mal ein bisschen drüber lesen und dann ggf. selbst noch mal ein bisschen mit rumtesten.

@Quafi
Alles klar, schade, dass davon nichts funktioniert hat. Halt uns auf dem Laufenden, ob falls du noch ne Lösung findest :)
 
reVr0x schrieb:
Mag stimmen mit der Dedizierung der Last auf bestimmte Teile der GPU, kann jedoch nach persönlicher Erfahrung nicht bestätigen, dass das Ergebnis besser ist bzw. das Streaming keinen EInfluss hat. Wenn ich ein Spiel spiele, was schon an nahe an die 100% GPU-Leistung zieht (was die meisten neuen Spiele heutzutage gut hinkriegen sollten, vor allem bei hohen Auflösungen), dann ergibt es meines Erachtens nach keinen Sinn, die GPU auch noch mit dem Streaming zu belasten. Wie erwähnt waren das aber vielleicht nur meine persönlichen, schlechten Erfahrungen.



Hier quasi dieselbe Antwort. Wenn man sich mal Ein- sowie Zwei-PC-Setups von professionellen Streamern anschaut, dann wird dort dortlich mehr Wert auf CPU-Power gesetzt und das Streaming wird auch von dieser in den meisten Fällen übernommen. Will damit nicht sagen, dass dies zum besten Ergebnis führt, jedoch ist das Encodieren durch die CPU von den meisten als Standardlösung akzeptiert und sollte in der Regel auch funktionieren. Ich konnte mit einem i5 3570k auch diverse Spiele in 720p@60FPS respektive 1080p@30FPS recht problemlos streamen.



Ich lese daraus, dass du also auch schon x264 erfolglos probiert hast? Sicherlich erzielst du mit x264 und schnellem Preset kein so tolles Ergebnis, darum geht's es bezüglich deines Problems jedoch erst mal gar nicht. Interessant zu wissen ist erst einmal, ob du immer noch heftige Performanceverluste hast, wenn du einen recht anspruchslosen Stream aufsetzt (was ja der Fall zu sein scheint).



Dann könntest du einfach noch mal Window- oder Screen-Capture testen und schauen, was das ausmacht. Wenn das Ergebnis da tatsächlich besser ist, als bei Game-Capture, dann stimmt wirklich was nicht.

Keyframe-Intervall-Standard bzw. empfohlenes Setting ist 4 bei Youtube? Sicher? https://support.google.com/youtube/answer/2853702?hl=de

Keyframe-Frequenz:

Zwei Sekunden empfohlen
nicht mehr als vier Sekunden

Tritt das Problem bei wirklich jedem Spiel bei dir auf? Hast du schon mal andere Spiele getestet, welche weniger anspruchsvoll sind? Bzw. hast du das Problem schon von Anfang an oder ist es erst aufgetaucht?


Wenn man sich die großen Streamer anschaut wird man auch feststellen, dass dort ein i9 mit mind. 10Kernen oder ein Threadripper arbeitet, die stemmen einen ganz anderen Workflow und kosten auch nur etwas mehr Geld aber hey vergleichen wir doch Käfer mit Porsche .. Es ist halt unnötig die CPU schwitzen zu lassen wenn die GPU es praktisch in Hardware verbaut hat. Mit der neuen Nvidia Generation ist die Qualität im unteren Bereich Sprich: Typisch Twitch 720p/60fps 6000 Bitrate deutlich verbessert worden. Die Frage ist doch, verdiene ich hiermit mein Geld oder will ich Just for Fun streamen?!
 
Nicht jeder professionelle Streamer nutzt zwei PCs, weshalb ich speziell von Ein- sowie Zwei-PC-Setups gesprochen habe. Auch nicht jeder professionelle Streamer nutzt einen i9 oder einen Threadripper. Von daher verstehe ich nicht, wie du darauf kommst, dass x264-Streams nur bei High-End-Setups eingesetzt werden bzw. warum du denkst, dass es ein Käfer/Porsche-Vergleich ist.
Noch mal: Alles, was ich gesagt habe ist, dass x264 durchaus eine Variante ist, die verbreitet ist und respektable Ergebnisse erzielt, auch bei recht alter Hardware (mich persönlich eingeschlossen).

Dass neuere Grafikkarten gute Ergebnisse im unteren Qualitätsbereich erzielen mag durchaus stimmen. Ich habe nicht probiert, mit einer der neueren Generationen über NVENC zu streamen. Sollte ich vielleicht dann auch mal nachholen/testen.

Denke außerdem nicht, dass die Frage der Profession relevant ist. Sondern eher die Frage bezüglich des eigenen Anspruchs und was für einen am besten funktioniert.
 
  • Gefällt mir
Reaktionen: Quafi
Zurück
Oben