А к каким проблемам приводит сжатие видео? Оно приводит к, так называемым, артефактам. Артефакты — это видимые нарушения качества видео, возникающие в процессе сжатия с потерями. Искажения, получаемые при сжатии, варьируются от алгоритма к алгоритму. Наиболее часто встречающийся артефакт сжатия — разбиение картинки на квадратные блоки. Также часто наблюдаются: «мусор» рядом с контрастными границами и движущимися объектами, «волнующиеся» и «расплывшиеся» цвета или «замыливание» картинки.
Здесь ключевым моментом является количество бит, выделяемых для хранения цвета одного пикселя. В этой связи появляется термин «битрейт». Битрейт — это размер видеопоследовательности в битах, отнесенный к его длительности в секундах. Единицей измерения битрейта служит 1 бит/с — один бит в секунду (1bps — 1 bit(s)-per-second). Поскольку 1 бит/с — величина очень маленькая в приложении к цифровому видео, также вводятся килобит/с (кбит/с). Чем выше битрейт и, соответственно, бит выделено под хранение одного пикселя, тем реалистичнее картинка, но тем больше объем конечного файла.
Итак, из всего вышесказанного можно сделать вывод, что основные параметры, на которые мы можем повлиять — это битрейт и размер картинки. Частоту кадров не стоит трогать, так как это может привести к рывкообразному воспроизведению видеоряда и проблемам синхронизации со звуковой дорожкой.
Но, это еще не все рычаги управления. Повлиять на качество можно, выбирая режимы сжатия. Существует четыре режима: однопроходный с постоянным битрейтом, однопроходный с переменным битрейтом, однопроходный с постоянным качеством и двухпроходный. Рассмотрим подробнее принципы работы каждого из режимов.
Однопроходный режим с постоянным битрейтом
Этот режим — самый простой: каждый кадр имеет одинаковый размер, а результирующий поток видеоданных имеет постоянный битрейт. Алгоритм этого режима весьма прост и, соответственно, нересурсоемок. Однако, результаты, полученные в таком режиме, существенно уступают результатам в других однопроходных режимах. В современных кодеках практически не используется.
Однопроходный режим с переменным битрейтом
Он реализует простейшую схему: если кадр простой для сжатия, то используется лишь часть выделенных для нее битов. Остальные биты «откладываются» в своего рода копилку — резервуар. Благодаря этому на сложных сценах мы можем использовать больше бит для сжатия кадра, заимствуя часть битов из резервуара. Данная схема проста и эффективна, потому она дает лучшее качество изображения, чем в режиме с постоянным битрейтом. Но, реальный битрейт получится на усмотрение кодека, поэтому точно контролировать размер фала не получится.
Однопроходный с постоянным качеством
Название этого режима — «с постоянным качеством», — не совсем корректно. В процессе сжатия остается постоянным так называемый quantizer — численная характеристика степени сжатия кадра. Quantizer задаёт коэффициент потерь в качестве видео. При выставлении его в постоянное значение, качество видео будет одинаково на протяжении всего фильма, не зависимо от количества движения. Уменьшение значения «квантизатора» ведёт к улучшению качества картинки. А, чем этот показатель выше, тем больше сжатие, тем ниже качество, тем более заметны квадраты (артефакты). Основной недостаток этого режима — мы не можем узнать заранее (до сжатия), какой размер будет иметь файл в результате.
Двухпроходный режим
Как можно догадаться из названия, сжатие видео в этом режиме проводится в два прохода и, соответственно, занимает примерно вдвое больше времени. Во время первого прохода собирается статистика о сжимаемости видео материала. Во втором проходе эта статистика используется для перераспределения битов, причем биты могут перераспределяться не только в пределах некоторого небольшого промежутка времени, как было в случае однопроходного режима и схемой с резервуаром битов, а на протяжении всего материала. Поэтому, именно двухпроходный режим обеспечивает максимальное качество видео при заданном битрейте. При этом можно очень точно посчитать, какой размер будет иметь конечный файл.
Кроме вышеперечисленного, в кодеках фигурирует огромное количество настроек, фирменных технологий и нововведений. Но, для того чтобы из-за такого обилия неподготовленный пользователь не погрузился в транс, разработчики позаботились о создании профилей, содержащих готовые наборы настроек, предназначенные для разных задач. Поэтому, если Вы не знаете какие настройки выставить в кодеке, ищите интересующий нас профиль Portable, который подразумевает кодирование с такими параметрами, чтобы полученный файл мог быть проигран на портативных устройствах. В частности, рекомендуемое максимальное разрешение для этого профиля 352x240 при 30 кадрах в секунду и 352х288 при 25 кадрах в секунду.
Попробуем дать рекомендации по параметрам кодирования из всего вышеизложенного. Максимальный размер кадра для QVGA достаточно будет выставить 320х240. Причем, даже если дисплей Вашего КПК имеет VGA (640х480) разрешение, не имеет особого смысла с ним кодировать из-за небольшого физического размера экрана. По сути, размеры матрицы QVGA и VGA одинаковы и составляют на сегодняшний день примерно 3,5".
А вот с выбором битрейта дела обстоят сложнее. Дело в том — внимательный читатель уже, наверное, догадался, — что, чем динамичнее фильм, тем большее значение битрейта потребуется для обеспечение приличного качества картинки. На наш взгляд, можно для пробы начать со значения около 250 кбит/с, при этом час видео будет занимать чуть более 100 Мб.
Наконец, режим сжатия лучше использовать двухпроходной. Это позволит получить максимальное качество фильма при заданном битрейте, но за это придется расплатиться почти вдвое большим временем на кодирование фильма, чем при однопроходном.
Эра немого кино давно закончилась. Хорошо это или плохо — решайте сами, но даже в ту пору киносеансы проходили не в полной тишине, а под аккомпанемент пианино. Что уж говорить про наши дни! Хотя звуковой поток не так прожорлив, как видео, его все равно надо сжимать. Об основных форматах компрессии аудио подробнее можно почитать на 4pda.ru. Здесь же мы остановимся только на основных моментах.