Большинство потребительских кодеров H.264 подбирают информацию о цвете до 4: 2: 0. (RGB в YUV) Это означает, что до того, как процесс кодирования даже запустит ваше растровое изображение RGB, теряет 75% информации о цвете. H.264 был больше разработан для естественного контента, а не для захвата экрана. Но есть кодеки, которые специально разработаны для обеспечения хорошего сжатия содержимого экрана. Например: https://docs.microsoft.com/en-us/windows/desktop/medfound/usingthewindowsmediavideo9screencodec Даже если вы увеличиваете битрейт вашего кодера H.264 - вы работаете только с 25% исходной информации о цвете для начала.
Итак, ваши изменения формата выглядят так:
Вы начинаете с 1920x1080 красных, зеленых и синих пикселей. Вы превращаетесь в YUV. Теперь у вас есть 1920x1080 люма, Cb и Cr. где Cb и Cr являются компонентами разности цветов. Это просто другой способ представления цветов. Теперь вы масштабируете плоскости Cb и Cr до 1/4 их первоначального размера. Таким образом, ваши результирующие каналы Cb и Cr составляют около 960x540, а ваша плоскость яркости по-прежнему составляет 1920x1080. Масштабируя информацию о цвете с 1920x1080 до 960x540, вы уменьшаете размер до 25% от исходного размера. Затем в кодер передаются полноразмерные плоскости яркости и 25% цветоразностных каналов. Этот уровень уменьшения информации о цвете называется подвыборкой до 4: 2: 0. Вход субсэмплирования требуется кодером и выполняется автоматически мультимедийной структурой. Вы ничего не можете сделать, чтобы избежать этого - выбрать другой формат.
R = red
G = green
B = blue
Y = luminescence
U = blue difference (Cb)
V = red difference (Cr)
YUV используется для выделения сигнала яркости (Y), который может быть сохранен с высоким разрешением или передан с высокой пропускной способностью, и двух компонентов цветности (U и V), которые могут быть уменьшены по ширине полосы, подвергнуты дискретизации и сжаты или иным образом обрабатывается отдельно для повышения эффективности системы. (Википедия)
Original format
RGB (4:4:4) 3 bytes per pixel
R R R R R R R R R R R R R R R R
G G G G G G G G G G G G G G G G
B B B B B B B B B B B B B B B B
Encoder input format - before H.264 compression
YUV (4:2:0) 1.5 bytes per pixel (6 bytes per 4 pixel)
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
UV UV UV UV
Select ServerProperty('ComputerNamePhysicalNetBIOS')