2015-03-09 2 views
0

Я хочу изменить некоторые пиксели некоторых кадров, я это делаю шаги:Почему цвет пикселей различен до и после кодирования? , Как установить то же самое?

1 - Извлечение кадров из FLV видео в формат PNG

2 - Изменение кадра пиксели цвета, например я установить цвет пиксела (0 , 0) в ARGB (0,0,0,0)

3 - Кодировать кадры в видео по ниже код:

-i Frame%04d.png -filter_complex "[0:0] scale= [wm]; [wm][1:0] overlay=1:1 [out]" -map "[out]" -map 0:a -c:v libx264 -vprofile low outfile.flv 

Но когда я проверяю "outfile.flv" кадры, пиксель 0, 0 - 255,7,2,3 вместо 0,0,0,0, почему? Скажите, пожалуйста, как я могу получить одинаковый цвет пикселей после кодирования?

ответ

3

Video compression - это процесс с потерями. Чтобы уменьшить размер файлов, кодер найдет области изображения, где, по его мнению, сложность может быть устранена без различий, которые воспринимаются человеческим глазом. Вы можете использовать сжатие без потерь (путем установки квантификатора на 0), но вам нужно будет подтвердить, что кодер не выполняет преобразование цветового пространства, поскольку в большинстве случаев они совершенно не обратимы. И если вы используете сжатие без потерь и преобразование цвета, ваш окончательный размер файла будет очень большим.

+0

Если вы можете остановиться на земле rgb, вы можете получить «лучшую» без потерь, я полагаю, что – rogerdpack

+1

@rogerdpack true, предполагая sRGB и никакой вторичной гамма-коррекции. В противном случае может произойти конверсия. – szatmary