Ich werde aktualisieren und sehen. Ich habe cq in einer früheren Version meines Profils ausprobiert. Die ffmpeg-Dokumentation ist nicht gerade klar, aber die NVidia-Dokumentation für ihre Erweiterung erwähnte crf vs cq für konstante Qualität. Trotzdem kann ich die meisten Encodings für eine einstündige Sendung in etwa 10 Minuten erledigen ![]()
Du kannst ffmpeg nach der Liste der verfügbaren Optionen für jeden Encoder befragen, hier ist das, was für h264_nvenc angezeigt wird
Wie du sehen kannst, gibt es 2 Optionen – cq (das ist das, was wir wollen, konstante Qualität) und –qp (das ist NICHT das, was wir wollen, da das ein konstanter Quantizer ist, der ziemlich nutzlos ist).
Möglicherweise musst du auch -rc vbr setzen, aber du kannst es mit und ohne ausprobieren und mir sagen, wie es läuft.
-rc E..V… Überschreibt die voreingestellte Rate-Control (von -1 bis INT_MAX) (Standard -1)
constqp E..V… Modus mit konstanter QP
vbr E..V… Modus mit variabler Bitrate
cbr E..V… Modus mit konstanter Bitrate
vbr_minqp E..V… Variabler Bitraten-Modus mit MinQP
ll_2pass_quality E..V… Mehrfach-Durchlauf optimiert für Bildqualität (nur für Low-Latency-Presets)
ll_2pass_size E..V… Mehrfach-Durchlauf optimiert für konstante Bildgröße (nur für Low-Latency-Presets)
vbr_2pass E..V… Mehrfach-Durchlauf mit variabler Bitrate
-rc-lookahead E..V… Anzahl der Frames, die für die Rate-Control im Voraus betrachtet werden (von -1 bis INT_MAX) (Standard -1)
-surfaces E..V… Anzahl gleichzeitiger Surfaces (von 0 bis 64) (Standard 32)
-cbr E..V… CBR-Codierungsmodus verwenden (Standard false)
-2pass E..V… 2-Pass-Codierungsmodus verwenden (Standard auto)
-gpu E..V… Wählt die zu verwendende NVENC-fähige GPU. Erste GPU ist 0, zweite ist 1 usw. (von -2 bis INT_MAX) (Standard any)
any E..V… Erstes verfügbares Gerät wählen
list E..V… Verfügbare Geräte auflisten
-delay E..V… Frame-Ausgabe um die angegebene Anzahl von Frames verzögern (von 0 bis INT_MAX) (Standard INT_MAX)
-no-scenecut E..V… Bei aktiviertem Lookahead auf 1 setzen, um adaptive I-Frame-Einfügung bei Szenenschnitten zu deaktivieren (Standard false)
-forced-idr E..V… Bei erzwungenen Keyframes diese als IDR-Frames erzwingen. (Standard false)
-b_adapt E..V… Bei aktiviertem Lookahead auf 0 setzen, um adaptive B-Frame-Entscheidung zu deaktivieren (Standard true)
-spatial-aq E..V… Auf 1 setzen, um räumliches AQ zu aktivieren (Standard false)
-temporal-aq E..V… Auf 1 setzen, um zeitliches AQ zu aktivieren (Standard false)
-zerolatency E..V… Auf 1 setzen, um Latenzfreien Betrieb anzuzeigen (keine Umordnungsverzögerung) (Standard false)
-nonref_p E..V… Auf 1 setzen, um automatisches Einfügen von Nicht-Referenz-P-Frames zu aktivieren (Standard false)
-strict_gop E..V… Auf 1 setzen, um GOP-zu-GOP-Rate-Schwankungen zu minimieren (Standard false)
-aq-strength E..V… Bei aktiviertem räumlichem AQ wird dieses Feld verwendet, um die AQ-Stärke festzulegen. AQ-Stärke-Skala von 1 (niedrig) – 15 (aggressiv) (von 1 bis 15) (Standard 8)
-cq E..V… Ziel-Qualitätslevel festlegen (0 bis 51, 0 bedeutet automatisch) für Konstante-Qualität-Modus in VBR-Rate-Control (von 0 bis 51) (Standard 0)
-aud E..V… Access-Unit-Delimiter verwenden (Standard false)
-bluray-compat E..V… Blu-ray-Kompatibilitäts-Workarounds (Standard false)
-init_qpP E..V… Initialer QP-Wert für P-Frame (von -1 bis 51) (Standard -1)
-init_qpB E..V… Initialer QP-Wert für B-Frame (von -1 bis 51) (Standard -1)
-init_qpI E..V… Initialer QP-Wert für I-Frame (von -1 bis 51) (Standard -1)
-qp E..V… Methode zur Rate-Control mit konstantem Quantization-Parameter (von -1 bis 51) (Standard -1)
Danke für die Hinweise – ich habe die Befehle von der NVidia-Entwicklerseite übernommen; dort schien nur ein Teil des FFMPEG-Universums abgedeckt zu sein. Außerdem habe ich in einigen Logs gesehen, dass „hevc_nvenc“ der neue Name für den Encoder ist und „nvenc_hevc“ als veraltet gilt.
Ich werde daher diese Änderung am Kodierungsprofil vornehmen:
[----------------------]
[MKV HEVC Constant Quality]
Description=WARNUNG: Handbrake-Constant-Quality-Kodierung (25) mit Nvidia HEVC.
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 9 -c:v hevc_nvenc -cq 25 -rc vbr -map 0:v
ffmpeg-audio=-acodec ac3 -ab 192k -map 0:a
ffmpeg-audioac3=-acodec ac3 -ab 384k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-general=--decomb --denoise="weak" --loose-anamorphic --verbose=2 -T -O
handbrake-video=--start-at duration:3 -e x265 -q 18
handbrake-audio=-E ffac3 -R auto -B 192 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 384 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
Variere die -cq-Werte und prüfe, ob sich die Qualität ändert.
![]()
Ich habe. Ich habe es von 25 auf 23 reduziert. Etwas besser. Ich denke, VBR macht genauso viel aus wie der Rest.
via Newton Mail
Versuchen Sie extreme Werte wie 5 oder 40
Ich habe 18 und weniger ausprobiert – da gibt es nur eine sehr geringe Einsparung bei der Komprimierung (300 Megabyte bei einer 1,3-Gigabyte-Datei). 23 scheint der richtige Sweet Spot für HEVC CQ zu sein.
Wenn ich die Konzepte hier richtig verstehe, gilt für das zuletzt aufgeführte Profil:
Wenn ich -cq zu einer größeren ganzen Zahl mache, ist die Kompression weniger effizient (d. h. die Datei wird größer).
Macht das das Encoden schneller oder verschlechtert es an sich die Videokompression?
![]()
Ja. Das stimmt. Es ist auch eine nicht-lineare Skala. Je größer die Zahl, desto größer die Datei. Wenn du etwas über HandBrake oder H264 weißt, entspricht CQ20 in HEVC etwa CQ23. Danke! Will.
Die Datei ist weniger komplex, daher ist das Kodieren/Dekodieren etwas einfacher. Allerdings werden Sie einen Unterschied in der Videoqualität feststellen. Wenn Sie viele Sportaufnahmen oder andere Inhalte mit schnellen Bewegungen machen, sollten Sie eher niedrigere Werte wählen. Viel Glück!
Also erst einmal, großartiges H265-Profil, es läuft sehr gut mit einer Quadro-Karte als HW-Encoder-Quelle!
Zweitens habe ich mit diesem Profil herumexperimentiert und versucht, eine H264-Version des dedizierten Encoders mit ffmpeg zu erstellen, aber ich habe einige Syntaxprobleme, um es tatsächlich verarbeiten zu lassen. Gibt es eine Chance, dass du/jemand anderes damit experimentiert hat?
Der Grund dafür ist, ein schnelleres Profil mit konstanter Qualität für Sendungen zu erstellen, die keine Langzeitlagerung erfordern – wie Sport, Jeopardy usw., die einmal, vielleicht zweimal angesehen und dann größtenteils gelöscht werden – um Zeit bei der nächtlichen Transkodierung zu sparen im Vergleich zu Dateien mit längerer Speicherdauer wie Fernsehsendungen, Filmen usw.
Danke – ich verstehe vollkommen, wie frustrierend es sein kann, die ffmpeg-Befehle zu entschlüsseln – die Dokumentation ist… knapp.
Du möchtest HEVC_nvenc durch h264_nvenc ersetzen. Denk daran, dass die Constant-Quality-Einstellung sich zwischen 265 und 264 unterscheidet. Der „Standard“ für 265 ist 23, während der für 264 bei 20 liegt.
Hoffentlich hilft das! Will.
Danke, Kumpel, ich hab’s probiert, aber egal, wie ich die Syntax verdreht habe, es fiel immer wieder auf die Handbrake-CLI-Option zurück. Ich habe jede Menge der – wie du sagst – wirklich knappen Dokumentation gelesen und dabei eine ganze Reihe Infos zu den Optionen für den h264_nvenc-Encoder gefunden, die sich offenbar von denen des HEVC-Encoders in den aktuellen ffmpeg-Versionen unterscheiden.
Ich kann morgen, wenn ich Zeit habe, ein paar Testprofile posten, falls du Lust hast, beim Troubleshooting zu helfen, damit das Profil funktioniert. Im Moment greife ich auf Abwandlungen der eingebauten h264-Profile zurück, die auf dem libx264-Encoder basieren und die Hardware-Beschleunigung nutzen können, aber ich möchte gern ein reines Hardware-Encoder-Profil bauen – so wie das, das du für HEVC erstellt hast.
Gerne, ich helfe dir weiter. Als Erstes solltest du die Befehlszeile öffnen und „FFMpeg.exe -codecs“ ausführen. Das zeigt dir alle in FFMpeg verfügbaren Codecs an.
Was das Handbrake-Fallback betrifft: Ich weiß, dass neuere Handbrake-Versionen nvenc unterstützen, bin mir aber nicht sicher, ob einfach die Datei handbrakecli.exe ausgetauscht werden kann. Ich werde noch ein wenig recherchieren.
Danke! Will.
Danke, Kumpel, das weiß ich zu schätzen!
Was den Handbrake-Fallback betrifft: Die neueste GUI-Version unterstützt NVENC – und das mit echt guter Performance! Der „Fallback“ bedeutet jedoch reine CPU-basierte x264-Kodierung ohne jegliche Hardware-Beschleunigung.
Morgen hole ich weitere Details ab und teste auch einige Kommandozeilen-Optionen.
Danke!
Update: (Darf als neuer User leider nicht öfter als dreimal im selben Thread antworten
)
Ich habe die Syntax zum Laufen gebracht – war wohl zu müde, um sie beim ersten Mal hinzukriegen. Es funktioniert einfach, indem man – wie von dir empfohlen – HEVC durch h264 ersetzt und den Rest unverändert lässt:
[MKV H264 NVENC Constant Quality]
Description=nVidia H264 NVENC Constant quality, variable bitrate
order=ffmpeg, handbrake
AllowH264CopyRemuxing=true
FixedResolution=true
AutoDeinterlace=true
ffmpeg-UsingHardwareEncoding=True
ffmpeg-general=-threads 0 -hwaccel auto
ffmpeg-video=-ss 9 -c:v h264_nvenc -cq 27 -rc vbr -map 0:v
ffmpeg-audio=-acodec libfdk_aac -ab 128k -map 0:a
ffmpeg-audioac3=-acodec libfdk_aac -ab 320k -map 0:a
ffmpeg-ext=.mkv
ffmpeg-audiodelay=skip
handbrake-UsingHardwareEncoding=true
handbrake-general=–decomb --denoise=“weak” --loose-anamorphic --verbose=2 -T -O
handbrake-video=–start-at duration:3 -e x265 -q 18
handbrake-audio=-E ffac3 -R auto -B 192 -D 0 -a 1,2,3,4,5
handbrake-audioac3=-E ffac3 -R auto -B 384 -D 0 -a 1,2,3,4,5
handbrake-ext=.mkv
handbrake-audiodelay=skip
PreConversionCommercialRemover=true
Läuft jetzt mit dem NVENC-Haupt-Encoder.
Eine Frage noch: Weißt du die Syntax für konstante Bitraten statt VBR und qualitätsbasierten Modus? Ich habe ein paar Szenarien, in denen ich die Bitrate manuell festlegen möchte.
Sie können Version 1.2 von HandBrakeCLI hier herunterladen: HandBrake
Es integriert nvenc_h264 und nvenc_h265. Vielleicht versuchen Sie, HandBrake dasselbe tun zu lassen…
Ich habe also die HandBrakeCli mit der aktualisierten Version getestet und sie funktioniert mit NVENC. Hast du irgendwelche Kenntnisse über Optionen oder ob es möglich ist, auf eine exportierte .json-Datei für die Konfiguration über die MCEBuddy-Profile zu verweisen?
Du solltest ihm ein exportiertes JSON-Profil-Dokument aus Handbrake übergeben können. Ich würde die gewünschten Einstellungen anpassen und dann dieses Preset ausprobieren.
Es sieht so aus, als gäbe es eine Option namens --preset-import-gui, die genau das bewirken sollte ![]()
Hey Mann, die Dokumentation für HandBrakeCli ist so viel besser und einfacher zu handhaben als die für ffmpeg
Ich habe mit den Optionen herumgespielt und mit H265 ziemlich gute Ergebnisse erzielt.
Da ich mit vielen interlaced Videoquellen von unseren Kabelkanälen arbeiten muss, musste ich decomb’en einstellen und das richtige Gleichgewicht für die NVENC-Engines auf meinen verschiedenen Karten und CPUs finden.
Dieses Profil gibt mir etwa 90% Engine-Performance auf einem I7-8700K mit einer nVidia 1060 GPU, wobei die CPU decoming übernimmt und die NVENC-Engine die gesamte Videokodierung zwischen 240 und 300 fps übernimmt bei voller CPU-Last für Filter, ohne Filter kann die Framerate auf über 400 fps erhöht werden
Gleiches Profil auf einem I5-8400 nVidia Quadro P256 kodiert etwa 190-250, ohne Filter geht es in den 300er Bereich
[Handbrake Cli 1.2.0 H265 - Quality 28] Description=nVidia NVENC HW (H265) Quality Setting 28 + Decomb order=handbrake FixedResolution=true PreConversionCommercialRemover=false UniversalCommercialRemover=false handbrake-general=--loose-anamorphic --comb-detect=fast --decomb=mode=7 --verbose=2 --format av_mkv --subtitle 1,2,3 handbrake-video=--start-at duration:0 --encoder nvenc_h265 --encoder-preset slow --encoder-level 4.1 --quality 28 --vfr handbrake-audio=--aencoder copy:aac --audio 1,2,3 handbrake-audioac3=--aencoder copy:ac3 --audio 1,2,3 handbrake-ext=.mkv handbrake-audiodelay=skip
Wenn du den NVENC-Preset auf medium stellst, gewinnst du wenig Geschwindigkeit mit aktivierten Filtern, da die CPU-Last der Flaschenhals ist. Theoretisch könntest du eine separate Kodierung ohne decomb’en laufen lassen, um die restliche Encoder-Kapazität zu nutzen. Ohne Filter schafft die 1060 Frameraten von über 550, die P400 über 400
Ich erwäge, den I5-8400 (der Plex-Server, der schließlich alle Arbeit übernehmen soll) mit einer P2000-Karte auszustatten, für die unbegrenzten Encoder-Streams für Live-Transkodierung für Live-TV während gleichzeitig Backend-MCEBuddy-Kodierung läuft.
Hi Anders,
ich bekomme vergleichbare Leistung aus meinem Rechner, obwohl dein Prozessor etwas neuer ist. Ich werde mit dem Handbrake-Profil herumspielen, das du geteilt hast – danke!
Ich betreibe MCEBuddy und den Plex-Server auf derselben Maschine – einem i7 7700 mit 16 GB RAM, einer GTX 1060 und einer SSD. Die einzige externe Ressource ist das NAS, auf dem ich alle meine Plex-Aufzeichnungen und Medien speichere. Dieses Setup funktioniert ziemlich gut für mich – in HD dauert es bei einer einstündigen Sendung etwa 10 Minuten, um mit dem von mir geteilten Profil zu encodieren. Die Speicherplatzersparnis durch H265 ist großartig.
Früher habe ich einen Core i5 betrieben – stellte aber fest, dass Hyperthreading sich ziemlich stark auf die Gesamtleistung auswirkte. Das war allerdings bevor PMS Hardware-Beschleunigung eingebaut hatte – es könnte jetzt möglich sein, einen weniger leistungsfähigen CPU zu verwenden, mit Ausnahme des Deinterlacing / Decombing.
Danke fürs Teilen! Will.
Mail](Outlook) für Windows 10