Pipe mit breiterem Chroma Subsampling Support als YV12?

  • Die bei MeGUI enthaltene avs4x264mod.exe scheint rein nur YV12 zu unterstützen.


    Ich will ein 4:2:2 Video mit dem 10bit Encoder codieren und avs4x264mod.exe konvertiert das dann immer zu YV12 um.. Da man das dem scheinbar auch nicht austreiben kann und für 3200x2000er Auflösung vermutlich die 4 GB RAM Grenze des 32bit geknackt wird, müsste ich das wohl irgendwie über 64bit kriegen. Und das wäre ja auch schneller..
    Die 3200x2000 brauch ich für youtube, das hilft immens gegen ihre Kompression. (bzw wenn man einen 16:9 Monitor hat, 3200x1800)


    Daher die Frage:


    Gibt es irgendeinen Pipe der YUY2 (4:2:2) unterstützt??

  • Klar ffmpeg kann auch ne Pipe mit was anderem als Yv12 machen:

    Code
    1. ffmpeg -y -loglevel fatal -i "PFAD ZUR QUELLE" -an -sn -vsync 0 -r 25 -pix_fmt yuv422p -f rawvideo -


    decodiert den Videostream des Quellmaterials und gibt 4:2:2 mit einer Framerate von 25fps aus.



    Zur Vollständigkeit:

    Code
    1. mencoder -really-quiet -of rawvideo -o - -ovc raw -vfm ffmpeg -noskip -vf scale,format=422p -forcedsubsonly -nosub -nosound -mc 0 "PFAD ZUR QUELLE"


    decodiert den Videostream des Quellmaterials und gibt 4:2:2 aus.


    Cu Selur


    Ps.: Je nach Quellmaterial müsste man eventuell noch die Zeilen anpassen damit das Material richtig dekodiert wird.

  • Er will es quasi so, das er von der Aufnahme -> AVS und von der AVS -> avs4x264mod
    Und für die avs4x264mod.exe will er halt einen Ersatz. Der Ersatz sollte zum einen mit 64Bit laufen und zum anderem den 10Bit Encode dabei unterstützen im jeweiligen YUY2 Farbraum.


    Ob das mit FFMpeg geht und wenn ja wie. ^^ Das würde er dann wissen wollen glaube ich ^^

  • 10/12/16bit geht auch mit ffmpeg man muss nur den pix_fmt Typ entsprechend anpassen.
    mencoder kann nur 8bit!


    Code
    1. ffmpeg -pix_fmts


    liefert die liste der unterstützen Formate, für 422 und 10bit wäre:


    yuv422p10le
    und
    yuv422p10be
    interessant, je nach dem ob man little endian (<- will man meist) oder big endian output will.

  • ffmpeg -y -loglevel fatal -i "PFAD ZUR QUELLE" -an -sn -vsync 0 -r 25 -pix_fmt yuv422p -f rawvideo -


    diese zeile muss aber noch ergänzt werden oder? Denn codiert wird ja hier nix denk ich?^^ Irgendwie muss das ja an x264 gehen.


    Kann man externen x264 nehmen? MeGUI benutzt die komisar mod x264.
    Weil sonst muss ich wohl gucken wie man bei ffmpegs internen x264 den 10bit x264 encoder anspricht. Der wählt den Encoder dann je nach pix_fmt? Weil eig. hat 10bit x264 mitm chroma sampling ja nicht viel zu tun ^^

  • Ohje.. Sagaras hat mir erstmal gesagt das - | x264-10b_64.exe .........
    die pipe baut, argh..


    http://paste2.org/b4fhfFU8


    Das Problem hab ich aber nun :(


    Ich hab hier yuyv422 als pix_fmt genommen, da die Quelle in diesem Farbformat vorliegt und es mir logischer erscheint das dann so anzugeben, da ja letztendlich x264 10bit encoder es erst in 10bit codiert.


    http://paste2.org/HUWD2vvk


    Noch 'ne kleine Anpassung wegen einlesen, aber ändert nix dran.


    Ok hab gehofft, ich habs nun gefunden, weil ich deine Parameter -an -sn -vsync 0 nicht drin hatte, aber das hat immer noch nichts geändert am Problem.

  • Die Frage ist, ob ffmpeg mit 4:2:2 AVS-Input richtig arbeitet?


    Ich selbst nehme immer avs2pipemod, aber das ist letztendlich Geschmacks- bzw. Gewohnheitssache:
    avs2pipemod -y4mp "quelle.avs" | x264 - --demuxer y4m --output-csp i422 -o "ausgabe.h264"


    (Fall man bereits im Skript mit 9...16-Bit arbeitet, muß man "rawvideo" anstatt "y4mp" nehmen und bei x264 --input-depth, --input-csp und --input-res setzen sowie das "--demuxer y4m" entfernen.)


    Daß avs4x264mod das aber nicht können soll, verwundert mich.


    /edit:
    Ok, avs4x264mod kann anscheinend nicht mit YUY2 umgehen, aber YV16 geht. avs2pipemod setzt in dem Fall automatisch ein ConvertToYV16().

  • Wenn man YUV 4:2:2 mit x264 encodieren möchte, müsste man vermutlich erst mal aus der Gruppe der folgenden Parameter

    Code
    1. --profile high422
    2. --input-csp i422 (oder andere, wenn x264 mit lavf-Unterstützung compiliert wurde)
    3. --output-csp i422


    diejenigen herausfinden, die für das gewünschte Ergebnis relevant sind, je nach dem, ob man 4:2:2 wirklich speichern oder aber nur einlesen können will.


    Ich bezweifle allerdings stark, dass Decoder-Unterstützung für das Profil High422 weit verbreitet ist, insbesondere unter Consumer-Playern. Die typischen Blu-ray-und-mehr-Player-kompatiblen Profile Main und High verwenden intern jedenfalls YUV 4:2:0.

  • Code
    1. ffmpeg -y -loglevel fatal -i "PFAD ZUR QUELLE" -an -sn -vsync 0 -r 25 -pix_fmt yuv422p -f rawvideo - | x264 --crf 18 --profile high422 --input-csp i422 --output-csp i422 --fps 25--input-res 720x404 --output "PFAD ZUR AUSGABE" -


    wobei die Pfade, Frameraten und Auflösung natürlich angepasst werden müssten.


    Zitat

    Die Frage ist, ob ffmpeg mit 4:2:2 AVS-Input richtig arbeitet?


    Würde mich wundern wenn nicht.


    Zitat

    Ich bezweifle allerdings stark, dass Decoder-Unterstützung für das Profil High422 weit verbreitet ist,


    Bezweifle sogar, dass es aktuell einen Decoderchip in Consumer-Hardware gibt der mehr als High unterstützt.
    Alle Profile größer High bedeuten normalerweise 'software only'-decoding

  • Zitat

    Ich bezweifle allerdings stark, dass Decoder-Unterstützung für das Profil High422 weit verbreitet ist, insbesondere unter Consumer-Playern. Die typischen Blu-ray-und-mehr-Player-kompatiblen Profile Main und High verwenden intern jedenfalls YUV 4:2:0.


    Da es sowieso kein Hardware Player jemals zu Gesicht bekommen wird, ist mir das reichlich egal, was die unterstützen :)


    avs4x264mod.exe kommt scheinbar tatsächlich mit einem angefügten


    ConvertToYV16 zurecht.


    YUY2 konvertier zu YV16 dürfte ja eig. auch kein Einfluss auf die Qualität haben? Da gibt x264 nicht mal mehr eine resize warning aus (yuyv422 -> yuv422p) hatte der vorher immer als warning ausgegeben.
    YUV422p scheint dann ja YV16 zu sein?^^
    Dann wäre das ja bereits die Lösung.


    Code
    1. avs4x264mod.exe -L x264-10b_64.exe --preset slow --crf 20.0 --aq-strength 1.25 --output-csp i422 --sar 1:1 --output "d:\XVideos\Lets Play DooM\ZDW-Tournament-Swordgrunt-vs-Savant-blur3.264" "d:\XVideos\Lets Play DooM\ZDW-Tournament-Swordgrunt-vs-Savant-blur.avs"