x264 Einstellungen für Steaming über OBS

  • Guten Tag


    wollte mal fragen ob der ein oder andere ein Paar Optimierungs Einstellungen für Gaming Steaming hätte.

    Zur Zeit wird das Original Bild von 2560x1440 auf 1280x720 Umskaliert.


    Schnelles FPS Game : Battlefield


    Bitrate Modi: CBR


    Bitrate : 6000


    Kompressionsvorlage : medium


    Profil: high


    Tunningvorlage: keine


    Keyframeintervall : 0 (auto)



    Die x264 Option Zeile ist noch leer, hier hoffe ich das der ein oder andere ein paar Optimierungs Vorschläge hat um die Bild Qualität zu erhöhen. Zur Zeit ist das Bild leider öfters mal verschwommen oder verpixelt.


    Ich danke schon mal für die Vorschläge.





  • Im Allgemeinen ist CBR der Modus mit der am stärksten schwankenden Qualität. Bei leicht zu komprimierenden Szenen (v.a. in Ruhe) ist die vorgegebene Bitrate vielleicht großzügig, in schwer zu komprimierenden Szenen (mit viel Bewegung und feinen Details) dagegen zu knapp.


    Wer zunächst eine gleichmäßigere Qualität über die ganze Aufnahmedauer hinweg haben will, der sollte den Modus CRF verwenden, wenn der von dem Programm, das den x264-Codec benutzt, auch angeboten wird (hier kenne ich OBS leider nicht). Als Zwischenmaterial würde ich einen Rate Factor von 18 oder gar 15 vorschlagen (kleinerer RF = bessere Qualität = größere Ausgabedatei). Allerdings könnte das Video erstmal ziemlich groß werden, vorhersagen kann man die Größe nicht. Nach dem Schnitt könnte man zum Hochladen mit etwas größerem RF nachkomprimieren.


    Nach dem Hochladen wandelt YouTube jedes Video sowieso noch mal für Internet-Streaming neu um. Dabei wird die Qualität mit Sicherheit wieder schlechter, weil Streaming unbedingt eine CBR-ähnliiche Bitratenverteilung braucht. Deshalb sollte die hochgeladene Qualität noch möglichst gut sein.

  • LigH, hier wird ein live-stream codiert und nahezu in echtzeit versendet.


    an CBR 6000k kann man nichts machen,

    das ist die deckelung nach oben.


    die aufgabe ist wie man da mehr qualität reihnbekommt...



    erster tipp, ist auch der teuerste,...

    ein multicore streaming pc...


    fest verdratete hardware beschleuniger sind in reihnen qualitätstests stets mit schlechter als dynamische cpu cores.


    uns da du gamer bist, mussz du deine kerne auch noch mit deinem spiel teiln...



    tricksereien kann man mit einer niedrigeren framerate erziehlen... (30/25/20/15)

    und einer niedrigeren auflösung.

    man kann auch den I-/keyframe intervall vergrößern...


    werd erst heut abend zeit haben mir OBS mal wieder an zu schauen...

  • @ Ligh

    Also OBS hat folgende Modi zu Verfügung CBR / ABR / VBR und CRF.

    Obwohl ich nicht ganz verstehe warum OBS CRF drin hat, wenn man das auswählt, verschwindet die Upload Bitraten Begrenzung . Sprich das Erzeugte Material Sprengt deine Inet Upload und den Maximal Upload von der Streaming Plattform.


    HQ-LQ

    Der Spiele PC hat mit dem Rendern nicht viel zu tun, das Bild wird über eine 4k Capture Card an einen Rechner mit einem Intel Core i7-6850K geschickt der das Rendern in Medium / Slow schaft. Das ist denke ich mal schon recht gut, aber die ganzen Render Möglichkeiten ( ultrafast / fast / medium / slow etc) sind ja vorgaben mit Festen werten. Jetzt habe ich aber in OBS noch eine x264 Kommandozeile wo ich halt alles mögliche ändern kann an z.b ...--b-adapt 2 / --me umh / --subme 8 etc...


    Hier ist jetzt die Frage an euch Profis was kann ich an diesen ganzen werten ändern, ich glaube das ein oder andere brauche ich bestimmt nicht für das Schneller Rendern für einen 6mbit Live Stream und frisst vielleicht nur unnötig CPU Leistung, die man vielleicht wenn man einen anderen Wert ändert Sinnvoller einsetzen kann ... ihr wisst was ich meine.


    MFG

    Alex

  • ich glaube das es wenig bringt an den codec rum zu schrauben, was am ende eh den presets slow & co. entspricht, da sie wieder mehr leistung verlangen...


    optimierungen sind nur in den höchsten presets 'ultra slow/placebo' sinnvoll wenn zeit keine rolle spielt um noch ~2% herrauszuholen.


    aber bei einem livestream hat man dies genau nicht.


    auch weis man nicht wie dumm/eingeschränkt browser codecs sind...



    dein fehler bild klingt so als währe die intel(quicksinc)/nvidia/openCL Hardwarebeschleunigung drinn...

    diese sind nicht so dolle...

    ...sollteste mal umschalten & testen...

    mit 6000k bekommen andere streamer gutes bild hin...

    ...außer alles explodiert im sekunden tackt... :D

  • Zitat

    Obwohl ich nicht ganz verstehe warum OBS CRF drin hat, wenn man das auswählt, verschwindet die Upload Bitraten Begrenzung . Sprich das Erzeugte Material Sprengt deine Inet Upload und den Maximal Upload von der Streaming Plattform.


    Zumindest früher konnte man mal über 'custom buffer size' selber vbv Einstellungen festlegen,... (würde mich wundern wenn es die Option nicht mehr gibt)

  • [edit:]

    OBS hat CRF drin, da damit auch lokale Videos für Youtube erstellt werden kann,

    so würde man als rohformat dies wählen und erst beim "rendern" vernünftigere einstellungen wählen...

    [\edit]


    gibt es noch...

    man muss in den 'einstellungen\ausgabe', den 'ausgabemodus' auf erweitert stellen

    bis auf 'CRF' gibt es bei C-/A-/VBR: "verwende benutzerdefinierte Puffergröße"


    ich würde ABR nehmen,

    dann darf der codec im puffer schwanken, so können einzelne frames oder gruppen auch mal über 6000k* gehen,

    solange der puffer nicht voll ausgereizt wird.

    (*rechnerisch muss eine gruppe kleiner als 1 sekunde sein)

    (*ist nur als theoretisches faktum aufgeführt, da sie gleich oder größer sind.)


    bei CBR ist der puffer sinnfrei, da ständig gefüllt.


    theoretisch würde VBR noch besser sein, verursacht duch ständige schwankungen aber mehr netzlast.

    das könnte irgendjemand in der netzwerkkette stören und so aussetzer provozieren.


    CRF hat man keine bitraten kontrolle



    den tipp, dass man kann auch den I-/keyframe intervall (GOP) vergrößern kann hat folgenden sinn:

    keyframes sind das größste/teuerste frame im datenstrom

    es hat keine referrenzen zu andenen P-/B-frames

    sie werden für exateres schneiden (mit ninimalen verlusten)

    und zum schnelleren ansteuern auf der timeline verwendet.

    bei livestreaming "reparieren" sie das bild, wenn mal frames "gedroppt" werden


    wenn man den intervall vergrößert, so bleibt mehr bits für die effizenteren P-/B-frames


    der nachteil ist, das der stream länger braucht zum starten (warten auf den GOP-anfang)

    und wenn das bild mal kaputt geht, dann hat man längere standbilder oder glitshes...


    twitch hat ein limit von 10s, ich würde es voll ausnutzen.

    In the case keyframe intervals (GOP size) is set higher than 10 seconds, source will be disabled to guarantee playback compatibility across devices.


    micro-bits kann man noch sparen, wenn man den audiocodec runterschraubt,

    ich würde nicht unter 96kbits gehen ehr 128kbits

    so spart man 8 bis 4KiB pro sekunde, das ist höchstens ein frame...


    also völlig sinnfrei, besonders bei einem 6000k stream...

    für livestreams ohne archivierungs/musik wunsch

    sehe ich keinen grund über 160kbits zu gehen


    ich weiß zwar nicht welchen audio codec OBS verwendet,

    aber der einzigste freie ist FAAC

    und dieser genießt nicht gerade den besten ruf...

    sonnst würde ich sogar 64-80kbits wagen zu testen


    vielleicht kann man bei "Tune" was erreichen, das filtert die bilder vor,

    so das der codec es leicher verdauen kann.

    als beispiel sind sind cartoons zu nennen, die nur aus flächen, überläufen und kanten bestehen...*

    (*sehr stark verallgemeinert)

  • Das stimmt so nicht. Eine Maximal-Bitrate, wie sie für 2-pass VBR vorgegeben wird, wird bei CRF tatsächlich ignoriert. Aber VBV-Puffergröße und VBV-Maximalbitrate haben durchaus Einfluss auch im CRF-Modus. Das sind zwei wesentlich verschiedene Parameter für Bitraten.