Ich versuche, ein FPS-Shooter-Spiel von OBS 20.0.1 mit der niedrigstmöglichen Bitrate zu streamen und dabei die bestmögliche Qualität (d. h. weniger blockige Pixel) beizubehalten.
Ich befürchte, dass mehr Referenzbilder meine Bitrate erhöhen. Da es sich hier um High-Motion-Streaming handelt, sollte ich also -tune animation
zur Steigerung der Deblockierung verwenden? Oder wären PSNR
oder SSIM
wären vielversprechendere Kandidaten?
Gibt es eine bessere/andere Möglichkeit zu testen, welche -tune
Option die beste ist, als sie mit Test-Streams auszuprobieren?
Gibt es außerdem andere x264-Optionen, von denen mein Stream profitieren würde, die aber nicht in OBS enthalten sind?
Meine Hardware:
- CPU:Intel i7-4770k
- Grafikkarte:Nvidia GTX780 Ti
- RAM:12 GB, 1.600 MHz
Antwort1
Ich versuche, ein FPS-Shooter-Spiel von OBS 20.0.1 mit der niedrigstmöglichen Bitrate zu streamen und dabei die bestmögliche Qualität (d. h. weniger blockige Pixel) beizubehalten.
Das ist möglich, aber die Kodierung wird viel Zeit in Anspruch nehmen. Da Sie live streamen, gehe ich davon aus, dass Sie einen einzigen Kodierungsdurchgang wünschen, und zwar vorzugsweise einen, der schnell ist, also Ihre CPU-Ressourcen maximal auslastet. Sie sollten also mit der CPU-Geschwindigkeitsvorgabe herumspielen – wählen Sie die höchste, die Sie tolerieren können.
Es ist unmöglich, alle diese Parameter (Geschwindigkeit, Qualität, Bitrate) gleichzeitig zu optimieren. Deshalb bieten x264 (und andere Encoder) eine Möglichkeit, die Geschwindigkeitsvorgabe auszuwählen (z. B. von ultrafast
bis veryslow
in x264). Diese Voreinstellungen aktivieren/deaktivieren bestimmte Optionen, die die Komprimierungsqualität optimieren bzw. die Codierungszeit minimieren.
Ich befürchte, dass mehr Referenz-Frames meine Bitrate erhöhen werden
Das stimmt grundsätzlich, da diese deutlich größer sind.
Da es sich also um High-Motion-Streaming handelt, sollte ich die Animation mit -tune verwenden, um die Blockierung zu beschleunigen? Oder wären PSNR oder SSIM vielversprechendere Kandidaten?
Schauen Sie sich diesen anderen Beitrag an, in dem dieTune-Modi werden erklärt.
Für Ihren speziellen Fall des Live-Streamings mit geringer Latenz und einem Codierungsdurchgang ist die Verwendung nicht sinnvoll film
. Dies dient der Erhaltung (körniger) Details.
Ihre Bedenken hinsichtlich der Blockbildung bei niedriger Bitrate sind verständlich, aber animation
für Live-Streaming ist die Vorgabe nicht sinnvoll, da dadurch auch die Anzahl der B-Frames erhöht würde, die Sie ohnehin auf 0 (oder eine niedrige Zahl) setzen möchten, um eine schnelle Kodierung zu ermöglichen.B-Frameserfordern die Kodierung vergangener und zukünftiger Frames, was bedeutet, dass der Encoder/Decoder einen größeren Puffer vorhalten muss, um diese Frames zu speichern. Je mehr B-Frames, desto besser die Qualität, allerdings auf Kosten der Kodierungszeit.
Die Modi psnr
und ssim
sind auch nicht nützlich. Sie werden nur während der Entwicklung/Optimierung des Encoders verwendet und können tatsächlich zu einer subjektiven Verschlechterung der Qualität führen.
Passt vielleicht zerolatency
besser zu Ihrem Anwendungsfall?
Gibt es eine bessere/andere Möglichkeit zu testen, welche Tune-Option am besten ist, als sie mit Test-Streams auszuprobieren?
Theoretisch könnten Sie einige Original-Streams kodieren, sie dann mit unterschiedlichen Einstellungen kodieren und sie durch einen vollwertigen Videoqualitätsanalysator laufen lassen, wieVQMToderVMAF. Diese geben Ihnen einen Qualitätsfaktor für die Kodierungen. Aber ich vermute, dass in Ihrem Fall auch eine visuelle Überprüfung der Ergebnisse ausreicht.
Antwort2
Die Abstimmungseinstellungen sind nicht für eine hohe/niedrige Qualität gedacht, sondern für die Optimierung des Erscheinungsbilds für einen bestimmten Quellentyp.
Die Tune-Animation ist für Cel-basierte (flache) Animationen gedacht. Nicht für Game-Streaming geeignet.
Tune Film ist für Live-Action-Videos oder -Filme gedacht, aber auch CGI mit ausreichendem Realismus (z. B. feine Texturen) kann davon profitieren. Probieren Sie es ruhig aus.
Keine andere Einstellung ist wahrscheinlich geeignet. Am wichtigsten ist es, die „schnellere“ Voreinstellung (oder besser) zu verwenden, da alle Voreinstellungen mit niedrigerer Qualität die Qualität erheblich verschlechtern. Es ist auch wichtig, genügend Bitrate zu verwenden. Beachten Sie, dass x264 ziemlich viel CPU verwendet, seien Sie also darauf vorbereitet. Ein Hardware-Encoder wie NVENC kann dabei bis zu einem gewissen Grad helfen, allerdings mit etwas geringerer Videoqualität.
Es ergibt keinen Sinn, eine geringe Latenzzeit einzustellen, sofern Ihre Plattform dies nicht erzwingt, da dies zum Streamen Ihres Spiels nicht erforderlich ist (d. h. die Zuschauer werden nicht beeinträchtigt, wenn zu den ohnehin vorhandenen mehreren Sekunden noch eine Latenzzeit von dem Bruchteil einer Sekunde hinzukommt).
Antwort3
Der tune
Parameter hat keinen großen Einfluss auf die Streamqualität, was mit der mangelnden Diskussion und/oder Erwähnung seiner Optionen in Anleitungen zusammenhängt. Er animation
kann bei Streams mit niedriger Bitrate verwendet werden, um die Entblockierung zu erhöhen, und bei film
Streams mit hoher Bitrate, um den Stream so originalgetreu wie möglich zu halten. Allerdings bin ich mir nicht sicher, wie effektiv die Entblockierung oder deren Fehlen ist.
PSNR
und SSIM
dienen zu Test- und Vergleichszwecken zwischen der Frequenzkontrolle (CBR, ABR, VBR, CRF).