Кодировка видео в формате avi - часть I: Основы, выбор кодека.
valja
Оригинал статьи находится здесь.
Сайт VCDRookie благодарит автора за разрешение на публикацию статьи
Рассмотрим основные принципы кодирования avi файлов на примере фильма длительностью 1ч30мин = 5400 сек, стандартным для ТВ кадром (4:3) и достаточным качеством исходного материала. То есть, мы не будем рассматривать редактирование кадра - это тема для отдельного разговора.
Размер файла зависит только от потока видео- (и аудио-) данных в секунду и длительности фильма. При кодировании файла в размер CD мы ограничены размером файла в 700МБ = 716800КБ, что ограничивает и поток данных в секунду. Качество закодированной картинки зависит от потока данных на единицу площади кодируемого кадра. Чем больше размер кадра, там больший суммарный видеопоток нужен для получения качественной картинки. Поскольку мы ограничены в размере файла (и, соответственно, суммарном видеопотоке), то мы ограничены и в размерe кадра.
Площадь кадра удобно измерять в числе блоков 16х16 (то есть 256 точек). Например, площадь довольно стандартного кадра 512х384 будет (512х384)/256 = 196608/256 = 768 блоков. Практика показывает, что для хорошей картинки, поток данных на один блок должен быть не менее 1 - 2 Кбит/сек. То есть, для кадра 512х384 нужен поток не менее 770-1500 Кбит/сек. При слишком маленьком потоке данных кодек не сможет закодировать кадр с хорошим разрешением и на картинке будут проявляться квадратики квантизации. В этом случае лучше уменьшить разрешение кадра. Отмечу сразу, что полученная величина потока ориентировочная и реальное значение сильно зависит от используемого кодека и характера (а также качества) исходного фильма (детальнее об этом ниже).
Начинать работу лучше с выбора звука - это определит объем, остающийся для видео. Например, при пятиканальном AC3 звуке и аудиопотоке 384Кбит/сек = 48Кбайт/сек, размер аудио части будет 259200Кбайт, то есть более трети(!) диска, и лучше сразу ориентироваться на двухдисковый вариант - на однoм диске для видео остаётся слишком мало места.
Моно/стерео лучше всего кодировать MPEG Layer3 кодеком (часто называется просто mp3), используя CBR. VBR mp3 кодеки (например Lame), лучше не использовать. VBR звук позволяет сильнее закомпрессировать звук, но он не предусмотрен спецификациями AVI формата и, при перекодировках, (а часто и при просмотре, особенно с субтитрами) возникают проблемы с синхронизацией звука и изображения.
NB Если у кого-то есть возражения / вопросы по поводу AC3 или VBR звука, спрашивайте в форуме. Ниже речь будет идти в основном о видео и не надо нагружать и без того сложную тему проблемами звука.
Максимальный (стандартный) поток для CBR mp3 моно звука 64Кбит/сек = 8Кбайт/сек. При стерео звуке вполне достаточно 96 или 128 Кбит/сек. Возьмем для нашего примера достаточно популярную величину 128Кбит/сек = 16Кбайт/сек. При длительности фильма 5400сек, величина аудиочасти будет 16*5400 = 86400Кбайт. Для видео остается 716800 - 86400 = 630400Кбайт. Примерно 6-8МБ уходит на индексы, служебные записи и неиспользуемый объем. Для видео останется 630400 - 8000 = 622400Кбайт.
Отсюда мы получаем средний видеопоток: 622400/5400 = 116.74Кбайт/сек = 934Кбит/сек. Эта величина определяет предельное разрешение для кодировки. При спокойном фильме и DivX5 Pro, XviD (использующим b-фреймы и поэтому компрессирующим заметно лучше) можно использвать большее разрешение (то есть меньший поток на блок), при фильме с многими деталями и движениями и кодеках DivX3, DivX 4.12, лучше использовать разрешение поменьше.
Рассмотрим три возможных разрешения:
640х480 = 640х480/256 = 1200 блоков, отношение 0.778
512х384 = 512х384/256 = 768 блоков, отношение 1.216
448х336 = 448х336/256 = 588 блоков, отношение 1.588
448х336 ( отношение 1.588 ) должно кодироваться без проблем всеми названными выше кодеками, практически независимо от содержания фильма.
512х384 ( отношение 1.216 ). Кодеки DivX3 и DivX4.12 могут быть использованы при "спрокойных" фильмах, DivX5 Pro и XviD должны кодировать практически любой фильм.
640х480 ( отношение 0.788 ). При "спокойном" фильме и кодеках DivX5 Pro и XviD, можно попробовать. С более старыми кодеками появятся квадратики квантизации.
Получаем, что вполне "безопасным" решением будет кодировка в размер кадра 512х384.
Подчеркну, что окончательное решение о формате можно будет сделать, только оценив результаты первой кодировки, причем как видео так и аудио могут быть изменены в обоих направлениях.