Ich erstelle Voreinstellungen für unsere Benutzer, um die Videos in ein geeignetes Format für unser Online-Video-Repository zu konvertieren. Da es schon eine Weile her ist, seit ich so etwas von Grund auf neu erstellt habe, habe ich mir angesehen, was andere empfehlen, und festgestellt, dass viele von ihnen ausdrücklich die Codierung mit variabler Bitrate empfehlen. Zum Beispiel:
https://support.google.com/youtube/answer/1722171?hl=de
Würde das selbst bei progressivem oder Pseudo-Streaming nicht nur zu Pausen und Stottern bei der Wiedergabe führen, sobald Sie ein Segment mit einer hohen Bitrate erreichen? Als allgemeine Empfehlung erscheint es nur seltsam, wenn dies wahrscheinlich zu einem schlechten Wiedergabeerlebnis führt. Oder überschätze ich nur die Probleme, da es einige Jahre her ist, seit ich mich das letzte Mal damit befasst habe. Verwenden Sie heutzutage im Allgemeinen eine variable Bitrate für die Online-Bereitstellung?
Spieler puffern Streams. Je größer die Puffergröße, desto länger muss der Encoder höhere Bitraten für harte Inhalte und dann weniger Bits früher oder später für einfache Inhalte verwenden, um eine ähnliche Qualität für das gesamte Video zu erreichen.
Ich gehe davon aus, dass Sie h.264 (alias AVC) als Codec verwenden werden, da dies der De-facto-Standard für das Streamen von Videos im Internet ist. VP8 ist nicht so gut. VP9 kann besser aussehen als h.264, aber die Unterstützung ist begrenzt. HEVC (h.265) ist ebenfalls besser als h.264, aber auch hier ist die Spielerunterstützung begrenzt. (Und die Hardwaredekodierungsbeschleunigung wird jahrelang nicht weit verbreitet sein. Dies ist wichtig, da HEVC sehr CPU-intensiv zu dekodieren ist, mehr als AVC.)
Die Qualitätsvergleiche, von denen ich spreche, sind mit den besten verfügbaren Encodern für jeden Codec. x264 für AVC, Googles VPx für VP8/VP9 und x265 für HEVC. Alle mit fast vollständig aufgedrehten Einstellungen. x265 beginnt jedoch bei 1080p mit so langsamen Einstellungen in Sekunden pro Frame statt in Frames pro Sekunde zu gelangen. (X264-Größenordnungen schneller, da es seit ein paar Jahren im Wesentlichen ausgereift ist und nur wenige neue Beschleunigungen oder Qualitätsgewinne gefunden wurden.)
Alle diese Encoder sind kostenlose Open-Source-Software. Es ist schön, dass Sie heutzutage nichts bezahlen müssen, um Codecs in Weltklasse-Qualität zu erhalten. :)
Ein zufälliger Google-Treffer auf x264 vbv zum Streamen: http://forum.doom9.org/showthread.php?t=147460
Ein Beispiel aus x264 --fullhelp
:
Constant bitrate at 1000kbps with a 2 second-buffer:
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
(Verwenden Sie jedoch nicht den One-Pass-Zielbitratenmodus. Entweder 2pass, wenn Sie eine bestimmte Zielbitrate haben, oder crf mit einer Zielqualität.)
Bearbeiten: Die empfohlene Verwendung für das Streaming ist laut dem führenden x264-Entwickler (Jason Garrett-Glaser) der Qualitätszielmodus (CRF) mit VBV-beschränkter Bitrate. z.B
x264 --vbv-bufsize 2000 --vbv-maxrate 1000 --crf 22 -preset slower -o <output> <input>
vbv-maxrate
ist die maximale Geschwindigkeit, mit der sich der Puffer füllen kann. (dh die maximale Netzwerkbandbreite). vbv-bufsize
ist natürlich die Größe des Puffers, der nicht anhaltende Bitratenspitzen von mehr als vbv-maxrate
.
Und natürlich, wenn Sie einmal kodieren, um eine Datei zu erstellen, die viele Male gestreamt wird, werfen Sie so viel CPU-Zeit darauf, wie Sie können. Die Kodierungszeit ist im Vergleich zur Erzielung der höchsten Qualität pro Bitrate (Rate-Distortion Tradeoff, auch bekannt als RD) von geringer Bedeutung. Die Codierung erfolgt nur einmal, und alle Bits, die Sie sparen können (bei gleichbleibender Qualität), werden für jeden Download gespeichert. zB Verwenden Sie x264 mit --preset veryslow
.
--vbv-buffsize
wie es gemacht wird.vbv-maxrate
ist die Pufferfüllrate, nicht die Decoder-CPU-begrenzte Decodierspitze. Und CRF + VBV ist der empfohlene Weg für die Online- (Echtzeit) oder Offline-Codierung von Videos für das Streaming.
Dr Mayhem
Peter Kordes
Peter Kordes
x264 --crf 16 --preset fast
.grovberg