2015-12-25 5 views
1

Я использую очень агрессивное сжатие видео, например -crf 51. Я использую это для «художественного» эффекта, поэтому то, что я делаю, может не иметь смысла с обычной точки зрения сжатия видео.расширенное управление сжатием ffmpeg

До сих пор я использовал только основное управление сжатием, используя только флагов -crf или -b:v. Результаты выглядят так: ffmpeg делит изображения на квадратные пятна и делает плавные аппроксимации внутри патчей. Это дает два элемента управления процессу: размер патча и агрессивность сглаживания в патчах.

Обнаружено, что ffmpeg использует оба параметра в некоторой степени, но, как представляется, абсолютный максимальный размер патча в пикселях, за которыми он не будет идти независимо от размера кадра. После этого он будет только увеличивать сжатие, уменьшая детали внутри патчей.

Это неоптимально для видео высокого разрешения, где это эквивалентно уменьшению разрешения. Проблема особенно заметна на фрактальных изображениях, которые имеют большую безликую область, а также области высокой детализации.

Как сообщить ffmpeg об увеличении максимального размера патча и сохранить более подробную информацию в патчах?

ответ

3

То, что вы называете «патчем», является макроблоком. Каждый кодек имеет максимальный размер макроблока, и он, как правило, очень мал (16x16 пикселей). Это фундаментальное свойство работы этого типа сжатия и не может быть установлено на произвольные значения. Вам нужно будет создать свой эффект по-другому.

+0

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

+0

Я думаю, что снег даст вам меньше блокирующих артефактов из-за его перекрывающихся преобразований. Вы можете написать код. Разделите изображение на цветные плоскости. Выполните DCT любого размера, который вы хотите, квантовать коэффициенты. Затем переверните. – szatmary