x264 10bit Erfahrungen?

  • Wie sieht eure Erfahrungen mit x264 10bit?
    Wie viel langsamer ist das Encoding?
    Wie viel bringt es wirklich im Gegensatz zu 8bit? (wirklich 5-10%?)
    Womit guckt ihr euch das 10bit Material an? (momentan scheinen an kostenlosen Decodern ffplay und lavvideo zu gehen)

    Wäre schön, wenn ein paar Leute ihre Erfahrungen posten könnten. :)

    Cu Selur

  • Das encoden dauert gut 50% länger dafür werden die Datei grössen bis zu 20-30% kleiner, Raw mit 623 mb wurde 128Mb gross mit zusätzlichen filter in avi script wurde sogar der blur und denoise effekt reduziert.natürlich kann ich dank 10 bit auch mit viel weniger fps encoden. Das Bild bleibt aber auf dem gleichen Niveau wen nicht sogar besser. Ankuck wird es mit Mplayer, ich habe mit verscheidenen software den 10bit encode gestestet, mediacoder ffdshow x264gui, Das Hybrid von dir hab ich noch nicht ausbrobiert. Alle quellen wurden immer über avisynth script geladen. Angelblich kann der neue vlc auch 10 bit videos abspielen wurde aber noch nicht gestestet.

    Hier der vergleich einmal mit x264 8bit und einmal mit 10 bit alle Einstellungen waren sonst die selben.

    10bit vs 8 bit encode.jpg

    3 Mal editiert, zuletzt von Diskordier (21. August 2011 um 00:11)

  • Man muss unterscheiden zwischen 10bit Farbraum (4:2:2; gegenüber 8bit 4:2:0) und der mit der Unterstützung einhergehenden generellen Erweiterung der Genauigkeit der Berechnungen, da nicht mehr nur 8bit sondern 10bit verwendet werden können. :)
    Bei http://www.x264.nl/ sind ein paar nette Links:
    10bit-depth output information links: .pdf 01 .pdf 02 .pdf 03
    pdf 01 -> Warum 4:2:2 schöner ist als 4:2:0 (banding&co).
    pdf 02 -> Warum 10bit Genauigkeit besser sind als 8bit.
    pdf 03 -> 01&02 in einer Präsentation zusammengefasst. :)

    Nachteile sind, dass:
    1. zumindest aktuell die 10bit Variante langsamer ist
    2. man das High10-Profil verwenden muss

    Cu Selur

    Hybrid hier im Board, Homepage (http://www.selur.de), Forum

    Wünsche allen ein paar fröhliche Weihnachtstage!

    Einmal editiert, zuletzt von LigH (21. August 2011 um 07:32) aus folgendem Grund: da fehlte was kleines

  • Also im klartest heisst das 10 Bits Farbtiefe pro Kanal XD

    Zunächst einmal: Was bedeutet Farbtiefe?
    Die Farbtife gibt an, mit welcher Präzision Farbinformationen abgespeichert werden können. Die bisherigen Encodes haben eine Präzision von 8Bits (256 Abstufungen) pro Farbkanal, das heisst insgesamt 12 Bits pro Pixel (bzw. nach der Konvertierung zu RGB dann 24 Bits pro Pixel, was der Farbtiefe der meisten Systemen entspricht).
    Man könnte auch 9 Bits pro Farbkanal verwenden, aber egal das lassen wir mal Beiseite.
    Bei Encodes mit 10 Bits pro Farbkanal stehen 1024 Abstufungen und 15 bzw. 30 Bits pro Pixel zur Verfügung, was natürlich wesentlich genauer ist. Aber: Die meisten im Handel erhältlichen Anzeigegeräte und Grafikkarten zeigen nur 24 Bits pro Pixel an.

    Nun was machen Dagegen
    Dazu ein wenig Info nebenbei: Die meisten LCD Displays (TN-Panels, um genau zu sein) können nur eine Farbtiefe von 6 Bits pro Kanal (gerade einmal 64 Abstufungen) darstellen. Das würde natürlich unter Normalen Umständen absolut schrecklich aussehen. Daher bedient man sich eines Tricks: Um die Farbtiefe von 8 Bits zus imulieren, kommt Dithering zum Einsatz. Dithering heisst stark vereinfacht ausgedrückt, dass der Controller des Panels mit einem dynamischen Muster schnell zwischend en nächstgelegenen Farbwerten der einzelnen Pixel wechselt. Hierzu sieht er in einer Tabelle, der sogenannten Lookup Table oder auch LUT nach, welche Farbe wie dargestellt werden kann.

    Genau diesen Trick kann man auch bei der Darstellung von High-Bit-Depth-Encodes anwenden.

    Man könnte jetzt einfachh mit 8 Bits encoden und das Dithering gleich einbauen. Das würde selbstverständlich gehen und wird auch schon so gemacht um Banding zu vermeiden. Allerdings hat das auch einen gewaltigen Nachteil: Die Bitrate, die erforderlich ist, um dieses Dithering und andere Details beizubehalten, ist sehr hoch.

    Aus diesem Grund sit eine hohe Farbtiefe beim Encode sehr vorteilhaft. Man kann sich das Dithering und somit auch jede Menge Bits sparen.
    Die höhere Präzision steigert auch die QAllgemeine Effizienz des Encoders.
    Um zu verdeutlichen, wie sehr die Effizienz gesteigert wird, siehe oben mein beispiel des Qualitätsunterschieds

    oder zb Eine Videospur hat etwa 623 MiB bei 8 Bits Farbtiefe.
    Dasselbe Material — also immer noch 8 Bits und mit bereits manuell hinzugefügtem Dithering — mit denselben Einstellungen braucht bei 10 Bits pro Kanal gerade mal 128 MiB, und das ohne Qualitätsverluste — im Gegenteil: der Encode sieht sogar besser aus.
    Was ich noch nicht versucht habe sit, wenn man das entsprechende Dithering dem Encoder überlässt und diesen einfach mit hoher Farbtiefe füttert, sollte das Ergebnis sogar noch besser ausfallen, muss ich aber auch noch zuerst mal testen

    Okay lauter Vorteile hier nun die Nachteile
    Den die gibt es lieder auch, und zwar unterstützt derzeit noch nichts ausser MPlayer und meinen gepatchten MPlayer2-Builds diese Encods. Alles andere zeigt entweder gar kein Bild oder man bekommt stark verfälschte Farben, weil versucht wird, das Video zu dekodieren, als hätte es nur 8 Bits pro Kanal.
    Die noch traurigere Nachricht ist, dass es aufgrund von Schwierigkeiten in der Entwicklung (völlig verkorkster Code) wohl noch sehr lange dauern wird, bis MPC-HC und FFdshow-tryouts dies unterstützen werden. Selbst VLC wird wahrscheinlich schneller dran sein. Bei CoreAVC und Hardware-Dekodern sieht es noch düsterer aus. Des Weiteren ist der für das Dekodieren und Dithern zuständige Code in FFmpeg noch nicht sehr gut optimiert, benötigt also eine höhere CPU-Leistung. Das sollte sich aber in nächster Zeit ändern. Wobei es da auch einen Hoffnungsschimmer gibt CCP und FFdshow haben erst kürzlich 10bit taugliche Versionen realisiert.


    deutlich kleinere Encodes, aber gleiche oder leicht bessere Qualität

    Es kann also nur besser werden!

    Einmal editiert, zuletzt von Diskordier (21. August 2011 um 00:34)

  • der Support ist schon so lange da wie High10 unterstützt wird,...
    Was noch nicht geht ist 10bit nach 8bit, da die entsprechenden Routinen in den Scalern (welche auch für Farbraumänderungen zuständig sind) noch nicht existieren.

    Zitat

    Den die gibt es lieder auch, und zwar unterstützt derzeit noch nichts ausser MPlayer und meinen gepatchten MPlayer2-Builds diese Encods.


    Die Decoder die mit LAVFilter kommen (sprich LAVVideo) gehen auch,...

  • Kommt vermutlich darauf was man unter 'einfach gehaltenen animatinen/cartoons/optimierten animes' versteht.
    Spontan wüsste ich keine bei denen es Cartoons bei denen es nicht Farbübergänge und dergleichen gibt bei denen allein der Farbraumunterschied schon helfen sollte. Wenn der Unterschied des Outputfarbraums gar keinen Vorteil bringt, also nur den 2bit Overhead, weiß ich nicht sicher, ob der Genauigkeitsvorteil immer den Overhead kompensiert, vermuten würde ich es schon, aber sicher sagen kann ich es nicht. (ist halt noch alles eher Neuland :))

    Cu Selur

  • Farbraum:
    10bit -> kein Banding (es sei den es ist in der Quelle und man dithered nicht)
    8bit -> wie bis her immer: banding es sei denn man dithered beim Playback
    Precission:
    10/8bit hat damit eigentlich nix zu tun. ;)

    Das Anfangs verwirrende ist, dass man in von x264 eine 8bit und eine 10bit Variante hat, die beide aber durchaus auch 4:2:2 (10bit) als Farbraum output haben können, aber intern anders rechenen. ;)

    8bit + 4:2:2 -> High 4:4:4 Profile
    10bit + egal ob 4:2:0, 4:2:2, 4:4:4 -> High10

    Cu Selur

    Ps.: Gerade ne neue Hybrid version rausgebracht die erlaubt den Output Colorspace zu setzen.

  • Andere frage was macht youtube oder Facebook mit einem 10bit video? Wird das wiederum auf 8 bit codiert? habe zum testen ein fake Profil auf fb gemacht, Kann ich jetzt irgendwie die Videoinformationen rausholen?


    H264 ist doch 4:2:2 tauglich aber x 264 noch nicht oder bin ich nicht auf dem neusten Stand?

  • x264 --fullhelp:


    Zitat

    Andere frage was macht youtube oder Facebook mit einem 10bit video?


    Wenn sie es reencoden, dann sicher mit 8bit, da 10bit encoder nicht so verbreitet sind und es auch länger dauert. ;)
    (der flash player kann high10 soweit mir bekannt)

    Cu Selur

  • Das Anfangs verwirrende ist, dass man in von x264 eine 8bit und eine 10bit Variante hat, die beide aber durchaus auch 4:2:2 (10bit) als Farbraum output haben können, aber intern anders rechenen.

    In Deinem letzten Post hast Du doch selbst die x264-Hilfe zitiert: x264 unterstützt keine 4:2:2-Ausgabe. (weder mit 8, noch mit 10 Bit)

    Bitte korrigiert mich, wenn ich falsch liege, aber meine Laienmeinung zu diesen Dingen: Generell scheinen hier im Thread Farbunterabtastung (4:2:0, 4:2:2 etc.) und Farbtiefe (8 bit, 10 bit) durcheinandergewürfelt zu werden, obwohl sie erst einmal nicht viel miteinander zu tun haben. Wenn die x264-Entwickler von 10 bit bzw. High 10 Profile sprechen, reden sie immer von der Präzision bzw. Farbtiefe der Ausgabe - nicht aber von einer 4:2:2-Farbunterabtastung, welche x264 ja auch gar nicht bzw. x264cli nur als Input unterstützt (Nur nebenbei: Streng genommen bedeutet "High 10 Profile" immer 4:2:0). Dies ermöglicht 64 mal mehr Farben (2^10 / 2^8) und erlaubt x264 damit besser zu Komprimieren (Kompression vor Runden ist effizienter als Kompression nach Runden, auch wenn man mit 2 Bit mehr arbeiten muß). Die Farbunterabtastung gibt nur an, in welchem Verhältnis (in horizontaler und vertikaler Richtung) die Auflösungen (Breite x Höhe in Pixeln) der Farb- und Helligkeitskanäle zueinander stehen. 4:2:2 bringt bezüglich Bandings nicht die Vorteile gegenüber 4:2:0, welche 10 Bit Farbtiefe gegenüber 8 Bit Farbtiefe bringt.

  • Zitat

    x264 unterstützt keine 4:2:2-Ausgabe


    Jetzt schon. :) -> http://git.videolan.org/?p=x264.git;a=…98e36d6492ffa7e

    Frage ist nur, welcher Decoder kann 4:2:2 AVC handeln?

    hab mal drei Samples erstellt (http://www.multiupload.com/QGSL0TFVRV):
    mencoder422:

    Code
    mencoder "G:\Hybrid\test - clips\test.avi" -ovc raw -noskip -vf scale,format=yuy2 -forcedsubsonly -nosub -nosound -mc 0 -lavdopts threads=8 -really-quiet -ofps 25 -of rawvideo -o - | x264 --crf 18 --level 4.1 --no-8x8dct --vbv-maxrate 150000 --vbv-bufsize 187500 --input-csp i422 --output-csp i422 --fps 25 --input-res 640x352 --output "D:\Encoding output\mencoder422.mp4" -

    ffmpeg422:

    Code
    ffmpeg -v -10 -i "G:\Hybrid\test - clips\test.avi" -threads 8 -vsync 0 -an -r 25 -pix_fmt yuyv422 -f rawvideo - | x264 --crf 18 --level 4.1 --no-8x8dct --vbv-maxrate 150000 --vbv-bufsize 187500 --input-csp i422 --output-csp i422 --fps 25 --input-res 640x352 --output "D:\Encoding Output\ffmpeg422.mp4" -

    x264_422:

    Code
    x264 --demuxer auto --input-csp 420 --no-interlaced --output-csp i422 --crf 18 --level 4.1 --no-8x8dct --vbv-maxrate 150000 --vbv-bufsize 187500 --output-csp i422 --fps 25 --output "D:\Encoding Output\x264_422.mp4" "G:\Hybrid\test - clips\test.avi"

    4:2:2 wird von libav momentan noch nicht unterstützt, der einzige Decoder der es aktuell kann ist vermutlich der von Mainconcept :(

    Cu Selur

    Hybrid hier im Board, Homepage (http://www.selur.de), Forum

    Wünsche allen ein paar fröhliche Weihnachtstage!

    5 Mal editiert, zuletzt von LigH (22. September 2011 um 20:24) aus folgendem Grund: MultiUpload-Link korrigiert

  • egal ob 10bit oder 422
    welcher decoder kann das überhaupt?
    wirklich nur Mainconcept?
    gibt es denn bei 10bit mehr decoder?
    ffdshow und vlc haben jedenfalls schonmal versagt.

    interressant sind die leute von vlc,
    baun mit am x264 encoder, aber decodieren können die es nicht.
    wie wollen die den encoder überhaupt prüfen!?
    ich habe den neusten (1.1.11)

  • Für 10bit:
    VLC kann es ab 1.2.x, diese gibt es bisher nur als Nightlies, nicht als stabile Version. ffdshow, LAV Video, madVR und CoreAVC können es in ihren aktuellen Versionen.

    Keine Ahnung, was 4:2:2 angeht.

  • Yup, 10bit und 4:4:4 wird von libav also ffdshow, LAV Video, VLC, MPlayer und ffplay ohne Probleme gehandelt.
    4:2:2 kann eventuell der DivX Decoder (da der ja im Prinzip der Mainconcept Decoder sein sollte). (Ist aber nur eine Vermutung, noch nicht getestet!)
    Ansonsten stimmt es das 4:2:2 nur von kostenpflichtigen Decodern unterstützt wird, sehe das aber wie LigH, dass die entsprechenden Anpassungen sicher bald in libav eingefügt werden.

    Cu Selur

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!