oder auch: "Warum wir 10Bit doch ganz gut gebrauchen können" :D
Um beim neuen Videocodec HEVC die produzierten Ergebnise sachlich zu beurteilen, habe ich einen Versuch aufgebaut, in dem x264, HEVC(x265), 8bit, 10 bit und je 4 verschieden CRF-Stufen verglichen werden.
CRF steht für constant rate factor und ist eigentlich bei jedem Encoder zu finden. Es fixiert sich nicht auf eine bestimmte Bitrate, sondern analysiert das Bild und gibt je nach Wert des Faktors eine gewisse Bildqualität aus. Dabei gilt: Je kleiner der Wert, umso besser das Bild/höher die Bitrate.
In diesem Test werde ich mich speziell auf Anime beziehen. Da man subjektiv oft kaum etwas merkt, werden wir diesmal einen exakten Bildvergleicher heranziehen, der Pixelgenaue unterschiede offenbart - Perceptualdiff. Dieses Tool schaut, ob Pixel sich an einer Stelle verändert haben. Dabei reicht schon ein einzelner Pixelwert (Rot von 225 auf 224) als komplette Veränderung.
Da dieser Post jedoch mit guten 150 full hd Bildern den Rahmen sprengen würde und unlesbar wäre, stelle ich ein Paket zur Verfügung, in dem jeder Übersichtlich sich selbst einen Eindruck machen kann.
DOWNLOAD:
https://www.hidrive.strato.com/wget/BjATLSgF
Testvideos waren:
Little Busters - 10 Sek. vom Opening - BluRay Raw (mt2s mit 40 mbps AVC, 8 bit) - simples Material
Fate Stay Night - 20 Sek. von Archer Szene - BluRay Raw (mt2s mit 40 mbps AVC, 8 bit) - komplexes material
Zum Bildvergleich wurde aus jedem Video an 3 identischen Stellen ein losless PNG extrahiert.
Encodet wurde in:
8 bit, hevc, CRF 20-14
8 bit, x264, CRF 20-14
10 bit, hevc, CRF 20-14
10 bit, x264, CRF 20-14
Es wurden keine Filter, Tunes oder sonstige Parameterveränderungen vorgenommen.
Die genauen Zeilen:
Und mein Fazit:
Vergesst nicht, das ganze ist sehr Animebezogen. Echtfilme könnten anders ausfallen.
10 Bit bietet gegenüber 8 Bit in allen fällen einen Qualitätsschub und sogar eine geringfügige Platzersparnis. 10 Bit wirkt auf allen Differenzbildern "schärfer", was daher kommt, dass die Farben genauer berechnet werden und so Kanten und Farbverläufe sauberer dargestellt werden können. Besonders gut sieht man das bei den Bildern von Little Busters.
Jedoch muss man sagen, dass x264 bei beiden Bittiefen oft ein wenig "sauberer" und schärfer als HEVC ist, was aber auch durch die nicht selten doppelt so hohe Bitrate entstehen kann. Besonders bei 8Bit macht x264 einen dezent besseren Eindruck (gut zu sehen bei 2Fate Stay Night). Subjektiv betrachtet kann man, ohne es direkt zu vergleichen, bei KEINEM der Kandidaten einen sofort ins Auge springenden Unterschied erkennen, oder gar einen Fehler, der den Filmgenuss beeinträchtigen würde.
Wenn man die CRF-Werte miteinander vergleicht, sieht man, dass es der Qualitätszuwachs pro CRF Wert sehr linear ist. Man kann also ziemlich genau seine resultate bestimmten. Vom optischen her sieht man zum Beispiel im Himmel bei den 3Little Busters Bildern, dass auf jeder Einstellung einige Farbtupfer im Himmel verloren gehen. Und das war auch das Einzige dort, was ich beim genauen hingucken erkennten konnte. Bei dem Bild von Komari (2LittleBusters) sieht man auf jeder Einstellung kaum einen Unterschied.
So gesehen kann man das mit einer Qualitätserhöhung von ein paar CRF wieder ausgleichen und dabei trotzdem noch IMMENS Speicherplatz sparen, vielleicht kann man auch so dreißt sein und irgendwann, wenn vorhanden, einen sharpen-filter darüberlaufen lassen.. Nach wie vor bleibt also das einzige Problem die Kompatibilität, die meines Erachtens im nächsten Jahr gegeben sein wird.
Darum meine Empfehlung, wenn ihr Eure Filme/Animes nicht über einen alten Fernseher (per USB) abspielt und das meiste mit Software macht:
HEVC, 10Bit, CRF16
Jedoch sollte alles ab CRF 18 schon akzeptabel sein. CRF 20 ist, gemessen an den Differenzbild, außerhalb der Schmerzgrenze.
In der beiliegenden Exceltabelle sieht man, dass dort noch sehr viel Platz eingespart wird (ab 14 wird es langsam böse) und trotzdem eine sehr gute Qualität übertragen wird, die man als "99,9% optisch losless" bezeichnen kann.
Edit: Vllt. mach ich nachher noch einen Test, wie es aussieht, wenn man schon encodiertes/komprimiertes x264 in HEVC "umwandelt".
Nun seid ihr dran - gebt euren Senf dazu. Was haltet ihr davon? Hab ihr eventuell erweiterende Methoden für diesen Versuch? Anderen Ansichten? Meinungen? Haut raus :)!
Um beim neuen Videocodec HEVC die produzierten Ergebnise sachlich zu beurteilen, habe ich einen Versuch aufgebaut, in dem x264, HEVC(x265), 8bit, 10 bit und je 4 verschieden CRF-Stufen verglichen werden.
CRF steht für constant rate factor und ist eigentlich bei jedem Encoder zu finden. Es fixiert sich nicht auf eine bestimmte Bitrate, sondern analysiert das Bild und gibt je nach Wert des Faktors eine gewisse Bildqualität aus. Dabei gilt: Je kleiner der Wert, umso besser das Bild/höher die Bitrate.
In diesem Test werde ich mich speziell auf Anime beziehen. Da man subjektiv oft kaum etwas merkt, werden wir diesmal einen exakten Bildvergleicher heranziehen, der Pixelgenaue unterschiede offenbart - Perceptualdiff. Dieses Tool schaut, ob Pixel sich an einer Stelle verändert haben. Dabei reicht schon ein einzelner Pixelwert (Rot von 225 auf 224) als komplette Veränderung.
Da dieser Post jedoch mit guten 150 full hd Bildern den Rahmen sprengen würde und unlesbar wäre, stelle ich ein Paket zur Verfügung, in dem jeder Übersichtlich sich selbst einen Eindruck machen kann.
DOWNLOAD:
https://www.hidrive.strato.com/wget/BjATLSgF
Testvideos waren:
Little Busters - 10 Sek. vom Opening - BluRay Raw (mt2s mit 40 mbps AVC, 8 bit) - simples Material
Fate Stay Night - 20 Sek. von Archer Szene - BluRay Raw (mt2s mit 40 mbps AVC, 8 bit) - komplexes material
Zum Bildvergleich wurde aus jedem Video an 3 identischen Stellen ein losless PNG extrahiert.
Encodet wurde in:
8 bit, hevc, CRF 20-14
8 bit, x264, CRF 20-14
10 bit, hevc, CRF 20-14
10 bit, x264, CRF 20-14
Es wurden keine Filter, Tunes oder sonstige Parameterveränderungen vorgenommen.
Die genauen Zeilen:
echo crf & bit test
echo 8 bit
mkdir "C:\Users\joschapc\Desktop\experiment\8bit\x264"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 20 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf20_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 18 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf18_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 16 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf16_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 14 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf14_8bit.mkv"
echo 10 bit
mkdir "C:\Users\joschapc\Desktop\experiment\10bit\x264"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 20 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf20_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 18 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf18_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 16 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf16_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 14 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf14_10bit.mkv"
echo crf & bit test HEVC
echo 8 bit
mkdir "C:\Users\joschapc\Desktop\experiment\8bit\hevc"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=20 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf20_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=18 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf18_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=16 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf16_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=14 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf14_8bit.mkv"
echo 10 bit
mkdir "C:\Users\joschapc\Desktop\experiment\10bit\hevc"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=20 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf20_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=18 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf18_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=16 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf16_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=14 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf14_10bit.mkv"
echo 8 bit
mkdir "C:\Users\joschapc\Desktop\experiment\8bit\x264"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 20 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf20_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 18 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf18_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 16 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf16_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 14 "C:\Users\joschapc\Desktop\experiment\8bit\x264\%~n1_crf14_8bit.mkv"
echo 10 bit
mkdir "C:\Users\joschapc\Desktop\experiment\10bit\x264"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 20 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf20_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 18 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf18_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 16 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf16_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx264 -preset fast -crf 14 "C:\Users\joschapc\Desktop\experiment\10bit\x264\%~n1_crf14_10bit.mkv"
echo crf & bit test HEVC
echo 8 bit
mkdir "C:\Users\joschapc\Desktop\experiment\8bit\hevc"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=20 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf20_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=18 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf18_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=16 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf16_8bit.mkv"
"C:\ffmpeg8bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=14 "C:\Users\joschapc\Desktop\experiment\8bit\hevc\%~n1_crf14_8bit.mkv"
echo 10 bit
mkdir "C:\Users\joschapc\Desktop\experiment\10bit\hevc"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=20 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf20_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=18 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf18_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=16 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf16_10bit.mkv"
"C:\ffmpeg10bit\ffmpeg.exe" -n -i "%~1" -map 0:0 -c:v libx265 -preset fast -x265-params crf=14 "C:\Users\joschapc\Desktop\experiment\10bit\hevc\%~n1_crf14_10bit.mkv"
Und mein Fazit:
Vergesst nicht, das ganze ist sehr Animebezogen. Echtfilme könnten anders ausfallen.
10 Bit bietet gegenüber 8 Bit in allen fällen einen Qualitätsschub und sogar eine geringfügige Platzersparnis. 10 Bit wirkt auf allen Differenzbildern "schärfer", was daher kommt, dass die Farben genauer berechnet werden und so Kanten und Farbverläufe sauberer dargestellt werden können. Besonders gut sieht man das bei den Bildern von Little Busters.
Jedoch muss man sagen, dass x264 bei beiden Bittiefen oft ein wenig "sauberer" und schärfer als HEVC ist, was aber auch durch die nicht selten doppelt so hohe Bitrate entstehen kann. Besonders bei 8Bit macht x264 einen dezent besseren Eindruck (gut zu sehen bei 2Fate Stay Night). Subjektiv betrachtet kann man, ohne es direkt zu vergleichen, bei KEINEM der Kandidaten einen sofort ins Auge springenden Unterschied erkennen, oder gar einen Fehler, der den Filmgenuss beeinträchtigen würde.
Wenn man die CRF-Werte miteinander vergleicht, sieht man, dass es der Qualitätszuwachs pro CRF Wert sehr linear ist. Man kann also ziemlich genau seine resultate bestimmten. Vom optischen her sieht man zum Beispiel im Himmel bei den 3Little Busters Bildern, dass auf jeder Einstellung einige Farbtupfer im Himmel verloren gehen. Und das war auch das Einzige dort, was ich beim genauen hingucken erkennten konnte. Bei dem Bild von Komari (2LittleBusters) sieht man auf jeder Einstellung kaum einen Unterschied.
So gesehen kann man das mit einer Qualitätserhöhung von ein paar CRF wieder ausgleichen und dabei trotzdem noch IMMENS Speicherplatz sparen, vielleicht kann man auch so dreißt sein und irgendwann, wenn vorhanden, einen sharpen-filter darüberlaufen lassen.. Nach wie vor bleibt also das einzige Problem die Kompatibilität, die meines Erachtens im nächsten Jahr gegeben sein wird.
Darum meine Empfehlung, wenn ihr Eure Filme/Animes nicht über einen alten Fernseher (per USB) abspielt und das meiste mit Software macht:
HEVC, 10Bit, CRF16
Jedoch sollte alles ab CRF 18 schon akzeptabel sein. CRF 20 ist, gemessen an den Differenzbild, außerhalb der Schmerzgrenze.
In der beiliegenden Exceltabelle sieht man, dass dort noch sehr viel Platz eingespart wird (ab 14 wird es langsam böse) und trotzdem eine sehr gute Qualität übertragen wird, die man als "99,9% optisch losless" bezeichnen kann.
Edit: Vllt. mach ich nachher noch einen Test, wie es aussieht, wenn man schon encodiertes/komprimiertes x264 in HEVC "umwandelt".
Nun seid ihr dran - gebt euren Senf dazu. Was haltet ihr davon? Hab ihr eventuell erweiterende Methoden für diesen Versuch? Anderen Ansichten? Meinungen? Haut raus :)!
Zuletzt bearbeitet: