50 кадров в секунду - миф или реальность
Содержание материала
1. Зачем это нужно
Большая часть захваченного видео, с которым нам приходится работать, как правило, чересстрочное. Передачи с ТВ (о фильмах, которые были сняты изначально на пленку следует говорить отдельно, думаю, о них стоит говорить в отдельном материале), захват собственных видеосъемок, материалы с DVD - как правило, все это имеет чересстрочный формат кадра. Если мы захватываем и сохраняем материалы на DVD, для нас не имеет большой разницы, чересстрочное или прогрессивное видео заготавливаем "впрок". А вот если нет? Если нам обязательно нужно преобразовать чересстрочное видео в прогрессивное для дальнейшей работы с ним? Что мы теряем при таком преобразовании (деинтерлейсе)? Рассмотрим чуть подробнее:
1. Мы теряем в качестве. Любой, даже самый совершенный алгоритм деинтерлейса не сможет обеспечить идеальное преобразования 25i -> 25p (здесь и далее, 25i - чересстрочное видео, 25 кадров в секунду, 25p - прогрессивное), обязательно появятся артефакты, некоторые несоответствия, шумы, гало и пр, с которыми не всегда можно мириться. Если исходное видео достаточно зашумленное, деинтерлейс может значительно ухудшить картинку.
2. Мы теряем временнОе разрешение, плавность. Видео 25i на самом деле представляет из себя последовательность полей (поле - совокупность четных или нечетных строк кадра в чересстрочном видео, четные и нечетные поля чередуются в потоке последовательно, с промежутком в 1/25 секунды, со сдвигом по вертикали в один элемент) с разницей в 1/50 секунды. Если мы произведем конвертацию в 25p, мы получим последовательность кадров с разницей в 1/25 секунды, т.е. в два раза уменьшим разрешение по времени. И если на спокойном вялотекущем эпизоде это будет незаметно, то попробуйте сравнить, например, бег, полет шмеля, я не говорю уже о хоккейном матче. Также это будет заметно, если Вы во время съемки достаточно быстро водили объективом камеры туда-сюда - фильтр деинтерлейса обработает такую ситуацию очень плохо.
В качестве альтернативы я предлагаю конвертировать имеющееся видео 25i в прогрессивное 50p. Делается это просто: мы считаем поля в чересстрочном видео кадрами, т.е. делаем линейное преобразование потока. И тут у нас есть два варианта, как это сделать (демонстрация технических приемов будет во второй части, пока же я остановлюсь на достоинствах и недостатках обоих методов):
Обратите внимание! Захват видео будет производиться по прежнему, 25 кадров в секунду. Вся обработка идет уже после захвата!!! Не пытайтесь захватывать 50 кадров в секунду!!!
1. С сохранением разрешения поля. Т.е. преобразование опишется как 720x576x25i -> 720x288x50p (здесь и далее я буду работать с разрешением 720х576, как основным при захвате видеоизображения. Вы можете предпочитать 704х576 или 768х576 - разница будет только в числах, никак не в подходе).
2. С удвоением разрешения поля. Т.е. преобразование опишется как 720x576x25i -> 720x576x50p. Недостающие строки интерполируются из предыдущих полей.
Достоинства первого метода (их общие достоинства мы уже обсудили выше):
1. Не производится никаких действий с изображением. Т.е. поля превратились в кадры и все. Легко можно произвести обратное преобразование. Если предположить, что битрейт при финальном кодирование будет достаточно высок, то, в идеале, если в будущем нам понадобится снова чересстрочное видео, мы легко его получим.
2. Мы не увеличили количества пикселей за единицу времени. У нас как было 704*576*25, так и осталось. Значит, мы не сильно должны увеличивать битрейт финального кодирования по сравнению с 25кадровым вариантом (реально нам придется все-таки его увеличить - современные кодеки лучше работают в режиме большее разрешение + меньшая частота кадров, нежели наоборот)
Недостатки первого метода:
1. Четные поля сдвинуты на один элемент вниз (или вверх - зависит от формата Вашего видео) относительно нечетных. Этот недостаток легко решается технически.
2. При проигрывании мы имеем в два раза сплюснутую по вертикали картинку. Эта проблема также решается технически, причем разными способами - каждый выберет подходящий для себя.
3. Вытекающий из второго недостатка: при масштабировании в два раза по вертикали мы увеличим артефакты кодирования также в два раза. Можно сказать, это единственный реальный минус первого подхода по сравнению со вторым.
Достоинства второго метода:
1. Нет необходимость в масштабировании по вертикали.
2. Нет проблем с тремором ("прыганием" картинки вверх-вниз из-за сдвига полей относительно друг-друга)
Недостатки второго метода:
1. Необходимость значительно увеличить битрейт при финальном кодировании в сравнении с 25p
2. Артефакты, проявляющиеся вследствие интерполяции. Они, конечно, меньше, чем при обычном деинтерлейсе, но есть, и заметны.
3. Только достаточно мощные процессоры способны справиться с декодированием фильмов, созданных с использованием данного метода, тогда как ресайз, необходимый для первого, гораздо менее процессороемок.
Итак, какой способ использовать, выбирать Вам. Думаю, что прочитав технические подробности конвертации, Вы выберете метод даже более уверенно, чем сейчас.