Ich bin dabei, 100+ High Quality Bitrate 720p MKV s mit H.264 (x264) in H.265 (x265 / HEVC) zu transcodieren .
Ich mache das mit der HandBrake -Software unter Linux Debian 9 auf Intel Xeon E3-1225 v3 3,2 GHz 4-Kern .
Es folgen verschiedene Versionen.
Kernel:
4.8.0-1-amd64
0.10.5 (x86_64)
x265 :
2.1-2
using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
Ich habe diese Einstellungen laut mediainfo angewendet :
Encoding settings: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra-depth=3 / tu-inter-depth=3 / me=3 / subme=4 / merange=57 / rect / amp / max-merge=4 / temporal-mvp / no-early-skip / rskip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-constrained-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=240 / min-keyint=24 / scenecut=40 / rc-lookahead=40 / lookahead-slices=0 / bframes=8 / bframe-bias=0 / b-adapt=2 / ref=5 / limit-refs=1 / limit-modes / weightp / weightb / aq-mode=1 / qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / log2-max-poc-lsb=8 / no-rd-refine / signhide / deblock=0:0 / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=21.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ipratio=1.40 / pbratio=1.30
Kurz gesagt, ich habe RF21 mit konstanter Qualität und sehr langsamer Voreinstellung angewendet .
Originale haben alle eine feste Größe von 2 GiB. Die Größen meiner Codierungen sind unterschiedlich (wie lange es gedauert hat, können Sie auch aus der Dateiliste ableiten):
494M Dec 7 07:02 S05E16.mp4
551M Dec 7 00:14 S05E17.mp4
654M Dec 6 16:11 S05E18.mp4
668M Dec 6 08:10 S05E19.mp4
Auf die Originaldateien wurden diese Einstellungen angewendet:
Encoding settings: cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x133 / me=umh / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=12 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=2pass / mbtree=1 / bitrate=5670 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.40 / aq=1:1.00
Die Frage ist, ist die CPU-Zeit gut angelegt ? Ich meine, kann ich offensichtliche Optimierungen vornehmen, um die Dinge zu beschleunigen, ohne dass dies zu einer geringeren Qualität und / oder größeren Dateien führt?
EDIT1 :
Zitat aus der offiziellen Quelle :
x265 verfügt über zehn vordefinierte --preset-Optionen, die den Kompromiss zwischen Codierungsgeschwindigkeit (codierte Bilder pro Sekunde) und Komprimierungseffizienz (Qualität pro Bit im Bitstrom) optimieren. Die Standardvoreinstellung ist mittel. Es macht einen ziemlich guten Job, die bestmögliche Qualität zu finden, ohne übermäßige CPU-Zyklen damit zu verbringen, nach dem absolut effizientesten Weg zu suchen, um diese Qualität zu erreichen. Wenn Sie schnellere Voreinstellungen verwenden, nimmt der Encoder Abkürzungen, um die Leistung auf Kosten von Qualität und Komprimierungseffizienz zu verbessern. Wenn Sie langsamere Voreinstellungen verwenden, testet x265 mehr Codierungsoptionen und verwendet mehr Berechnungen, um die beste Qualität bei Ihrer ausgewählten Bitrate zu erzielen (oder im Fall von –crf-Ratensteuerung die niedrigste Bitrate bei der ausgewählten Qualität).
EDIT2 :
Hardwarekonfiguration
Typ: Dedizierter Server von mir. Wird derzeit nur zum Transkodieren von Videos verwendet.
CPU: Intel Xeon E3-1225 v3 3,2 GHz 4-Core
GPU: Keine dedizierte Karte, nur integriert
Arbeitsspeicher: 32 GB ECC 1600 MHz
Festplatten:
SSD; für System verwendet
Festplatten in RAID6; Wird zum Schreiben der Ausgabevideos verwendet
RAMDisk 20 GB; Wird zum Lesen der Quellvideos verwendet
EDIT3 :
In Bezug auf den Kommentar zum Austausch des Speichers habe ich vm.swappiness
= 1 gesetzt.
Den ganzen Tag widmete ich mich dem Testen verschiedener Szenarien. Das Folgende gilt für diese spezielle Serie in dieser speziellen Qualität, also sage ich nicht, dass es allgemein gilt . In diesem Fall gilt also:
Dateigrößen bei gleichen Einstellungen mit nur medium
und veryslow
geändertem Preset schwanken nur unwesentlich: ~ -10 MiB im Durchschnitt zugunsten von veryslow
Preset
Die visuelle Qualität ist bei genauem Hinsehen in entweder medium
oder veryslow
Preset ziemlich gleich
Eine Sache gelöst. Ich habe die Voreinstellung auf geändert medium
.
Wieder ein Rätsel gelöst.
Vorausgesetzt, ich transkodiere jetzt mit 25 fps, habe ich den RF auf 20 angehoben.
medium
voreingestellt veryslow
; Ich landete mit RAID6 als Quelle und SSD als AusgabelaufwerkDie Unannehmlichkeit des Verschiebens von Dateien auf RAMDisk wurde behoben.
Um die Frage zu beantworten, wurde die CPU-Zeit überhaupt nicht gut genutzt .
Meiner Erfahrung nach machen die slow
-er-Voreinstellungen einen Unterschied, wenn Sie sich bewegende Objekte in der Szene haben. AFAIK, einer der wichtigsten Verbesserungsbereiche in x265 ist die „Vorhersage“ und Wiederverwendung von Informationen über Objekte, die sich in der Szene bewegen.
Je mehr Rechenleistung der Encoder aufwendet, um diese sich bewegenden Objekte zu finden und sie zu codieren, desto bessere Qualität (oder geringere Bitrate) erhalten Sie.
Die Antwort lautet also: Es hängt vom Inhalt Ihrer Clips ab und was Sie mit dem Ergebnis machen wollen. Benötigen Sie eine gute Qualität jedes einzelnen Rahmens? (Überwachungskamera) Dann lohnt es sich mit slow
und zu codieren -qb
. Ist es nur eine informative Aufnahme? Dann gehen Sie mit medium
und crf 28
und -tune film
.
Gyan
veryslow
braucht viel mehr Zeit für eine geringfügige Verbesserung. Ich würde einemedium
Voreinstellung mit einem niedrigeren CRF vorschlagen.stib
stib
stib
stib
LinuxSecurityFreak
stib
dnigmig
Gyan