DVD за 12 рублей или Кодирование DVD в MPEG-4
Зачем нужно переписывать DVD на CD? Ведь ясно, что качество копии будет заведомо хуже, чем на оригинале, потому что чудес не бывает. Однако, ситуации, когда нужно переписать DVD, не редкость, и часто мы готовы пожертвовать качеством – ради чего? Хотя бы ради того, чтобы вообще посмотреть фильм – например, на компьютере, в котором нет DVD-привода. Или если DVD не твой, а знакомого. Называется ли это нелегальным копированием? Нет, поскольку во-первых мы копируем DVD с заведомо худшим качеством, а во-вторых потому что мы не будем продавать полученные копии. Ведь не будем?
С чего обычно начинается кодирование? Для начала мы знакомимся со статьями о кодировании в интернете и понимаем, что все это очень непросто. Куча программ, множество настроек и непредсказуемый результат. Возникает желание сделать как-нибудь попроще. Можно, конечно, и попроще – существует несколько программ, позволяющих поставить DVD, задать пару параметров и идти спать, а через какое-то время получить результат, который умещается на одну болванку. Те, кого такой результат устроит, могут обратиться, например, к программе FairUse и на этом закончить чтение этой статьи.
Но не всем достаточно того, что выдают программы «три в одном», если хочется «как на фирменных дисках». Для этого уже требуется технология, по которой используются несколько программ и ручной подбор параметров, а иногда требуется и не один раз закодировать фильм.
Возможные варианты
Идеальный вариант. Размер кадра – полный с DVD, по горизонтали обычно 720 точек, вертикаль зависит от пропорций кадра на DVD. Звук – взятый без изменения с DVD, обычно AC3 DD 5.1, иногда несколько дорожек (с переводом и без перевода). Субтитры (иногда на нескольких языках). Умещается такой вариант обычно на 2-3 болванки по 700 Мб. Требует сильную машину для просмотра и мощную аудиокарту для прослушивания 6-канального звука. Высокие потоки видео, как и большой размер кадра, требуют мощный процессор для декодирования.
Хороший вариант. Размер кадра – несколько уменьшенный по сравнению с DVD, по горизонтали обычно 512-640 точек. Возможен деинтерлейс (см. ниже) или один из его заменителей. При этом видео немного расплывается. Звук – mp3 стерео либо АС3 2.0-3.1 на средних битрейтах (128-192 кбит). Субтитры возможны. Такой вариант обычно умещается на 1-2 болванках 700 Мб.
Плохой вариант. Размер кадра – 300-512 точек. Возможны явные артефакты, огрехи кодирования в виде квадратов, смещения цвета, замыливания видео, подергивания звука, проскакивающая “полосатость” (интерлейс), дергающиеся кадры, замороженные кадры, выпадение кадров. Звук – вплоть до 22 кГц, 32 кбит, моно. Примеры такой оцифровки можно увидеть на пиратских дисках, помеченных надписями типа «Real DVD quality» и дискредитирующая формат MPEG-4 в глазах рядового пользователя. Удовольствия от просмотра такого кино примерно столько же, сколько и от просмотра пиратской кассеты, на которой записана первая зальная копия фильма с почти бесцветным изображением и тенями зрителей на экране.
Копирование DVD
Digital Versatile Disc (DVD) обычно содержит несколько VOB-файлов по 1 Гб каждый и системные (индексные) IFO- и BUP-файлы с дополнительной информацией. Файл VOB может включать в себя несколько потоков видео, аудио, субтитров и другую информацию. Обычно фирменные DVD зашифрованы с помощью технологии CSS (Content Scrambling System). Возможно и применение Macrovision-кодирования для предотвращения перезаписи с DVD-проигрывателя, а также защита в виде привязки к международным зонам (1 – США, 2 – Европа, 5 – Россия и Африка).
Дешифровка DVD представляет собой копирование VOB-файлов на жесткий диск с одновременным удалением из них защитного кода. Это позволяют сделать многие программы, но мы остановимся на наиболее простой и популярной программе для вскрытия DVD – SmartRipper, позволяющей не просто дешифровать и скопировать VOB-файлы на винчестер, но и предварительно выбрать главы (chapters), которые нужно копировать, звук, который нужно включать в поток, и т. д.
Далее нужно подготовить VOB-файлы к кодированию в других программах. Для этого обычно используются фреймсерверы, наиболее популярные из которых – Avisynth и VFAPI. Они довольно просты в обращении, но результат их работы включается в разные технологии кодирования. Для нашего примера возьмем за основу VFAPI. Чтобы передать ей управление потоком MPEG-2, нужно сначала создать проект, который бы она понимала. Такой проект создает DVD2AVI
DVD2AVI – подготовка к фреймсервингу
DVD2AVI может открывать VOB-файлы и кодировать их в любой из установленных на компьютере кодеков, но, к сожалению, не имеет деинтерлейса и iVTC (о которых мы расскажем позже), поэтому ее нельзя использовать сразу для кодирования. Кроме того, DVD2AVI сохраняет звуковые дорожки из выбранного фрагмента или целого фильма в любом формате, заключенном в VOB-файлах – АС3, МР2, LPCM, WAV. Звук сохраняется как в оригинальном виде, так и в виде обычного wav (то есть программа может микшировать 6 каналов в простое стерео). Звук можно переводить из 48 кГц в 44 и нормализовать (повышать громкость звука до нужного уровня).
Запускаем DVD2AVI. Выбираем в проводнике или другом оконном файл-менеджере нужные VOB-файлы и переносим их мышью в окно программы. Либо открываем в меню DVD2AVI «File/Open» и выбираем первый VOB – остальные VOB из той же серии программа подключит в список сама. Программа может переводить киноформат NTSC 30 fps в прогрессивный формат 24 fps посредством включения опции «Video/Field Operation/Forced film». Но пользоваться ею не рекомендуется, так как в сложных случаях возможны ошибки в определении последовательности полей (об iVTC – чуть позже). Если мы собираемся всего лишь создать проект для фреймсервера, то можно не трогать установки по умолчанию в меню «Video». Для получения звуковых дорожек из VOB нам понадобится меню «Audio».
Если нужно взять звук АС3 с DVD без изменений, то выбираем «Audio/Dolby Digital/Demux All Tracks». Если требуется оригинальный звук MP2, то в меню «Audio/MPEG Audio» выбираем «Demux All». Если необходимо перевести АС3 в стерео-wav, то выбираем аудиодорожку в меню «Audio/Track number». К сожалению, программа не дает статистики по наличию и форматам звука в VOB-файле, поэтому мы можем либо посмотреть это при рипинге в SmartRipper (в «Stream processing»), либо выбрать трек наугад, скопировать часть и проверить, тот ли трек копируется. После выбора трека запускаем создание проекта «File/Save Project» (F4) и в окне статистики сразу видим характеристики выбранного аудиопотока (скажем DD 2/0 192, что означает Dolby Digital 2.0 192 кбит). В случае необходимости создание проекта можно остановить клавишей Esc.
Дополнительные опции. Если нам требуется перевести 48 кГц в 44 (скажем, на старых аудиокартах не поддерживается звук 48 кГц, и при его проигрывании возникают характерные шумы на высоких частотах, а на картах Yamaha фильм с таким звуком может проигрываться ускоренно), то можно выбрать «Audio/48->44″ с установкой необходимого качества рекодирования звука. Если на DVD звук тихий, можно выбрать его усиление (normalization). При переводе 6-канального звука в 2-канальный опция «Dynamic Range Control» позволяет усилить тихие звуки, не усиливая при этом громкие. Иногда это может исправить положение при неудачном декодировании сложного звука АС3. К примеру, у нас есть фильм, в котором присутствует постоянный сильный шум моторов или ветра, но одновременно есть места, где герои говорят слишком тихо. Чтобы усилить именно тихие голоса, практически не усиливая и так уже громкие моторы, мы можем применить DRC или сделать то же самое («Dynamic processing») в каком-либо аудиоредакторе.
В DVD2AVI мы также можем выбрать нужный фрагмент фильма или музыкальный клип из общего потока. Для этого предназначена шкала с рычажком внизу окна. Кнопками «» мы переходим на следующий или предыдущий ключевой кадр, а с помощью «[» и «]» задаем ограничение фрагмента.
После выбора всех параметров запускаем создание проекта в меню «File/Save project». Файл проекта обычно очень маленький, но звук от фильма будет записан в ту же папку. Необходимо оставить под него место, особенно если мы делаем декодирование и звук запишется в формате wav – под 1.5-часовой wav потребуется около 900 Мб.
После создания проекта d2v можно приступить к собственно фреймсервингу. Для этого понадобится программа VFAPI.
VFAPI – фреймсервер
Для нормальной работы фреймсервера необходимо установить сначала VFAPI Codec, через который и будет осуществляться управление фреймсервером. Кодек обычно лежит в том же дистрибутиве и устанавливается bat-файлом.
После установки перегружаем систему и запускаем VFAPI Reader (Converter), а затем открываем созданный нами в предыдущем пункте проект d2v. Программа выдает диалоговое окно, на которое мы отвечаем ОК (в окне должны стоять обе галочки). После этого нажимаем «Convert» и получаем в папке, где лежал проект, AVI-файл, в имени которого будет стоять «d2v», содержащий служебную информацию для VFAPI Reader.
Приступаем собственно к оцифровке. Для этого нам понадобится программа Virtual Dub, а также кодек MPEG-4. Таких кодеков на сегодняшний день несколько: DivX 3-4-5, XviD нескольких версий, WMV 7-8-9 и другие (типа Angel Potion). Мы же остановимся на DivX 4.12, как самом распространенном и наиболее безглючном. И вот еще что. Прежде чем приступать к кодированию, нужно определиться, какое качество мы хотим получить, и выбрать соответствующий размер кадра и битрейт для кодирования.
Virtual Dub
Настройки кодека
Откроем Virtual Dub. Если мы открываем его впервые, то он выдает сообщение о том, что в системе установлен кодек DivX, являющийся пиратским продуктом, и строго рекомендует не пользоваться им. Мы, конечно же, соглашаемся. Затем открываем AVI-файл, полученный в результате конвертирования проекта d2v через VFAPI. Теперь мы видим в VDub два окна – слева оригинальное изображение, а справа – результат наложения фильтров на оригинал. Пока не заданы фильтры, в обоих окнах должно быть одно и то же. Для начала оба окна будут серыми – пока мы не сдвинем рычажок на шкале внизу или не нажмем на кнопку с двойной стрелочкой для перехода на следующий кадр. Перейдя на следующий кадр, мы увидим кадр фильма, причем с изначальным DVD-качеством, поскольку это и есть реальный кадр VOB-файла! Мы видим его благодаря работающему в фоновом режиме VFAPI, который декодирует эти кадры из MPEG2 в изображение, понятное Virtual Dub. В этом, собственно, и заключается суть фреймсервинга.
Теперь зададим параметры кодирования. Открываем меню «Video/Compression» и выбираем кодек DivX Codec 4.12. Нажимаем «Configure» и получаем диалоговое окно с настройками. Они разделены на группы: «General parameters», «Decoding parameters», «1-pass encoding parameters», «Quality-based encoding parameters», «Two-pass encoding parameters». Рассмотрим их подробнее.
General parameters – главные установки.
Variable bitrate mode – выбор режима кодирования.
1-pass – «однопроходное кодирование». Зависит от настроек справа, заданного потока и ключевого интервала.
1-pass quality-based – «однопроходное кодирование по качеству». Зависит от ключевого интервала и процента качества изображения, заданного в разделе «Quality-based encoding parameters». При выборе этого режима кодек старается кодировать кадры на примерно одинаковом уровне сжатия, невзирая на размер получаемого файла, выдерживая примерно одинаковое качество изображения как для медленных, так и для быстрых сцен. В этом режиме недоступен параметр задания ключевого кадра, но используется именно тот, который задан в данный момент, поэтому лучше задать ключевой кадр до включения этого режима.
2-pass, first pass – «двухпроходное кодирование, первый проход». Двухпроходное кодирование требуется для улучшения параметров кодирования. В этом режиме кодек полностью выполняет все функции кодирования с наложенными на изображение фильтрами. Результат не сохраняется, но каждому кадру присваивается свой индекс сложности и создается таблица, помогающая кодеку на втором проходе наиболее выгодно распределить поток между кадрами. Распределение потока требуется по очень простой причине – поток в файле распределен неравномерно, но усредненно – то есть в каждую данную секунду времени поток может быть выше или ниже заданной нормы, но в среднем по фильму поток должен соответствовать заданному. Скажем, чистый черный кадр очень хорошо сжимается, значит, в этом месте можно уменьшить поток, а в следующей сцене погони с резкими сдвигами объектов в кадре его, наоборот, можно немного поднять.
2-pass, second pass – «второй проход двухпроходного кодирования». Выполняется только после первого прохода и зависит от полученных им данных. В этом режиме можно немного подправить битрейт в случае несовпадения его реального значения с прогнозируемым, чтобы не делать заново первый проход. Это единственный параметр, который можно менять во втором проходе.
Performance/quality – «скорость/качество» кодирования предпочтительнее всего держать на наиболее медленном и наиболее качественном уровне – slowest. Кто желает поэкспериментировать – может попробовать на разных уровнях.
Output video bitstream at – «приблизить скорость выходного видеопотока» к заданному битрейту. Максимальный возможный битрейт в этой версии DivX – 6 мегабит (6000 кбит). Низкие потоки для кодирования DVD – ниже 900 кбит (95 и более минут видео на CD), средние – 900-1200 кбит (73-95 мин видео на CD), высокие – 1200-1800 кбит (50-73 мин видео на диск). Очень высокие потоки (выше 1800 кбит) редко требуются для кодирования DVD-видео, чаще они применяются для кодирования сложного домашнего видео – при дергающейся камере, резко сдвигающихся объектах, множестве мелких резких деталей в кадре и т.д.
Maximum key frame interval – «максимальный интервал ключевого кадра». Задает максимальную частоту установки интервала между ключевыми кадрами. Минимальный интервал определяется сложностью видеопотока – на сменах сцен кодек будет сам устанавливать ключевые кадры. Обычно ставится либо каждую секунду (24-30 кадров, в зависимости от формата видео на DVD) для простоты перемотки готового видеофайла, либо 250-500 кадров для «экономии» потока на ключевых кадрах. Большой ключевой интервал оправдан только в случае очень медленного сдвига камеры на ровных фонах – при маленьком ключевом кадре в таких случаях изображение равномерно «подергивается» из-за нарастающей ошибки дельта-кадров (изображение постепенно становится более заквадраченным, а потом резко становится гладким, что сразу замечает натренированный глаз).
Maximum/minimum quantizer – эти параметры задают пределы степени сжатия каждого кадра. Обычно стоит диапазон 2-12, что дает широкие возможности кодеку самому выбирать силу сжатия каждого кадра, а следовательно, и качество его
отображения. Для идеального изображения рекомендуется выставить эти параметры 4 и 2 соответственно. В этом случае кодек будет вынужден сжимать все кадры примерно одинаково и не сможет слишком сильно варьировать поток на протяжении фильма. Качество при этом гарантируется, но возможно и вынужденное завышение битрейта в случае особо сложных сцен, которые кодек не сможет втиснуть в определенный ему поток и степень сжатия.
Default postprocessing level – задает уровень сглаживания по умолчанию для данного кодируемого фильма. Проигрыватель, загружая этот фильм, должен выставить именно тот уровень сглаживания в декодере, который был задан при кодировании. Обычно выставляется в положение 0 (крайнее слева) – это дает зрителю оценить качество оцифровки, а также уменьшает нагрузку на процессор зрителя. Качество оцифровки по возможности должно быть таким, чтобы при нулевом уровне сглаживания зритель не видел артефактов сжатия (квадратов, помех, ореолов), то есть близким к качеству DVD.
Из всех вышеперечисленных параметров обычно меняется только скорость потока – на расчетную, а также выставляется первый проход двухпроходного кодирования. После выполнения первого прохода в кодеке задается второй проход.
Добавление фильтров
Теперь можно добавить фильтры («Video/Filters/Add»). VDub позволяет применять деинтерлейс, сглаживание, резкость, яркость, шторки, размер кадра, уровни яркости, поворот и т. д. Нас интересуют в основном изменение размера кадра (resize), шторки или обрезка (letterbox, cropping) и деинтерлейс (deinterlace). Отдельным пунктом стоит iVTC, или преобразование формата NTSC из 30 в 24 кадра в секунду.
Deinterlace. Предназначен для борьбы с явно интерлейсными кадрами. Телевизионные стандарты PAL и SECAM выводят каждый кадр двумя полями, наложенными друг на друга через строку, – интерлейсным кадром. Визуально мы можем наблюдать интерлейс при просмотре видео с DVD (если в проигрывателе не включен фильтр деинтерлейса) – когда идет сильное смещение объектов в кадре, мы видим «расческу».
Для того чтобы избавится от этой расчески, следует наложить фильтр deinterlace, причем еще до ресайза. В противном случае при изменении размера кадра смещается правильное чередование строк полукадров и деинтерлейсинг становится неэффективным – расческа местами сохраняется. Из возможных режимов деинтерлейса обычно применяется «Blend fields» (смешивать поля).
Cropping. Обрезание лишних черных полей. Для использования этого фильтра в VDub нужно выбрать фильтр null transform, а затем вместо входа в его параметры в окне списка добавленных фильтров выбрать кнопку Cropping. В полученном окне можно задать обрезание кадра независимо по всем четырем сторонам.
Resize. Изменение размера кадра. О стандартных размерах мы уже говорили – их по возможности следует придерживаться. Дополнительной возможностью сохранить и правильные пропорции кадра, и деление на 16 являются шторки (letterbox). Для их применения необходимо задать размеры кадра так, чтобы пропорции соответствовали заявленному аспекту, но вертикальная сторона была чуть меньше, чем необходимо для кратности 16. После этого добавляется еще один фильтр resize и в нем выбираются исходные размеры 1:1 (размеры, полученные после применения предыдущего фильтра), а в пункте «Expand frame…» ставится галочка и задаются чуть большие размеры с кратностью 16. Это даст изображение в кадре правильной пропорции, а размеры самого кадра будут доведены фильтром до правильной кратности черными шторками, которые вы даже не заметите при просмотре в полный экран монитора. И волки сыты, и овцы целы. Фильтр обычно используют в режиме bicubic (пункт «filter mode» в настройках фильтра).
iVTC (inverse TeleCine). Предназначен для борьбы с частичными интерлейсными кадрами. В фильмах, снятых на кинопленку и затем преобразованных в телевизионный формат NTSC, обычно встречается «частичный интерлейс» – попеременный вывод интерлейсных и прогрессивных кадров и скорость 30 кадров в секунду. При этом они содержат избыточную информацию – дублирование пары полей с изменением четности в соседних кадрах. Эту избыточную информацию можно безболезненно удалить, применив специальный алгоритм и уменьшив общий вес кадров (а следовательно, увеличив качество каждого кадра при той же скорости видеопотока). Этот алгоритм называется iVTC и заложен в Virtual Dub – в разделе «Video/Frame rate/inverse telecine/reconstruct-adaptive». Следует заметить, что последовательность чередования в NTSC-фильмах постоянно нарушается и идеального алгоритма iVTC до сих пор нет, поэтому лучше все-таки применять параллельно ему и старый добрый деинтерлейс, чтобы в готовом фильме не проскакивала «расческа».
После задания параметров кодека и фильтров можно выбрать пункт меню «File/Save AVI», а затем задать имя файла. После первого прохода нужно поменять параметр в кодеке на второй проход и сохранить под тем же именем файла. После окончания второго прохода видеоряд фильма будет готов. Остается звук.
NanDub. Звук
Если мы хотим использовать звук MP3, то сжимаем WAV, полученный в DVD2AVI, любым кодеком MP3 – Lame, Fraunhofer и пр. Если же мы будем вставлять АС3, то оставляем его без изменений. Для микширования MP3 с видео необходима программа NanDub. В нее добавлены возможности по микшированию видео с MP3 без RIFF-заголовка и с VBR, а также поддержка АС3 и OGG. Также имеется возможность вставки двух потоков аудио в один AVI.
Открываем NanDub, переносим в него мышью готовый AVI без звука, выбираем в меню «Audio» (VBR)MP3 или АС3, выбираем свой аудиофайл. Задаем в меню «Audio/interleaving/interleave…» 500 ms (для АС3 – 160 или 96 ms), а в меню «Video» – «Direct stream copy», и сохраняем результат как AVI под другим именем.
В случае расхождения аудио и видео (потеря синхронизации со звуком) к концу фильма, стоит выбрать в меню «Video/Frame rate» параметр «Change so video and audio durations match».
Нарезка
Если мы рассчитывали разместить фильм на 2 или 3 CD и рассчитали его размер исходя из этого, готовый фильм можно разрезать в программе NanDub. Необходимо помнить, что резать фильм без рекодирования можно только по ключевым кадрам.
Открываем готовый фильм в NanDub, выбираем «Direct stream copy» в меню «Video» и «Audio». Нажимаем Ctrl+Shift+J – появляется меню, в котором мы задаем размер первого диска и нажимаем ОК. Бегунок сместится примерно к нужному ключевому кадру. Ставим конец выделения (клавиша End), затем перескакиваем к началу файла (Ctrl+Left), отмечаем начало фрагмента (клавиша Home). Теперь мы видим выделенный фрагмент. Сохраняем его через «File/Save as AVI». Смотрим на полученный размер файла, и если он больше, чем нам нужно, то переходим на конец выделенного фрагмента («Edit/Move to selection end») и сдвигаем бегунок на пару ключевых кадров к началу (Shift+Left), отмечаем конец фрагмента (End) и снова сохраняем результат. Если он нас удовлетворил, то, не двигая маркер, отмечаем начало второго фрагмента, затем переходим на конец файла (Ctrl+Right) и отмечаем конец фрагмента. Сохраняем результат под другим именем.
Зачастую не удается создать два идентичных по размерам файла
фрагмента, так как нарезка возможна только по ключевым кадрам, а они
могут выставляться довольно далеко друг от друга. Для того чтобы не получить один кусок размером 680 Мб, а другой – 720 Мб, расчетный битрейт должен быть немного меньше, чем ровно на две болванки. Не рекомендуется, скажем, рассчитывать на общий объем файлов 700 * 2 = 1400 Мб – лучше взять за основу 1380 Мб. Кроме того, на диск стоит дописывать кодек и проигрыватель, а также субтитры.
Как работать со SmartRipper
Устанавливаем DVD в привод и запускаем Smart Ripper (SR), который при запуске анализирует IFO-файлы на DVD. Открывается рабочее окно программы. Слева мы видим три способа копирования содержимого DVD – «movie» (как фильм, или по главам), «files» (оригинальные VOB-файлы) или «backup» (полностью все содержимое).
Если нам нужен весь диск с дополнительными материалами и всеми потоками аудио и видео, то выбираем «backup» и копируем диск целиком. Если нужен только основной фильм, выбираем «movie» и выделяем «all chapters» (главы) основного «Title» (обычно он самый большой по размеру). Если мы хотим убрать лишний звуковой поток (скажем, оставить только перевод) или ненужные субтитры и т. д., есть возможность копировать по потокам – в закладке «stream processing». В поле «target» можно задать путь на диск и каталог, а в установках «Settings» можно задать «создание папки с именем фильма» или увеличить предельный размер VOB-файла так, чтобы получился один 4-8-гигабайтный VOB на весь фильм.
Если после выбора способа копирования у нас не хватает дискового пространства, то окошко «свободного места диска» справа внизу загорится красным цветом. Если же места хватает, то окошко будет зеленым, а под кнопкой «Settings» появится кнопка «Start», нажав на которую мы начнем процесс. В процессе копирования можно наблюдать способы дешифровки, вес файлов, скорость диска в единицах «DVD speed». После завершения процесса мы получим несколько файлов в папке по заданному пути. Файлы lst, txt, idx – это служебные файлы статистики SmartRipper.
Кодеки MPEG-4 – краткая история и различия
Кодек (COder/DECoder) – программа, позволяющая кодировать видео- (или аудио-) информацию и/или проигрывать ее на компьютере.
Семейство кодеков DivX началось с майкрософтовского кодека MPEG-4, который на версии 3 резко сменил ориентацию и превратился в ASF. Отличий от MP4v3 у него практически не было, не считая того, что из-за отсутствия стандартного RIFF/AVI заголовка его не открывал ни один видеоредактор. Это небольшое отличие и стало причиной появления DivX – пара хакеров немного «доработала» кодек MS MP4v3 и выпустила его в свет под названием DivX 3.1.
DivX получил мощнейшую поддержку во всем мире (12 миллионов закачек с сайта кодека). После этого хакеры легализовались, набрали команду и стали создавать уже коммерческую версию кодека. Хакеры обещали полностью переписать код, дабы Microsoft не имела возможности обвинить их в плагиате. Новая версия «глючила» до последнего момента, и только последние версии – 4.11 и 4.12 – стали более или менее стабильными.
Дальнейшее развитие кодека пошло по пути усложнения жизни кодеров – появлялись новые параметры кодирования, усложняющие и замедляющие процесс, но дающие мизерный прирост качества. Кроме того, кодек защитили от нелегального копирования – бывшие хакеры стали бороться за теплое место под солнцем. В кодек вносились дополнительные функции редактирования, что постепенно превращало его в упрощенный видеоредактор. На данный момент последняя версия кодека гордо зовется «DivX Pro 5.1″ и распространяется в трех вариантах – «относительно бесплатный» (GAINBundle), с включенной рекламой, «урезанный» – дешевый, но с обрезанными функциями, и «полный» – наиболее дорогой и с ненужными большинству потребителей функциями (подробнее о DivX 5.1 читайте в этом номере).
Развитие майкрософтовского оригинала (MP4v3 = ASF) шло своим чередом, по-прежнему не позволяя пользователю редактировать полученное закодированное видео, и дошло до версии WMV 9 (Windows Media Video). Качество изображения вполне сравнимо с DivX, но пользуются этим кодеком в основном пираты и только для однодисковой продукции. Для домашнего видео или производственного кодирования оно малопригодно – из него невозможно вырезать даже небольшой фрагмент без предварительного сложного вскрытия файла. Это означает, что даже порезать файл на две болванки вы не сможете!
Параллельно с кодеком DivX развивался еще один кодек – XviD. Он до сих пор имеет публичный код и не охраняется торговыми марками – его код может править любой, так же, как и использовать его для кодирования. Эти мелочи делают XviD очень популярным во всем мире – ведь его поддержка не чревата судебными преследованиями в отличие от нелицензированной поддержки кодека DivX-4-5. К сожалению, у данного кодека нет своей команды разработчиков, поэтому существует сразу несколько его линий. Две главные постоянно дорабатываются, «глючат» и плохо совмещаются друг с другом: фильм, закодированный одной версией, может не проигрываться на компьютере с установленном кодеком другой.
Расчет битрейта и размера кадра
Битрейт (Data Rate) имеет определяющее значение для веса конечного файла. Зная продолжительность фильма и предельное количество места на диске, куда будет помещен закодированный фильм, можно вычислить (с некоторой погрешностью) нужный битрейт. Это делается как вручную, так и с помощью программ – битрейт-калькуляторов.
Пример расчета битрейта. Предположим, мы хотим записать фильм продолжительностью 1 ч 35 мин на CDR 700 Мб. Полная длина фильма составляет 1 * 60 + 35 = 95 мин. или 95 * 60 = 5700 сек. Зная емкость CDR – 700 Мб, мы расчитываем битрейт: 716 800 кб / 5700 сек = 125.7 кб/сек или 125.7 * 8 = 1006 кбит/сек. Примерно такой битрейт нам необходимо задать при кодировании, отняв от него предварительно прогнозируемый битрейт звука. Возьмем за основу битрейт mp3, равный 128 кбит. 1006 – 128 = 878 кбит.
Конечно, реальный битрейт может не совпасть с прогнозируемым, но ошибка обычно составляет не более 2-3% и зависит от динамичности фильма и сложности структур, а также от дополнительных фильтров. Чем медленнее фильм и проще структуры (как в плоских мультфильмах), тем точнее уложится кодек в определенный битрейт. В противном случае нам придется кодировать фильм еще раз, вычислив дельту ошибки кодека.
Размер кадра – вторая составляющая качества фильма. От него зависит количество и качество деталей (особенно мелких), которые можно будет рассмотреть на изображении. Обычно кадр фильма в формате DVD = 720х576 (варианты – 640х480 и 768х576). Кадр оригинального размера даст нам наивысшее качество фильма (четкость деталей), особенно на высоких битрейтах – вплоть до 6000. Правда, тогда фильм не войдет не только на один, но возможно и на 2-3 CD. И вообще, его размер может приблизиться к исходнику на DVD (около 2-4 Гб).
Чем сильнее сжатие и меньше поток, тем сильнее искажение изначального изображения – это аксиома сжатия по типу JPEG-MPEG. Обратная связь – чем меньше размер кадра, тем меньший поток требуется для его передачи. Скажем, для передачи несжатого видео 120х90 точек (PAL, 24 bit) потребуется 120 * 90 * 3 = 32 400 байт * 25 кадров = 810 кб или 6480 кбит. Обычное среднее сжатие видео для фильмов – около 10х, так что для передачи видео с кадром 120х90 будет достаточно скорости потока около 650 кбит! Правда, при таком размере кадра мы не увидим не только волосинку на капоте автомобиля, но даже зрачков глаз на лице средним планом.
При уменьшении размера кадра необходимо также учитывать особенности некоторых видеокарт, которые могут не включать оверлей (и, соответственно, ускорение и вывод на ТВ) при несоответствии кратности сторон кадра – горизонтальная сторона в таком случае должна делиться на 32, а вертикальная – на 16. Это ограничивает уменьшение кадра несколькими стандартными значениями. Кроме того, есть еще проблема аспекта – пропорциональности сторон кадра. На данный момент наиболее часто встречаются три аспекта – 4:3 (1.33), 16:9 (1.78) и 2.35. Создатели DVD выходят из положения просто – создавая кадр любой пропорции и добавляя к кадру сверху и снизу черные полосы. Но при кодировании желательно убирать эти полосы, причем не для уменьшения потока (чистые черные поля сжимаются очень хорошо), а для уменьшения площади кадра.
Еще одна проблема – несоответствие реального кадра, записанного на DVD, заявленному аспекту. Наиболее часто на DVD встречается кадр 720х576 (со шторками или без них), а для правильного аспекта требуется кадр 768х576. До заявленного аспект доводится софтовыми или бытовыми плейерами. Но при кодировании лучше всего сразу выставить правильный аспект, чтобы зрителю не пришлось подбирать его на своем компьютере и он видел правильные пропорции актеров сразу после включения фильма. Правда, это заранее закладывает некоторое искажение («замыливание» или «лесенку») реального кадра при ресемплинге. Идеальное изображение сохранится только в случае, если мы не будем обращать внимание на аспект и кратность сторон, необходимую отсталым видеокартам, и лишь уберем черные шторки, не трогая размеры кадра DVD.
С учетом аспектов и кратностей остаются следующие стандартные размеры кадров для трех стандартных пропорций: 4:3 (1.33) – 768х576, 720х544 (*), 704х528, 640х480, 576х432, 512х384, 448х336, 384х288; 16:9 (1.78) – 768х432, 720х400 (*), 704х400 (*), 640х360 (*), 576х324 (*), 512х288, 448х252 (*), 384х216 (*); 2.35 – 768х320 (*), 720х304 (*), 704х304 (*), 640х272, 576х240 (*), 512х224 (*), 448х192 (*), 384х160 (*). Размеры, помеченные (*), отличаются от реального аспекта в пользу кратности вертикальной стороны шестнадцати, но обычно это отклонение не превышает 2-5 пикселей, слабо заметно глазу и легко выравнивается проигрывателями.