SIF-кодек. Новый подход к сжатию видео
Недавно ко мне в руки попал любопытный видеокодек SIF1. В его описании отмечались качественное сжатие и абсолютно новый алгоритм работы. Звучало заманчиво, поэтому, немного подумав, я решил проверить это на деле.
История SIF
Проект создания нового кодека стартовал в далеком 2000-м году. В результате нескольких лет разработки на свет появился совершенно новый класс алгоритмов сжатия видео, названный автором "SIF-преобразование". Как сообщается в файле readme, разработчиком было создано 6 движков сжатия на основе нового алгоритма, но лишь шестой по счету был признан успешным. В настоящее время текущей версией кодека является 0.40 Alpha3. Несмотря на это, в процессе тестирования не было замечено каких-либо глюков или сбоев в работе программ для сжатия видео.
Работа с кодеком
После установки кодек становится доступным во всех программах для работы с видео, т.е. интегрируется в систему так же, как, например, DivX. Благодаря этому файлы, сжатые SIF-кодеком, могут проигрываться любым установленным плейером, что, несомненно, большой плюс. Регулируемых параметров у SIF1 всего четыре:
. Quantization level, или порог квантования. Чем больше этот параметр, тем выше степень сжатия изображения, и, соответственно, наоборот: чем он меньше, тем меньше сжатие и лучше качество картинки. По умолчанию он установлен на значение 40. Забегая вперед, скажу, что это
многовато. Гораздо лучше будет поставить ползунок в положение 30. При значении Quantization level равно 0 степень сжатия становится практически lossless (т.е. без потерь), однако, по словам разработчика, SIF1 не предназначен для подобного кодирования, поэтому процесс может занять продолжительное время.
. Сolor quantization scaling. Эта настройка определяет отношение уровней порогов квантования для яркостных и цветовых составляющих изображения. При увеличении этого значения увеличивается порог квантования для цветовых составляющих относительно яркостных. При установке ползунка на максимум порог квантования цветовых составляющих становится в 3 раза выше текущего порога квантования яркостных.
. Additional quantizer, или добавочный квантователь. Если увеличение Quantization level уменьшает количество оставшихся деталей на изображении, то от уровня данного квантователя зависит точность передачи оставшихся деталей. При уменьшении этого параметра детали передаются более точно, однако этот квантователь гораздо меньше влияет на конечную степень сжатия изображения, чем основной.
. Maximum I-frame interval, или максимальное расстояние между двумя соседними ключевыми кадрами. Кодек умеет автоматически определять смену планов и вставлять ключевые кадры туда, где это нужно.
Для того чтобы проверить эффективность сжатия, мною был создан тестовый видеоролик размером 640х480 и длительностью 24 сек. Чтобы исключить заточку под быстрые или медленные сцены, он содержал оба типа перемещений объектов. В качестве кодеков для сравнения я выбрал DivX MPEG4 Low- Motion, DivX 6, XVid, APvc, WMV 9 и 3iVX 4.5, т.к. они наиболее распространены. Для каждого из них выбирались параметры по умолчанию. Тестовый видеофайл конвертировался каждым из кодеков, в процессе чего замерялось полное время кодирования. Далее при просмотре (Windows Media Player Classic) на глаз оценивалось качество видео и замерялась загрузка процессора. Конфигурация тестового стенда: Duron 1200+ (реальная частота 900 МГц), 320 Мб RAM, GF2 MX 200, Samtron 76BDF. Вся работа проводилась в программе Virtual Dub 1.4.11.
Таблица результатов
Результаты и их обсуждение
Уже после первого кодирования стало ясно, что тестовый процессор не справляется с воспроизведением SIF1-потока. Видео немного подтормаживает, и это было отмечено соответствующим значком (>100%). На параметрах по умолчанию кодек обогнал всех остальных по размеру конечного файла. Тем не менее, качество изображения у него даже чуть хуже, чем у WMV 9. При уменьшении порога квантизации удается добиться практически одинакового качества с большинством кодеков, и, если отбросить WMV 9, то SIF1 вновь является лидером по размеру. Очень порадовал кодек DivX MPEG4 Low-Motion. Он не только оказался самым быстрым, но и смог выдать одну из лучших картинок. Я считаю, что его использование оптимально по времени и качеству получаемого видео. Еще неплохими были APvc и DivX 6, результаты остальных кодеков вы видите в таблице. В целях эксперимента я провел кодирование кодеком SIF1 на минимальном пороге квантизации, т.е. в lossless. При просмотре полученного файла плейер еще больше тормозил, выдавая по 2-3 кадра в секунду. Время работы также катастрофически велико, особенно по сравнению со знаменитым lossless-кодеком Huffyuv. По качеству SIF1 ему не уступает, но размер файла в 2 раза меньше. Так что смело можно сделать вывод, что использование SIF1 в качестве lossless-кодека оправдано лишь на очень мощных компьютерах.
Выводы
Несмотря на свою "молодость", SIF1 уже может послужить неплохой заменой тому же DivX или XVid. Однако для комфортного просмотра фильмов, кодированных этим кодеком, необходим достаточно мощный процессор (более 1500 МГц): сказываются качественно новые алгоритмы сжатия. Сам автор отмечает практически полное отсутствие оптимизаций, особенно в части воспроизведения, поэтому можно ждать улучшения производительности кодека. Также в ближайшее время будет выполнена мультипроцессорная оптимизация и внедрена поддержка SSE2. Это еще больше повысит быстродействие. Ну, и не забывайте о версии кодека (напомню: ранняя альфа), поэтому возможно огромное количество исправлений и улучшений. На наших глазах рождается новый лидер среди программ подобного рода.
Проект SIF1 распространяется свободно, скачать установку (574 Кб) можно по адресу: сайт Начиная с версии 0.40 Alpha3 SIF1 будет обратно совместимым, то есть последующие версии будут поддерживать предыдущие.
Алексей Голованов, AlekseyGolovanov@mail.ru
История SIF
Проект создания нового кодека стартовал в далеком 2000-м году. В результате нескольких лет разработки на свет появился совершенно новый класс алгоритмов сжатия видео, названный автором "SIF-преобразование". Как сообщается в файле readme, разработчиком было создано 6 движков сжатия на основе нового алгоритма, но лишь шестой по счету был признан успешным. В настоящее время текущей версией кодека является 0.40 Alpha3. Несмотря на это, в процессе тестирования не было замечено каких-либо глюков или сбоев в работе программ для сжатия видео.
Работа с кодеком
После установки кодек становится доступным во всех программах для работы с видео, т.е. интегрируется в систему так же, как, например, DivX. Благодаря этому файлы, сжатые SIF-кодеком, могут проигрываться любым установленным плейером, что, несомненно, большой плюс. Регулируемых параметров у SIF1 всего четыре:
. Quantization level, или порог квантования. Чем больше этот параметр, тем выше степень сжатия изображения, и, соответственно, наоборот: чем он меньше, тем меньше сжатие и лучше качество картинки. По умолчанию он установлен на значение 40. Забегая вперед, скажу, что это
многовато. Гораздо лучше будет поставить ползунок в положение 30. При значении Quantization level равно 0 степень сжатия становится практически lossless (т.е. без потерь), однако, по словам разработчика, SIF1 не предназначен для подобного кодирования, поэтому процесс может занять продолжительное время.
. Сolor quantization scaling. Эта настройка определяет отношение уровней порогов квантования для яркостных и цветовых составляющих изображения. При увеличении этого значения увеличивается порог квантования для цветовых составляющих относительно яркостных. При установке ползунка на максимум порог квантования цветовых составляющих становится в 3 раза выше текущего порога квантования яркостных.
. Additional quantizer, или добавочный квантователь. Если увеличение Quantization level уменьшает количество оставшихся деталей на изображении, то от уровня данного квантователя зависит точность передачи оставшихся деталей. При уменьшении этого параметра детали передаются более точно, однако этот квантователь гораздо меньше влияет на конечную степень сжатия изображения, чем основной.
. Maximum I-frame interval, или максимальное расстояние между двумя соседними ключевыми кадрами. Кодек умеет автоматически определять смену планов и вставлять ключевые кадры туда, где это нужно.
Для того чтобы проверить эффективность сжатия, мною был создан тестовый видеоролик размером 640х480 и длительностью 24 сек. Чтобы исключить заточку под быстрые или медленные сцены, он содержал оба типа перемещений объектов. В качестве кодеков для сравнения я выбрал DivX MPEG4 Low- Motion, DivX 6, XVid, APvc, WMV 9 и 3iVX 4.5, т.к. они наиболее распространены. Для каждого из них выбирались параметры по умолчанию. Тестовый видеофайл конвертировался каждым из кодеков, в процессе чего замерялось полное время кодирования. Далее при просмотре (Windows Media Player Classic) на глаз оценивалось качество видео и замерялась загрузка процессора. Конфигурация тестового стенда: Duron 1200+ (реальная частота 900 МГц), 320 Мб RAM, GF2 MX 200, Samtron 76BDF. Вся работа проводилась в программе Virtual Dub 1.4.11.
Таблица результатов
Кодек | Время сжатия (мин:сек) | Загрузка процессора при просмотре | Размер видео |
SIF1 | 4:29 | >100% | 798 Кб |
SIF1 (Q.l.=30) | 4:45 | >100% | 1222 Кб |
DivX MPEG4 Low-Motion | 0:54 | 55% | 3136 Кб |
DivX 6 | 3:14 | 55% | 2312 Кб |
XVid | 1:33 | 60% | 2058 Кб |
APvc | 0:56 | 80% | 3606 Кб |
WMV 9 | 5:12 | 50% | 834 Кб |
3iVX 4.5 | 1:11 | 55% | 4104 Кб |
SIF1 (lossless) | 15:34 | >120% | 132220 Кб |
Huffyuv 2.11 | 0:56 | 100% | 308086 Кб |
Результаты и их обсуждение
Уже после первого кодирования стало ясно, что тестовый процессор не справляется с воспроизведением SIF1-потока. Видео немного подтормаживает, и это было отмечено соответствующим значком (>100%). На параметрах по умолчанию кодек обогнал всех остальных по размеру конечного файла. Тем не менее, качество изображения у него даже чуть хуже, чем у WMV 9. При уменьшении порога квантизации удается добиться практически одинакового качества с большинством кодеков, и, если отбросить WMV 9, то SIF1 вновь является лидером по размеру. Очень порадовал кодек DivX MPEG4 Low-Motion. Он не только оказался самым быстрым, но и смог выдать одну из лучших картинок. Я считаю, что его использование оптимально по времени и качеству получаемого видео. Еще неплохими были APvc и DivX 6, результаты остальных кодеков вы видите в таблице. В целях эксперимента я провел кодирование кодеком SIF1 на минимальном пороге квантизации, т.е. в lossless. При просмотре полученного файла плейер еще больше тормозил, выдавая по 2-3 кадра в секунду. Время работы также катастрофически велико, особенно по сравнению со знаменитым lossless-кодеком Huffyuv. По качеству SIF1 ему не уступает, но размер файла в 2 раза меньше. Так что смело можно сделать вывод, что использование SIF1 в качестве lossless-кодека оправдано лишь на очень мощных компьютерах.
Выводы
Несмотря на свою "молодость", SIF1 уже может послужить неплохой заменой тому же DivX или XVid. Однако для комфортного просмотра фильмов, кодированных этим кодеком, необходим достаточно мощный процессор (более 1500 МГц): сказываются качественно новые алгоритмы сжатия. Сам автор отмечает практически полное отсутствие оптимизаций, особенно в части воспроизведения, поэтому можно ждать улучшения производительности кодека. Также в ближайшее время будет выполнена мультипроцессорная оптимизация и внедрена поддержка SSE2. Это еще больше повысит быстродействие. Ну, и не забывайте о версии кодека (напомню: ранняя альфа), поэтому возможно огромное количество исправлений и улучшений. На наших глазах рождается новый лидер среди программ подобного рода.
Проект SIF1 распространяется свободно, скачать установку (574 Кб) можно по адресу: сайт Начиная с версии 0.40 Alpha3 SIF1 будет обратно совместимым, то есть последующие версии будут поддерживать предыдущие.
Алексей Голованов, AlekseyGolovanov@mail.ru
Компьютерная газета. Статья была опубликована в номере 22 за 2006 год в рубрике софт