Hybrid: Input -> x264/x265/Xvid/VP8/VP9/AV1

  • Aktuelle Version, Resize-Funktion: Wenn "Auto adjust" aktiviert ist und ich ändere nun einen der beiden Werte (egal, ob X- oder Y-Achse), wird zunächst der jeweils andere Wert entsprechend angepaßt. Wenn ich nun aber ins Encoder-Menü wechsle, kann ich bereits in der Kommandozeile sehen, daß nur der Y-Wert (height) übernommen wurde. Dementsprechend sieht dann auch das Video aus. Schalte ich "Auto adjust" aus und passe beide Werte von Hand an, ist alles gut.
    Getestet unter Linux Debian 8 (Jessie) 64bit mit QT 4.8.5.

    Einmal editiert, zuletzt von pintcat (11. Juli 2015 um 17:24)

  • Hybrid unterstützt:
    1. den alten nvcuenc encoder (https://github.com/Selur/CudaEncoder), welcher nur mit NVIDIA drivers < 340.52 läuft, bzw. wenn die entsprechenden dlls im Hybrid Ordner vorhanden sind und 'supportNVCUEncCuda=true' in der Misc.ini aufgeführt ist
    2. NVEncC on rigayas (https://onedrive.live.com/?cid=6bdd4375a…75AC8933C6!2293) welche NVIDIA Kepler oder neuere Karten und Treiber >= 340.52 benötigt. (je nach Version auch neuere)
    3. DGDecNV von Donald Graft (http://rationalqm.us/dgdecnv/dgdecnv.html), welches manuell in den avisynthPlugins Ordner von Avisynth manuell kopiert werden muss (inklusive license.txt und allen Files die es sonst so braucht)
    4. FlacCL von CUETools (http://www.cuetools.net/wiki/FLACCL), welchen .Net 2.0 oder neuer braucht wenn ich mich recht entsinne; wichtig hierbei ist, dass bei Config->Tools->FLACCL nicht flac.exe sondern die CUETools.FLACCL.cmd.exe ausgewählt ist.
    Für all diese Tools ist aber die Grundvoraussetzung, das Hybrid die NVIDIA Karte im System als CUDA kompatibel erkennt.
    Dies teilt Hybrid beim Start mit, bei mir erscheint z.B. 'Found the following CUDA capable cards: GeForce GTX 660 Ti'.
    Hybrid liest hierfür die Registry aus und checkt gegen eine interne Liste ob die Karte CUDA kompatible ist oder nicht, wobei die Liste im wesentlichen die Daten von https://developer.nvidia.com/cuda-gpus enthält.

    Cu Selur

  • Was meinst du mit "CUDA-Unterstützung"? Anstatt x264 einen anderen CUDA-AVC-Encoder verwenden? Ich glaube, der wurde mittlerweile durch QSVEnc ersetzt, weil der QuickSync-Encoder unter den GPU-Encodern noch mit die beste Qualität hat (dennoch müsste man x264 stark einschränken, um ihn ähnlich schlecht aussehen zu lassen).
    __

    P.S.: Der CudaEncoder muss dann wohl zusätzlich dazu. In der Liste der mitgelieferten Encoder steht er gar nicht mit drin.

    DGDecNV nutzt kein CUDA-Programm, sondern den PureVideo-Decoderchip.

  • Ja, hybrid erkennt die grafikkarte GeForce GTX 980M als cuda kompatibel. Also wenn ich jetzt FlacCL von CUETools heruntergeladen habe, muss ich dann einfach nur die dateien in den haupt hybrid ordner entpacken und hybrid starten?
    Wird dann automatisch cuda angewendet oder kann man das dann noch irgendwo an/aus stellen?

  • Was meinst du mit "CUDA-Unterstützung"? Anstatt x264 einen anderen CUDA-AVC-Encoder verwenden? Ich glaube, der wurde mittlerweile durch QSVEnc ersetzt, weil der QuickSync-Encoder unter den GPU-Encodern noch mit die beste Qualität hat (dennoch müsste man x264 stark einschränken, um ihn ähnlich schlecht aussehen zu lassen).

    Gute Frage, genau das muss ich noch herausfinden. Wie genau nutzt man eine cuda fähige Karte in hybrid am besten?

  • FlacCL kommt direkt mit Hybrid (ist ne ältere Version hab ich gerade gesehen, man könnte aber einfach die aktuelle nehmen und diese in den dynamic Ordner packen), die Binary muss man nur wie gesagt auswählen (liegt im dynamic-Ordner) und neustarten, wenn man dann unter Audio 'flac' als Zielformat auswählt gibt es auch erweiterte Optionen bzgl. GPU.
    Cuda wird nie automatisch verwendet, sondern nur wenn der entsprechende Encoder/Filter/... gewählt ist.

    Nebenbei: FlacCL ist schon immer etwas 'wählerisch', d.h. auf manchen Systemen läuft es irgendwie nicht rund, weshalb ich es nicht mehr als Default flac encoder in Hybrid gewählt habe. (neuere Version ist also vermutlich keine schlechte Idee)

    Zitat

    DGDecNV nutzt kein CUDA-Programm, sondern den PureVideo-Decoderchip.


    NVEncC und nvencu nutzen auch nicht wirklich CUDA, die Benamsung hat sich aber so eingebürgert und DGDecNV erwartet Karten mit einer gewissen CUDA complexity, hatte DG mal bei sich im Forum erklärt (oder mir per PM? nicht mehr sicher), wenn die GeForce GTX 980M als CUDA kompatibel von Hybrid erkannt wird sollte alles okay sein.

  • Zum Decodieren mit DGDecNV ist "CUDA-fähig" nur eine Eingrenzung der Generation, aber die CUDA-Parallel-Prozessoren werden überhaupt nicht zum Berechnen der Decodierung verwendet, nur der hinreichend aktuelle Decoderchip.

    Zum Encodieren kannst du zwar einen CUDA-Encoder verwenden, der wird aber nur AVC-Video mit recht geringer Komplexität und dadurch eingeschränkter Qualität erzeugen. Da kann x264 deutlich bessere Ergebnisse berechnen und dabei auch noch ähnlich schnell sein, wenn deine CPU viele Kerne und schnelle Instruktionen hat. Insofern nützt ein CUDA-Encoder eigentlich nicht viel.

    Zum Filtern des Videos kann man die CUDA-Parallelprozessoren über die OpenCL-Schnittstelle für wenige unterstützte Plugins nutzen, die wird man aber nicht oft wirklich brauchen, und es ist auch nicht ganz einfach, solche experimentellen Plugins zum Laufen zu kriegen.

    Kurz: Wer mag, kann basteln, wird dadurch aber netto keinen wesentlichen Vorteil haben.

  • Zitat

    Kurz: Wer mag, kann basteln, wird dadurch aber netto keinen wesentlichen Vorteil haben.


    Zumindest beim Encodieren würde ich da zustimmen. (Als Inputfilter ist DGDecNV jedoch schon sehr praktisch, da es mit Transportstreams und VC-1 immer noch verlässlicher ist als LSMASH&FFVideoSource, wobei sich bei einiges gebessert haben in den letzten Jahren)

  • Vllt. simple Frage bzgl. h264 Einstellungen:

    Ich möchte die max. Bitrate etwas einschränken, eingestellt in Hybrid ist 665 kbit/s – laut MediaInfo habe ich eine max. Bitrate von 1.772 was dann im Durchschnitt bei 1.273 landet.

    Wie schränke ich das jetzt so ein, dass ich im Durchschnitt näher bei meiner Vorgabe liege?

    Dankeschön.

  • Zitat

    Wie schränke ich das jetzt so ein, dass ich im Durchschnitt näher bei meiner Vorgabe liege?


    über VBV Einstellungen (+ alle anderen Settings im "Rate Control"-tab)


    Zitat

    eingestellt in Hybrid ist 665 kbit/s – laut MediaInfo habe ich eine max. Bitrate von 1.772 was dann im Durchschnitt bei 1.273 landet.


    Du verwendest 1pass abr, oder? (kann mir eigentlich nicht vorstellen, dass 2pass encoding so stark daneben liegt)

    Nebenbei sei auch erwähnt, dass die Datenraten die MediaInfo angibt bei Video gerne mal alles andere als genau und richtig sind, da MediaInfo nur die ersten paar Frames anguckt und da 'hochrechnet'. :)

  • über VBV Einstellungen (+ alle anderen Settings im "Rate Control"-tab)

    Du meinst das Video Buffer Verifier? Mir ist jetzt vom Verständnis her nicht ganz klar, was der Buffer mit der Bitrate zu tun hat?


    Zitat

    Du verwendest 1pass abr, oder? (kann mir eigentlich nicht vorstellen, dass 2pass encoding so stark daneben liegt)

    Nebenbei sei auch erwähnt, dass die Datenraten die MediaInfo angibt bei Video gerne mal alles andere als genau und richtig sind

    Glaube eher letzteres ist der Fall – verwende specific... 2-pass. Aber trotzdem kommt mir die Datei für die Bitrate etwas zu groß vor (rein video 250 MB für 25 Minuten, sogar ziemlich genau 1 MB/min), deswegen wollte ich da noch ein bisschen schrauben.

  • Zitat

    Mir ist jetzt vom Verständnis her nicht ganz klar, was der Buffer mit der Bitrate zu tun hat?


    Video Buffer Verifier settings sind dafür da die Datenrate zu beschränken, so dass über einen bestimmten Zeitraum nur eine bestimmte Menge an Datenrate transferiert werden darf.

    Zitat

    Glaube eher letzteres ist der Fall – verwende specific... 2-pass.


    Ohne einen DebugOutput bei dem das Problem auftritt kann ich leider nicht sagen was da schief läuft. Details dessen was Du machst säst Du leider recht spärlich über Deine posts.
    Bin ja schon froh, dass ich richtig geraten habe, dass Du x264 verwendest. (ist der einzige H.264 Encoder den Hybrid unterstützt der 2pass anbietet)

    Hier mal ein paar Fragen (damit Du keinen Debug Output posten musst):
    0. Welche Hybrid Version verwendest Du?
    1. Wie sehen die beim Encoding verwendeten x264 Aufrufe aus? (kann man z.B. im normalen Log sehen)
    2. Hast Du bei x264 als target mode 'Target size (MiB)' oder 'Bitrate (kbit/s) ausgewählt? (spontan hätte ich vermutet das Du bei 'Bitrate (kbit/s)' 665 angegeben hast)
    3. Was für Charakteristiken hat der Input videostream ?

  • Das Thema VBV wird ja "alle Jahre wieder" neu mehr oder weniger ausführlich erklärt. ;) – Zuletzt hab ich das mit einer Regentonne versucht, bei der der Hahn eingerostet ist, den man also nicht ganz schließen kann, nur die Auslaufmenge in einem bestimmten Bereich variieren. Bleibt es zu lange trocken, läuft die Tonne leer. Regnet es zu lange zu viel, läuft die Tonne über. Hat es aber länger nur genieselt, verkraftet die Tonne auch mal einen kräftigeren Schauer zwischendurch. Ähnlich ist das mit dem Decodierpuffer: Ein Encoder, der die Kompatibilität zu bestimmten Wiedergabegeräten brachten muss, muss auch die Kapazität des Puffers und die Grenzen kennen, mit welchen Raten der Puffer maximal gefüllt werden darf (z.B. weil der Player das Medium, auf dem der Film liegt, nicht schneller auslesen kann). Während der Encodierung muss der Encoder den geschätzten Füllstand des angenommenen Puffers überwachen und so die Bitrate umso stärker begrenzen, je voller der Puffer ohnehin schon ist.

  • Mein alter Rechner hatte eine amd grafikkarte und mein neuer rechner eine nvidia 980M GTX. Dabei ist mir aufgefallen, dass videos mit der neuen nvidia grafikkarte meiner ansicht nach nicht so gut dargestellt werden wie bei der amd. Besser gesagt sind dort die schwarzen stellen bei videos leider grau dargestellt. Beim vlc player gibt es ja die einstellungsmöglichkeit "Hardwarekonvertierung von YUV nach RGB benutzen". Wenn ich diesen Haken nicht gesetzt habe, sieht es wieder wie gewohnt aus. Das gilt aber leider nicht für alle programme. meine alte amd graka hat das irgendwie generell gemacht. Kann man das bei nvidia irgendwo einstellen?

Jetzt mitmachen!

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