So konvertieren Sie 10-Bit-H.265-Videos ohne Qualitätsverlust in H.264

Ich habe eine MPEG-H Part2/HVEC (H.265) .mkv-Datei (Planar 4:2:0 YUV 10-Bit LE). Da mein LG PF 1500 Beamer kein H.265 sondern H.264 liest möchte ich es umwandeln (HVEC -> H.264). Ich denke, Handbremse ist eine praktische Software, um dies zu tun.

Welche Einstellungen sollte ich verwenden, um eine H.264-Datei mit der gleichen Qualität wie das Original (HVEC) zu erhalten?

Ich denke, ich muss H.264 10-Bit als Videoencoder wählen. Ich bin mir jedoch nicht sicher über die Einstellung Qualität (RF). Woher weiß ich, was die HVEC-Qualitätseinstellung ist, und wie kann ich eine gleichwertige für H.264 auswählen?

Dies sind die mit MediaInfo extrahierten Informationen:

Format : Matroska Formatversion
: Version 4 Dateigröße : 1,48 GiB Dauer : 52 min 46 s Gesamtbitrate : 4 012 kb/s Codierdatum
: UTC 2018-05-26 19:19:57 Schreibanwendung : mkvmerge v20.0.0 ( 'I Am The Sun') 64-Bit-Schreibbibliothek
: libebml v1.3.5 + libmatroska v1.4.8 Schreib-Frontend
: StaxRip v1.7.0.6

Video-ID : 1 Format
: HEVC Format/Info : High Efficiency Video Coding Formatprofil : Main 10@L4@Main Codec-ID : V_MPEGH/ISO/HEVC Dauer : 52 min 46 s Bitrate : 3 529
kb/s Breite : 1 920 Pixel Höhe : 1 080 Pixel Anzeigeseitenverhältnis : 16:9 Bildratenmodus
: Konstant Bildrate : 23,976 (24000/1001) FPS Farbraum : YUV Chroma-Unterabtastung : 4:2:0 Bittiefe
: 10 Bit Bits/(Pixel*Frame) : 0,071 Stream-Größe : 1,30 GiB (88 %) Schreibbibliothek : x265 2.7+346-69aafa6d70ad:[Windows][GCC 7.3.0][64 Bit] 10-Bit-Codierungseinstellungen : cpuid= 1111039 / frame-threads=2 / numa-pools=4 / wpp / no-pmode / no-pme / no-psnr / ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / interlace= 0 / total-frames=75917 / level-idc=0 / high-tier=1 / uhd-bd=0 / ref=3 / no-allow-non-conformance / no-repeat-headers / Annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramide / bframe-bias=0/rc-lookahead=50/lookahead-slices=6/scenecut=40/radl=0/no-intra-refresh/ctu=64/min-cu-size=8/no-rect/no- amp / max-tu-size = 32 / tu-inter-Tiefe = 1 / tu-intra-Tiefe = 1 / limit-tu = 0 / rdoq-level = 0 / dynamic-rd = 0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / no-strong-intra-smoothing / max-merge=3 / limit-refs= 3 / no-limit-modes / me=3 / subme=3 / merange=57 / temporal-mvp / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao- non-deblock / rd=3 / no-early-skip / no-rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty= 0 / psy-rd=2.00 / psy-rdoq=0.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=20.0 / qcomp=0.60 / qpstep=4 / stats- schreiben=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=0 / overscan=0 / videoformat=5 / range=0 / colorprim=2 / transfer=2 / colormatrix=2 / chromaloc=0 / display-window=0 / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8/vui-timing-info/vui-hrd-info/slices=1/no-opt-qp-pps/no-opt-ref-list-length-pps/no-multi- pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery- sei / analysis-reuse-level=5 / scale-factor=0 / Refine-Intra=0 / Refine-Inter=0 / Refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass- dct/refine-mv-type=0/copy-pic=1/max-ausize-factor=1.0/no-dynamic-refine/no-sei-Standard0/min-luma=0/max-luma=1023/log2-max-poc-lsb=8/vui-timing-info/vui-hrd-info/slices=1/no-opt-qp-pps/no- opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr- opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level = 5 / scale-factor = 0 / Refine-Intra = 0 / Refine-Inter = 0 / Refine-mv = 0 / No- limit-sao/ctu-info=0/no-lowpass-dct/refine-mv-type=0/copy-pic=1/max-ausize-factor=1.0/no-dynamic-refine/no-sei-Standard0/min-luma=0/max-luma=1023/log2-max-poc-lsb=8/vui-timing-info/vui-hrd-info/slices=1/no-opt-qp-pps/no- opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr- opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level = 5 / scale-factor = 0 / Refine-Intra = 0 / Refine-Inter = 0 / Refine-mv = 0 / No- limit-sao/ctu-info=0/no-lowpass-dct/refine-mv-type=0/copy-pic=1/max-ausize-factor=1.0/no-dynamic-refine/no-sei-Standard05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0/refine-intra=0/refine-inter=0/refine-mv=0/no-limit-sao/ctu-info=0/no-lowpass-dct/refine-mv-type=0/ copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-sei-Standard05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0/refine-intra=0/refine-inter=0/refine-mv=0/no-limit-sao/ctu-info=0/no-lowpass-dct/refine-mv-type=0/ copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-sei-Standard
: Ja Erzwungen : Nein

