2017-07-14 6 views
0

Kürzlich kaufte ich eine brandneue GPU - AORUS GeForce GTX 1080 Ti. Ich fand heraus, dass es HEVC 10-Bit-Codierung unterstützt, also wollte ich es versuchen. Leider habe ich nach der Kodierung einige Artefakte bemerkt, die in dunklen Szenen auftreten und einen Frame des Videos ausmachen. Sie können sie auf diesen Screenshots sehen:Gray squared Artefakte nach HEVC 10-Bit-Codierung mit FFmpeg NVENC-Encoder

Screenshot of a still from an animated scene. There is an artifact near the bottom and slightly to the left. It is square shaped with white squiggles.

Screenshot of a still from another animated scene. The artifact looks the same as in the previous image but is in a different location, higher up and closer to the center.

Ich frage mich, wenn jemand mir helfen herauszufinden, könnte, was die Ursache dieser Artefakte sein könnte und wie kann ich sie loswerden. Hier

ist der MI des Quellvideos:

ID          : 1 
Format         : AVC 
Format/Info        : Advanced Video Codec 
Format profile       : [email protected] 
Format settings, CABAC     : Yes 
Format settings, ReFrames    : 4 frames 
Codec ID         : V_MPEG4/ISO/AVC 
Duration         : 2 h 2 min 
Bit rate mode       : Variable 
Bit rate         : 29.5 Mb/s 
Maximum bit rate       : 37.0 Mb/s 
Width         : 1 920 pixels 
Height         : 1 080 pixels 
Display aspect ratio      : 16:9 
Frame rate mode       : Constant 
Frame rate        : 23.976 (24000/1001) FPS 
Color space        : YUV 
Chroma subsampling      : 4:2:0 
Bit depth        : 8 bits 
Scan type        : Progressive 
Bits/(Pixel*Frame)      : 0.593 
Stream size        : 25.2 GiB (66%) 
Language         : English 
Default         : Yes 
Forced         : No 

Und hier ist der MI des codierten Video:

ID          : 1 
Format         : HEVC 
Format/Info        : High Efficiency Video Coding 
Format profile       : Main [email protected]@Main 
Codec ID         : V_MPEGH/ISO/HEVC 
Duration         : 2 h 2 min 
Bit rate         : 3 689 kb/s 
Width         : 1 920 pixels 
Height         : 800 pixels 
Display aspect ratio      : 2.40:1 
Frame rate mode       : Constant 
Frame rate        : 23.976 (24000/1001) FPS 
Standard         : Component 
Color space        : YUV 
Chroma subsampling      : 4:2:0 
Bit depth        : 10 bits 
Bits/(Pixel*Frame)      : 0.100 
Stream size        : 3.15 GiB (95%) 
Default         : Yes 
Forced         : No 
Color range        : Limited 

Der Befehl Ich verwende für die Codierung:

ffmpeg -hide_banner -i "<input_file>" -map 0:v:0 -map_chapters -1 -map_metadata -1 -vf "crop=1920:800:0:140" -vcodec hevc_nvenc -pix_fmt p010le -preset hq -profile:v main10 -rc constqp -global_quality 21 -rc-lookahead 32 -g 240 -f matroska Video_CQP21_LAF32_GOP240.mkv 
+0

Bitte posten Sie Lösungen als Antworten nicht als Updates für Ihre Frage. Ich habe einen Rollback durchgeführt, den Sie in den [Revisionen] (https://stackoverflow.com/posts/45103251/revisions) sehen können. Vielen Dank. – Bugs

Antwort

1

Problem gelöst. Es stellt sich heraus, dass es ein Problem mit der H.265-Codierung gibt, die von NVENC auf GPUs basierend auf dem GP102-Core durchgeführt wird. Wenn Sie es über einen bestimmten Punkt hinaus übertakten, erscheinen diese Artefakte nach dem Kodieren. Das Verringern des Kerntakts der GPU sollte das Problem lösen.

0

Oh, es ist wirklich interessant. Sie verwenden einige ungewöhnliche Optionen. Bitte versuchen Sie das:

ffmpeg -hide_banner -i "<input_file>" -map 0:v:0 -map_chapters -1 -map_metadata -1 -vf "crop=1920:800:0:140" -vcodec hevc_nvenc -pix_fmt p010le -preset slow -profile:v main10 -qmin 22 -qmax 22 -rc-lookahead 32 -g 240 -f matroska Video_CQP21_LAF32_GOP240.mkv 

Diese Einstellung ist die beste, die ich für Szenen-Ripping testen konnte.

+0

Okay, ich werde es versuchen. Aber was ist so ungewöhnlich an -rc constqp -global_quality 21? – Cryman

+0

-global_quality ist für libav * -Bibliotheken gedacht, qmin-qmax sind spezifischer, und Quantisierung ist die einzige Rate-Control-Methode, die ich in hevc_nvnec als stabil erachte. -rc vbr_2pass ist besser als constqp. Es spart mehr Platz durch vbr und verwendet Lookahead. Ich bin mir nicht sicher, ob rc-Lookahead überhaupt ohne 2pass funktioniert. – hedgar2017

+0

Ich habe versucht, mit diesem Befehl zu kodieren. Zum einen sind die Artefakte noch vorhanden. In Szenen mit dunklen Farben wie zuvor. Zweitens habe ich eine Warnung in der FFmpeg-Ausgabe erhalten: '[hevc_nvenc @ 0000000002f28c00] Der angegebene rc-Modus ist veraltet. [hevc_nvenc @ 0000000002f28c00] vbr_2pass -> vbr_hq' Drittens war die Dateigröße fast die gleiche wie die Verwendung von -rc constqp -global_quality 21. – Cryman