Ich bin gerade neugierig auf dieses x265-HEVC-Format geworden und habe es an einem BDMV-Stream-Video mit 1920 x 1080i ausprobiert, eines mit 8-Bit-Tiefe und das andere mit 12-Bit-Tiefe. Die Ergebnisse sind, dass die 8-Bit-Ausgabe kleiner war. Beide Ausgänge sind 1280x720.
Ich frage mich, warum das so ist.
Hier die MediaInfo:
8 Bit:
Bildrate: 23,976 fps
Farbraum: YUV
Farbunterabtastung: 4:2:0
Bittiefe: 8 Bit
Schreibbibliothek: x265 1.9+54-291beccb6760:[Windows][GCC 5.3.0][64 Bit] 8bit+10bit+12bit
Kodierungseinstellungen: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=2 / tu-inter-depth=2 / me=3 / subme=3 / merange =57 / rect / amp / max-merge=3 / temporal-mvp / no-early-skip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu -lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=23 / scenecut=40 / rc-lookahead=30 / lookahead -slices=4 / bframes=8 / bframe-bias=0 / b-adapt=2 / ref=4 / limit-refs=2 / limit-modes / weightp / weightb / aq-mode=1 / qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock / sao / no -sao-non-deblock / b-pyramide / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1.40 / Verhältnis = 1,30
12bit: Bildrate: 23,976 fps
Farbraum: YUV
Farbunterabtastung: 4:2:0
Bittiefe: 12 Bit
Schreibbibliothek: x265 1.9+194-6d3849d648f0be5a:[Windows][GCC 5.3.0][64 Bit] 12bit: KG7x [x265.ru]
Kodierungseinstellungen: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=2 / tu-inter-depth=2 / me=3 / subme=3 / merange =57 / rect / amp / max-merge=3 / temporal-mvp / no-early-skip / recursion-skip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=23 / scenecut=40 / rc-lookahead =30 / lookahead-slices=4 / bframes=8 / bframe-bias=0 / b-adapt=2 / ref=4 / limit-refs=2 / limit-modes / weightp / weightb / aq-mode=1 / qg -size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock =0:0 / sao / no-sao-non-deblock / b-pyramide / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1.40 / pbratio=1.30
crf=18
rate-control erzeugt größere Dateien im 12-Bit-Modus. Wenn Sie versuchen, einige Codierungseinstellungen zu finden, die für einige Inhalte gut funktionieren, sollten Sie nicht davon ausgehen, dass das gleiche CRF bei unterschiedlichen Bittiefen gleich ist. (Entweder das gleiche SSIM oder die gleiche visuelle Wahrnehmungsqualität).
Sie haben nichts über Qualität oder Qualität pro Dateigröße gesagt. Vermutlich sehen die größeren Dateien auch etwas besser aus, da 12-Bit x265 ungefähr die gleiche Qualität pro Bitrate hat wie 8-Bit x265. (Ich habe mit 10 vs. 8 getestet, aber nicht mit 12).
CRF ist keine exakte Zielqualitätseinstellung. Wenn Sie also Einstellungen vergleichen möchten, verwenden Sie für beide 2pass mit derselben Bitrate und schauen Sie sich die Qualität an. Verwenden Sie entweder SSIM oder vorzugsweise eine visuelle Inspektion durch Menschen. (Einige Leute pausieren/zoomen gerne, aber tun Sie das nicht einfach . Einige Arten von Artefakten/Verzerrungen sind bei der Wiedergabe des Videos wahrnehmbar, aber viele sind viel weniger wahrnehmbar. Pause/Zoom hilft bei der Überprüfung Ihres visuellen Eindrucks von " Schärfe" / "mehr Details", also finden Sie heraus, was Ihnen diesen Eindruck vermittelt hat, und vielleicht auch andere Dinge, auf die Sie achten müssen, um zu sehen, ob Sie sie beim Abspielen des Videos noch bemerken können.)
Für tatsächliche Codierungen, sobald Sie Einstellungen gefunden haben, die Ihnen gefallen, ist CRF großartig, aber es ist nicht gut, um die Qualität pro Bitrate verschiedener Codierungseinstellungen zu vergleichen.
Es mag immer noch einige Verbesserungen bei der Komprimierungseffizienz für x265 geben, aber sie sind definitiv kleiner, wenn sie überhaupt existieren. 10 oder 12-Bit sehen vielleicht sogar ein bisschen schlechter aus. Siehe Diskussion auf doom9 , verlinkt von Michael in einem Kommentar. Ich habe die neuesten Diskussionen nicht verfolgt, daher bin ich mir nicht sicher, was der aktuelle Konsens zu 10-Bit x265 für 8-Bit-Video ist. Selbst wenn es einen kleinen Gewinn gibt, ist es die Geschwindigkeitsstrafe möglicherweise nicht wert.
Es ist definitiv nicht annähernd ein Faktor von 12/8, wie einige Kommentatoren basierend auf "einfacher Mathematik" vorschlagen. Ein verlustbehafteter Videocodec wie h.265 ist einer einfachen verlustfreien Komprimierung wie ZIP nicht sehr ähnlich.
x264 profitiert im Allgemeinen davon, im 10-Bit-Modus ausgeführt zu werden, selbst wenn die Originalquelle 8-Bit ist, ebenso wie die endgültige Anzeige (aber auch hier sollten Sie nicht erwarten, dass der gleiche CRF die gleiche Bitrate oder die gleiche Qualität liefert unterschiedlich tief). 8-Bit-h.265 hat Bewegungsvektoren mit höherer Genauigkeit als 8-Bit-h.264, sodass ein Teil der Argumentation nicht auf x265 zutrifft.
Denken Sie daran, dass sowohl h.264 als auch h.265 die Informationen im Video als quantisierte Frequenzbereichskoeffizienten speichern. Mit trellis / rdoq optimiert es sogar die Quantisierung, um mit dem endgültigen Entropie-Codierer (z. B. CABAC in h.264) gut zu komprimieren, sodass die gleiche Anzahl von Bits die gleiche Menge an Informationen darstellen kann, unabhängig davon, ob der Entropie-Codierer 8- hatte Bit- oder 12-Bit-Eingang. 8-Bit ist in gewisser Weise nur ein Speed-Hack.
Mehr Bits bedeutet, dass Sie näher kommen können (kleinerer Fehler), während Sie immer noch einen Fehler haben. Der Encoder hat also mehr Auswahl beim Abwägen von Verzerrung und Bitrate. Dies kann teilweise der Grund dafür sein, dass 10-Bit-x264 weniger unter "Banding" -Artefakten in Gradienten leidet: Es hat mehr Auswahlmöglichkeiten bei der Darstellung des DC-Koeffizienten oder bei kleinen Werten in den AC-Koeffizienten.
Je höher die Eingangsbittiefe (für eine gegebene Ausgangsbitrate), desto mehr Bits muss der Encoder wegwerfen. Viele dieser zusätzlichen Bits sind Nullen, wenn Ihr ursprüngliches Video 8-Bit war. (Die verlustbehaftete Codierung wirft bereits viele Bits weg, z. B. von 12 bpp pro Frame (für YUV 4: 2: 0-Chroma-Sub-Sampling mit 8-Bit-Komponenten) bis hinunter zu 0,15 Bit / Pixel / Frame und sieht immer noch ziemlich nah aus visuell transparent, insbesondere bei hohen Auflösungen, wo der Informationsgehalt eines typischen Videos über mehr Pixel verteilt ist.)
Wenn Sie neu skalieren, wird vermutlich vor der Neuskalierung auf 10 oder 12 Bit gehen, damit die Neuskalierung Pixel mit weniger Informationsverlust mischt. (z. B. kann ein 10-Bit-Wert genau den Durchschnitt von vier 8-Bit-Werten speichern.)
Gyan
Adam Mann Pro
58YtQ2H83m17838963l61BU07Y8622
Michael Steinberg
Michael Steinberg
Peter Kordes