Ich habe versucht, eine Lösung in dem Buch zu finden: Video Coding Standards and Video Formats von Rao, aber ich konnte keinen guten Hinweis finden.

Antworten (1)

Es sieht so aus, als ob das Video in 4000 kbit/s codiert ist, anstatt in einem Rate Factor (RF).
Aber darum geht es hier nicht. Das Problem ist: 264 unterstützt zwar verlustfreie Codierung, ist aber nicht weitgehend kompatibel! (Sie würden dies tun, indem Sie das Farbformat auf hi444 setzen und -cq 0(Danke an Gyan für den Hinweis)

Wenn Sie die beste Qualität, aber auch die größte Datei möchten, möchten Sie RF = 1.
Will man sehr gute Qualität, aber trotzdem riesige Dateien, will man RF <= 16
gute Qualität bei großen Dateien 16 < RF <=24
mittelmäßige Qualität bei mittlerer Dateigröße 24 < RF <= 28
bis 51 wird schlechter und kleiner.

Sie sollten auch in Betracht ziehen, ffmpeg zum Transkodieren von Videodateien zu verwenden, die Sie nicht bearbeiten möchten, da die meisten Video-Editoren auch beim erneuten Rendern der Eingaben für den Encoder an Qualität verlieren.

ffmpeg-Zeug

Link: https://ffmpeg.zeranoe.com/builds/
Vollständige Dokumentation: https://ffmpeg.org/documentation.html
Wenn Sie gute Qualität, aber lange Codierungszeiten wünschen, verwenden Sie dies in einer CMD, die die ffmpeg.exe sehen kann :

ffmpeg -i my_input_file.mkv -map 0:v? -map 0:a? -map 0:s? -c:v libx264 -preset:v medium -profile:v high -rc-lookahead 900 -crf 16 -c:a copy -c:s copy my_output_file.mkv

Die Parameter bedeuten Folgendes:
-i <file>die zu transcodierende Datei
-map 0:v?alle Videostreams von Eingang 0 verwenden. Das Fragezeichen bedeutet "falls vorhanden".
-map 0:a?alle Audiostreams verwenden
-map 0:a?alle Untertitelstreams
-c:v libx264verwenden das Video mit dem libx264Encoder konvertieren.
-preset:v mediummittlere Geschwindigkeit verwenden. Alternativen sind ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo(je schneller, je größer die Datei, desto langsamer werden die Ergebnisse. placebodauert ein Vielfaches der Zeit von veryslow, führt aber zu einer um weniger als 0,1 % geringeren Größe.
-profile:v highVerwenden Sie eine hochwertige Codierung. ( andere Optionen sind nur für die Abwärtskompatibilität da)
-rc-lookahead 900Suchen Sie bis zu 900 Frames im Voraus, um die beste Codierung des aktuellen Frames zu finden. Mehr Ergebnisse in etwas (wie Placebo) besserer Qualität pro Größe, kleiner das Gegenteil. Es gilt das gleiche Prinzip wie in -preset.
-crf 16der Ratenfaktor . Je höher die Zahl, desto kleiner und hässlicher das Bild. Etwa alle 6 Punkte die halbe Dateigröße. Die meisten Menschen werden keinen Unterschied zu bemerken -crf 20. -crf 24
-c:a copyViele lassen Audio nicht einmal so wie es ist.
-c:s copyUntertitel so lassen wie sie sind.

Wenn Sie eine nVidia-GPU haben, möchten Sie vielleicht die integrierte Codiereinheit verwenden. Verwenden Sie stattdessen diesen Befehl:

ffmpeg -i my_input_file.mkv -map 0:v? -map 0:a? -map 0:s? -c:v h264_nvenc -preset:v medium -profile:v high -rc constqp -qp 16 -c:a copy -c:s copy my_output_file.mkv

Ähnliche Parameter. ist auf , , , presetbeschränkt , wobei über diese Antwort hinaus eine zusätzliche Konfiguration erforderlich wäre. Die Hauptänderung besteht darin, dass der Nvidia-Encoder kein Lookahead unterstützt und daher nicht die Option. Aus diesem Grund verwenden wir die Option (Konstante Quantisierung). Der Unterschied zwischen diesen beiden besteht darin, dass versucht wird, basierend auf dem aktuellen und den folgenden Bildern um den definierten Wert herumzuwackeln, während er die ganze Zeit über genau auf diesem Wert bleibt.fastmediumslowslow
crfcqcrfcq

Sie können versuchen, konstante Bitraten zu verwenden, aber davon wird abgeraten, da Ihre Videoqualität überall schwanken wird, da die meisten Frames nicht die gleiche Schwierigkeit wie ihre Vorgänger haben.

Hoffe das hilft

Grüße

264 unterstützt keine verlustfreie Codierung --> Sowohl der H.264-Standard als auch der x264-Encoder unterstützen verlustfreie Codierung als Teil des Hi444p-Profils, sind jedoch nicht weitgehend kompatibel.
Sie haben Recht, OO, indem Sie dies in der Antwort beheben
Nur falls jemand das gleiche Problem hat wie ich, dass ein smartes Beamer-Gerät kein 10-Bit lesen kann (nur 8-Bit): Füge -vf format=yuv420die Lösung von @PinggerShikkoken hinzu, um von 10-Bit H.265 auf 8-Bit H.264 umzuwandeln