Kostenloses GPU basiertes H.264 encoding

  • Hab mal gedacht ich mal ne kleine Auflistung der kostenlosen Tools (kein Share-/Ad-/Trialware) die mir so einfallen mit denen man die GPU nutzen kann:



    QSV -> Intel
    VCE -> AMD
    CUDA -> NVIDIA


    * jeweils durch AddOns von rigaya
    ** anders als die anderen handelt es sich hier um einen MVC encoder, jedoch wohl nur noch als Teil von BDtoAVCHD


    Falls jemand noch andere kostenlose tools kennt bitte Bescheid sagen.


    Kennt z.B. jemand ein Command Line Tool, welches VCE nutzt?


    Cu Selur

  • Mit den neueren QuickSync APIs und damit neu verfügbaren Features:

    Code
    1. settings below are only supported with API v1.6 --mbbrc enables per macro block rate control. --extbrc enables extended rate control. settings below are only supported with API v1.7 --trellis <string> set trellis mode used in encoding. - auto(default), none, i, ip, all. settings below are only supported with API v1.8 --i-adapt enables adaptive I frame insert. --b-adapt enables adaptive B frame insert. --b-pyramid enables B-frame pyramid reference. --lookahead-ds <string> set lookahead quality. - auto(default), fast, normal, slow


    sieht es aber schon besser aus.


    die wirklich interessante features, sind aber auch hier nur per software machbar:

  • VCE über VfW: https://github.com/jackun/openencodevfw


    Ich wollte gerade A's Video Converter mit QSV testen, allerdings kann ich lediglich den Microsoft H.264 Encoder wählen. Weiß jemand, wo da das Problem liegt? Verwende Windows 8 64 Bit, Intel HD4600, neueste Treiber und Monitor an der integrierten GPU is soger aktiviert. In Handbrake wird QSV ohne weiteres erkannt.

  • Welchen Treiber hast du installiert? Ich bin auf Version 10.18.10.3621. Werde mal die ältere aus dem März testen.


    Edit: Musste meine dedizierte Grafikkarte deaktivieren. Leider gibt es kaum Optionen für Quicksync in A's Video Converter. Werde bei Handbrake bleiben.
    Edit2: Die QSVEncC basierten Tools bleiben immer an einer bestimmten Stelle hängen und verweigern dann den Dienst bis zum nächsten Neustart. Ist das ein bekanntes Problem?

  • Zitat

    Die QSVEncC basierten Tools bleiben immer an einer bestimmten Stelle hängen und verweigern dann den Dienst bis zum nächsten Neustart.


    Auch mal mit der aktuellen (2014.06.17.2) Hybrid Version versucht?


    Zitat

    Ist das ein bekanntes Problem?


    Das das Encoding 'einfriert' hatte ich bei irgendeiner Kombination von Einstellungen letztens auch, weiß aber nicht mehr welche Einstellungen es waren.
    Mit

    Code
    1. mencoder -lavdopts threads=8 -really-quiet -of rawvideo -o - -ovc raw -vf scale,format=i420 -forcedsubsonly -nosub -nosound -mc 0 "H:\Temp\encodingTempAvisynthSkript_06_07_02_7810.avs" | ffmpeg -loglevel fatal -threads 8 -an -sn -r 25 -pix_fmt yuv420p -s 720x576 -f rawvideo -i - -r 25 -pix_fmt yuv420p -f yuv4mpegpipe - | QSVEnc --y4m -i - --input-buf 3 --slices 0 --fps 25000/1000 --cqp 26:27:28 --profile auto --level auto --quality high --bframes 3 --gop-len 0 --scenechange --sar 64:45 --lookahead-ds auto --output-file "H:\Temp\DVD_06_07_02_7810_03.264"


    lief es aber gerade alles durch.


    -> Vermute also, dass es nicht ein generelles sondern ein Treiber <> Setting Problem ist.


    Zitat

    Welchen Treiber hast du installiert? Ich bin auf Version 10.18.10.3621. Werde mal die ältere aus dem März testen.


    Nutze auch 10.18.10.3621 und hab meine NVIDIA Karte auch aktiv, vermute Du musst die Intel aber als Hauptkarte eingestellt haben.

  • Teste jetzt mit Hybrid. Default Einstellung sind durchgelaufen, nur der Fortschrittsbalken hängt da. Werde mal benutzerdefinierte Einstellungen testen. la-depth ist nich konfigurierbar in Hybrid?


    Benötigt i-adaptive/b-adaptive besondere Einstellungen? Bis jetzt hat es in Handbrake keinen Unterschied gemacht ob an oder aus, und auch in QSVEncC ist Output immer derselbe...

  • Zitat

    ..nur der Fortschrittsbalken hängt da


    Das liegt dann an der Ausgabe von QSVEnc, Hybrid nimmt einfach die Konsolenausgabe ('210 frames: 481.65 fps, 261.33 kbps') und errechnet die geschafften Prozent. :)


    Zitat

    Benötigt i-adaptive/b-adaptive besondere Einstellungen?


    Ne, sollte nicht,... (man muss halt die Kästchen anhaken und hat dann die entsprechenden Einträge (--i-adapt --b-adapt) im Aufruf.
    Unterschiede wird es vermutlich nur sehen, wenn auch genug große GOPs verwendet werden,.. (sollte also bei OpenGop eher auffallen)
    Hab aber auch noch nicht viel damit rumgetestet.

  • Generell scheint QSVEnc noch nicht sehr ausgereift zu sein. Crasht bei mir sehr oft, bevor es überhaupt losgeht.

    Code
    1. "C:\PROGRA~1\Hybrid\QSVEncC.exe" --y4m -i - --input-buf 3 --slices 0 --fps 25000/1000 --cqp 26:27:28 --profile auto --level auto --quality high --bframes 3 --gop-len 0 --scenechange --sar 1:1 --lookahead-ds auto --trellis auto --output-file "K:\testfile_09_44_53_5110_01.264"
    2. finished after 00:00:00.375 with exitCode 1
  • Wer Haswell hat und Quicksync mit möglichst guter Qualität in Handbrake nutzen will, sollte mit diesen Advanced Options anfangen und von dort ausgehend anpassen:


    la-depth=60:tu=1:trellis=3:gop-pic-size=0


    la-depth=100 wird derzeit nicht unterstüzt, das Maximum liegt bei 60. In den Optionen Quicksync decode deaktivieren, sonst liegt das Limit bei 45. tu=4 ist deutlich schneller, aber auch etwas schlechter als tu=1. Mit diesen Einstellungen liegt QSV für einen AVBR Single-Pass Encode bei meinem Material gleichauf mit x264 veryfast, nur schneller und die CPU ist noch für andere Dinge frei.


    Adaptive I- und B-Frames sind automatisch an, scheinen bis jetzt aber keinen Effekt zu haben.

  • Die c't hat mal GPU-beschleunigte Encodierung verglichen, in Ausgabe 15/2014 ab Seite 138 werden die Technologien vorgestellt, und es wird auch die Encodierung mit verschiedenen Techniken durchgeführt. Kostenlose Software wurde dafür wohl nicht verwendet, zwecks Vergleichbarkeit wurde Software gewählt, die mehrere Encoder und GPU-Beschleunigertechniken auf gleiche Weise unterstützt: ArcSoft MediaConverter 8 und Cyberlink MediaEspresso 6.7.


    Kurz das Fazit: QuickSync kann mit Software-Encodern einigermaßen mithalten, Nvidia und AMD sind technisch deutlich unterlegen. Auch hinsichtlich des Supports unterscheiden sich die drei Kandidaten: Insbesondere ist AMD praktisch unerreichbar, und Nvidia gibt zumindest zu, intel diesen Markt künftig zu überlassen.

  • Jo, NVENC ist nicht sonderlich toll. Funktioniert nur ganz gut mit Shadowplay, da x264, wenn man anspruchsvolle Spiele aufnimmt, auch sehr hohe Bitrates benötigt. Ultrafast/Superfast mit teilsweise noch --zerolatency. Wenn man aber die CPU frei hat, sieht das ganz anders aus.


    Haswell Quicksync kann dagegen teilweise schon mit x264 Medium mithalten, insbesondere wenn die Bitrates eher niedrig sind: http://www.tetrachromesoftware…s/q264test_lookAhead.html