Артефакты серого квадрата после 10-битного кодирования HEVC с использованием кодировщика FFmpeg NVENC

Недавно я приобрел совершенно новый графический процессор — AORUS GeForce GTX 1080 Ti. Я узнал, что он поддерживает 10-битное кодирование HEVC, поэтому я хотел попробовать. К сожалению, после кодирования я заметил некоторые артефакты, возникающие в темных сценах и на последнем кадре видео. Вы можете увидеть их на этих скриншотах:

Скриншот кадра из анимированной сцены. Внизу и немного левее есть артефакт. Он имеет форму квадрата с белыми волнистыми линиями.

Скриншот кадра из другой анимированной сцены. Артефакт выглядит так же, как и на предыдущем изображении, но находится в другом месте, выше и ближе к центру.

Мне было интересно, может ли кто-нибудь помочь мне понять, что может быть причиной этих артефактов и как я могу избавиться от них.

Вот MI исходного видео:

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

А вот MI закодированного видео:

ID                                       : 1
Format                                   : HEVC
Format/Info                              : High Efficiency Video Coding
Format profile                           : Main 10@L4@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

Команда, которую я использую для кодирования:

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

person Cryman    schedule 14.07.2017    source источник
comment
Пожалуйста, публикуйте решения как ответы, а не как обновления вашего вопроса. Я выполнил откат, который вы можете увидеть в ревизиях. Спасибо.   -  person Bugs    schedule 18.07.2017


Ответы (2)


Задача решена. Оказывается, есть проблема с кодированием H.265, выполняемым NVENC на графических процессорах на базе ядра GP102. Если вы разогнали его до определенной точки, эти артефакты появляются после кодирования. Уменьшение частоты ядра графического процессора должно решить проблему.

person Cryman    schedule 20.07.2017

О, это действительно интересно. Вы используете какие-то необычные варианты. Пожалуйста, попробуйте это:

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

Это лучший параметр, который я мог протестировать для копирования сцен.

person hedgar2017    schedule 16.07.2017
comment
Хорошо, я попробую это. Но что такого необычного в -rc constqp -global_quality 21? - person Cryman; 17.07.2017
comment
-global_quality предназначен для библиотек libav*, qmin-qmax более конкретен, а квантование — единственный метод управления скоростью, который я нашел стабильным в hevc_nvnec. -rc vbr_2pass лучше, чем constqp. Это экономит больше места из-за vbr и использует просмотр вперед. Я не уверен, что rc-lookahead вообще работает без 2pass. - person hedgar2017; 17.07.2017
comment
Я пробовал кодировать с помощью этой команды. Во-первых, артефакты все же присутствуют. В сценах с темными цветами, как и раньше. Во-вторых, я получил предупреждение в выводе FFmpeg: [hevc_nvenc @ 0000000002f28c00] Specified rc mode is deprecated. [hevc_nvenc @ 0000000002f28c00] vbr_2pass -> vbr_hq В-третьих, размер файла был почти таким же, как при использовании -rc constqp -global_quality 21. - person Cryman; 18.07.2017
comment
Качество лучше? Хотя бы субъективно? Извините, тогда я полагаю, что это аппаратная проблема. У меня MSI GTX 1080 Gaming X и все идеально. - person hedgar2017; 19.07.2017
comment
По качеству получилось примерно так же. Да, это оказалось распространенной проблемой для GPU на ядре GP102. - person Cryman; 20.07.2017