Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #97, ЯНВАРЬ 2007 г.

Пиратские забавы

Крис Касперски

Хакер, номер #097, стр. 040

Как правильно создать DVD-Rip своими руками

«Продолжение статьи на «Службе у Капитана Флинта». Ищи ее в прошлом номере или в электронной версии на диске».

Сегодня мы продолжим углубление в тонкости ручного DVD-Rip'а, созданного по всем правилам науки, искусства и техники, который занимает минимум места, максимально совместим со всем и на который при этом приятно смотреть. Пустяковая навскидку задача оказалась не такой уж простой, а количество нюансов и тонкостей может ввести в заблуждение даже опытного рипера. Но не тебя!

В прошлый раз мы остановились на том, что создали d2v-проект, в котором описывается структура сграбленного VOB-файла, а также отделили звуковой трек (треки) от видеопотока, сделав треку так называемый demux. Теперь необходимо задать настройки сжатия видеопотока: выбрать тип кодека, оптимальные разрешение, битрейт и т.д. На выбор влияют множество обстоятельств как объективного, так и субъективного характера. Причем на автоматику здесь полагаться нельзя. Ведь не она же будет смотреть сжатый фильм! Так что дело за нами!

Шаг №6. Проверяем FPS

Находясь на закладке Ripping основного окна Gordian Knot, нажимаем кнопку «Open» и открываем ранее созданный d2v-проект. При этом на экран выпрыгнет окно предварительного просмотра, а Gordian Knot автоматически перейдет к закладке Bitrate, высвечивая в окне FPS частоту кадров, а в секции Duration расчетную продолжительность фильма.

Проверь, совпадает ли она с заявленной продолжительностью, напечатанной на DVD-коробке. Если нет, значит FPS выставлен не верно и мы получаем несинхрон звука с изображением, практически не заметный вначале, но быстро нарастающий со временем. И таких кривых рипов встречается достаточно много! У некоторых уже на середине фильма звук обгоняет изображение (или отстает) на несколько секунд, а то и минут! Естественно, никакого удовольствия от просмотра мы не получим.

К счастью, некоторые кодеки имеют опцию video delay, задающую смещение звуковой дорожки относительно видеопотока в миллисекундах. В кодеке ffdshow этот параметр можно менять налету непосредственно в процессе просмотра фильма горячими клавишами «-» и «+», но какой же геморрой постоянно их давить… Так что проблему с FPS нужно решать серьезно и сразу.

Впрочем, коробкам верить нельзя. Часто там пишут совсем не то, да и в любом случае округляют длительность до минут, а ведь видео и звук должны быть синхронизованы с точностью до долей секунды! Самое простое, что можно сделать, — воткнуть DVD в плеер и посмотреть реальную продолжительность. Если она отличается от указанной в Duration больше чем на секунду, то это уже косяк. Чтобы его исправить, нажимаем на «Close» и повторяем создание d2v-проекта еще раз, внимательно следуя рекомендациям, данным в предыдущей статье. Если FPS равен 29,970 и у тебя помечено, что необходимо сделать обратное IVTC-преобразование, меняем FPS на 29,976. При этом не обращаем внимания на то, что продолжительность не изменилась, это глюк Gordian Knot'а. Рассчитать реальную продолжительность можно, умножив поле seconds на 29,970/29,976. А если закрыть проект, поменять FPS непосредственно в самом d2v-файле (благо он текстовой) и сразу открыть его вновь, то Gordian Knot рассчитает продолжительность автоматически.

К слову сказать, из доступности полей Duration на редактирование еще ничего не следует. Они носят чисто информационный характер, и их прямое изменение абсолютно ни на что не влияет.

Шаг №7. Выбор правильного кодека и контейнера

Кодек DivX, долгое время остававшийся неофициальным народным стандартом, сейчас испытывает сильное давление со стороны конкурентов, у которых явных преимуществ намного меньше, чем яростных поклонников. Чтобы там ни писали разные журналы и ни показывали независимые тесты, ощутимого выигрыша ни в качестве, ни в степени сжатия на среднестатистическом видеоматериале не наблюдается. Какой-то фильм лучше сжимается одним кодеком, какой-то — другим, но если проблем с просмотром DivX ни у кого не возникает, то поддержка остальных кодеков только появляется из-за горизонта. Передавая другу фильм, сжатый революционным кодеком, мы вынуждены передавать и сам кодек, помещая его на диск (а ведь он место занимает!) и при этом рискуя здорово огрести в случае каких-нибудь конфликтов. Далеко не все пользователи любят устанавливать в систему новые программы, тем более кодеки. Стационарные плееры — это вообще тема. Новый кодек на них не установишь и прошивку просто так не зальешь. И не нужно говорить, что нормальные хакеры смотрят фильмы только на компьютере, а все остальные — не мужики. Рипер должен думать не только о себе, иначе это не рипер, а кал.

Gordian Knot 0.35 поддерживает следующие кодеки: DivX 3.11 (низкое качество, но высокая совместимость), DivX5 (отличное качество, хорошая совместимость), XviD (отличное качество, совместимость хуже, чем у DivX5), x265 (отличное качество, будущий индустриальный стандарт, но в настоящий момент играется далеко не везде). Как видно, для рипа лучше всего подходит DivX5, который мы и будем использовать. Несогласные могут выбирать любой другой кодек — никто же не запрещает!

Теперь определимся с выбором контейнера, за который отвечает раздел container, предлагающий меню из трех блюд: avi, ogm и mkv. Контейнер — это то, во что будут складированы видеопоток, звуковой трек (треки), субтитры (опционально) служебная информация, необходимая для осуществления перемотки, синхронизации, и т.д. О преимуществах разных нестандартных контейнеров говорить можно долго, но все они нивелируются одним-единственным недостатком - нестандартностью. В целях совместимости лучше всего всегда выбирать avi. Любителей поэкспериментировать со всем новым и нестандартным было бы полезно изолировать от общества. Сколько раз так бывало: добытый файл отказывается воспроизводиться, и черт его знает, что ему надо и откуда это качать.

Шаг №8. Битрейт и размер

Битрейт (bitrate) определяет удельную информационную емкость потока и выражается в битах в секунду. Чем битрейт выше, тем выше качество изображения, но тем больший размер занимает видеофайл и тем большей процессорной мощности он требует для своей обработки. Поэтому в погоне за битрейтом важно не переборщить! На низких битрейтах качество изображения быстро растет вместе с битрейтом, но затем достигает насыщения, и разница становится совершенно незаметной. В этом случае при дальнейшем увеличении битрейта качество не только не увеличивается, но даже начинает падать. Если привод не успевает поставлять данные (а процессор — их распаковывать), умные кодеки выкидывают кадры (и мы теряем информацию о фазах движения), а глупые дико тормозят, сотрясаясь в конвульсиях и зачастую теряя синхронизацию звука с изображением. Поэтому выбор правильного битрейта — гораздо более сложное дело, чем может показаться вначале.

Битрейт бывает постоянным (constant) и динамическим (average). В последнем случае кодек может опускать битрейт на статических сценах (сжимающихся лучше всех) и поднимать его, когда экран приходит в движение и ничего не сжимается. Однако сам по себе битрейт - еще не показатель качества, поскольку он не учитывает размер изображения и частоту кадров, варьирующихся в широких пределах. Более объективной характеристикой качества является соотношение bits/(pixel*frame).

Если это соотношение ниже 0,15, фильм превращается в полный отстой; фильмы, ужатые до ~0,20, уже смотрятся без особого отвращения и умещаются на один CD; при ужатии до ~0,3 качество фильма практически не теряется, и он занимает два CD (три CD, если фильм длится свыше двух часов); более 0,35 имеет смысл выставлять только эстетам или при просмотре на большом экране. Правда, со всем этим можно легко поспорить. Ориентировочное значение bits/(pixel*frame) приведено в одноименной секции, однако рассчитано оно без учета степени сжимаемости фильма, и верить ему нельзя до тех пор, пока не будет проведен тест сжимаемости, который мы опишем чуть позже. А пока сосредоточим свое внимание на секции Mode, предлагающей выбор между Calculate Average Bitrate и Calculate Avi File Size.

При выборе Calculate Average Bitrate Gordian Knot позволит нам задавать размер avi-файла, образующегося после сжатия, что очень удобно, если фильм планируется записывать на один, два или даже три CD. Под этот размер и подгоняется битрейт, который часто получается неоправданно большим, но какой смыл сокращать его, освобождая на CD, положим, 100 Мб, если выложить туда все равно больше ничего не удастся? Не, можно, конечно, забить оставшееся пространство клипами или mp3, но в коллекции из десятка таких CD уже черт ногу сломит, пока найдет нужный файл. Напротив, если фильмы планируется хранить на HDD или выкладывать в сеть, то избыточный битрейт действительно ни к чему и разумнее ориентироваться не на размер, а на соотношение bits/(pixel*frame).

Начнем с режима Calculate Average Bitrate: в секции Total Size выбираем необходимый размер, задавая его либо в мегабайтах, либо в количестве CD/DVD. Если CD больше одного, то avi-файл можно сразу разбить путем взведения галочки Splint final file into CDs, в противном случае это придется делать вручную в видеоредакторе. Поскольку, помимо видео, в avi входит еще и звуковая дорожка, ее размер должен как-то учитываться при калькуляции. Это несложно. Выбираем в секции Audio A ранее отделенный от VOB'а трек, записанный как правило в AC3-формате, или указываем желаемый битрейт, если мы собираемся конвертировать его в mp3. При желании сделать диск с двумя звуковыми треками, выбираем следующий файл в секции Audio B (но помни, что стандартный Windows Media Player поддерживает только avi с одной дорожкой!). В секции Files задается размер дополнительных файлов, выкладываемых на CD (например, нестандартных кодеков, readme и т.д.). Наконец, в секции Interleaving & AVI-Overhead указывается тип звуковой дорожки и количество кадров, через которые она синхронизируется с видео (только для AC3). По умолчанию это значение равно единице, и лучше его не менять, чтобы потом не разводить ластами.

В режиме Calculate Avi File Size секция выбора количества CD гаснет, зато становится возможным выбирать желаемый битрейт. Но прежде чем его выбирать, необходимо обрезать изображение (чем мы в самом скором будущем и займемся), а также провести тест сжимаемости фильма. Секции Audio A/B, Interleaving & AVI-Overhead и Files в этом режиме теряют смысл, хотя остаются полезными, если мы хотим узнать, какой же все-таки получится размер у финального видеофайла. Важно понять, что реального подключения звуковой дорожки при этом не происходит и всего лишь учитывается ее размер!

Шаг №9. Выставляем ресайз и аспект

Разрешение и аспект (aspect ratio – соотношение ширины изображения к его высоте), напечатанные на коробке с DVD, далеко не всегда соответствуют действительности. Допустим, мы имеем дело с PAL'овским видеоматериалом, записанным с разрешением 720х576 и аспектом 16:9. Собственно говоря, аспект (по стандарту) может быть либо 4:3 (обычный фильм), либо 16:9 (широкоформатный фильм). Простой подсчет показывает, что 720/576 == 1,25, и это совсем не соответствует 16/9 == 1,78. К тому же сверху и снизу изображения присутствуют черные полосы, которые требуют для своего хранения место и раздражают при просмотре фильма в оконном (не полноэкранном) режиме, поэтому лучше всего их будет обрезать.

Переходим к закладке Resolution, где в секции Input Resolution выбираем тип видеоматериала, с которым мы работаем (PAL или NTSC) и который определяется при подготовке d2v-проекта, но, к сожалению, не устанавливается автоматически (точнее, устанавливается, но не всегда). В окне Input Pixel Aspect Ratio выводим аспект, также определенный при подготовке d2v-проекта. Неверный выбор приведет к нарушению пропорций, портящему все удовольствие от просмотра (хотя почти все плееры позволяют менять аспект, но… Увы, не без потери скорости и качества).

Теперь, когда исходные параметры заданы, самое время приступать к обрезке. Нажимаем кнопку «Auto Crop» и даем программе обрезать все ненужное самостоятельно. В данном случае она оттяпывает 74 пикселя с каждой стороны по вертикали и 4 пикселя по горизонтали. В отсутствии косяков нам поможет убедиться предварительный просмотр. Нажимаем «Play» и смотрим, не осталось ли где-нибудь темных полос, отчетливо видных на светлых сценах, и не было ли оттяпано лишнего. Вращая ползунки мышью, уменьшаем количество отрезанных пикселей в секции Crop до появления черной полосы и тут же увеличиваем их вновь до полного ее исчезновения. В 99% случаев автоматика не врет и даже к умному Smart-Crop'у прибегать нет никакой необходимости.

По умолчанию Gordian Knot уменьшает размер изображения до 640 пикселей по горизонтали, вычисляя размер по вертикали и при этом исходя из аспекта, реального размера (после обрезки) и H-модуля.

Начнем с размера. Значение в 640 пикселей - это ровно половина от 1280 — наиболее распространенного на сегодняшний день разрешения, позволяющего растягивать изображение во всю ширину с максимальной производительностью и минимальными потерями качества. Тем не менее, при урезании исходных 720 пикселей до 640, потеря качества все-таки происходит, причем весьма значительная. Не лучше ли вообще отказаться от ресайза, сжимая изображение в том разрешении, в котором оно было записано? А что! Некоторые так и поступают, но это не лучшее решение.

Контраргументы следующие: человеческий глаз при нормальном расстоянии от монитора отдельные пиксели не различает, так зачем их хранить с таким разрешением, если все равно потом придется делать растяжку до 1280? А 720 пикселей (точнее, в данном случае 712 оставшихся после оттяпывания черных полос) никак не кратно 1280, следовательно, избежать потери качества все равно не удастся. Так не разумнее ли для достижения гармонии обрезать изображение до сжатия, отвоевав некоторое количество дискового пространства, за счет которого можно увеличить битрейт?!

Вообще-то, исходное разрешение на размер финального файла влияет не так уж значительно, и уменьшение изображения вдвое сокращает файл в среднем на 30% (что совсем неудивительно, так как степень сжимаемости падает с разрешением), поэтому отступать от размера в 640 пикселей стоит, только когда фильм планируется смотреть на мониторах с нестандартным разрешением (например, 1152х864). Рипы с шириной более 640 пикселей сильно раздражают, поскольку, при увеличении размеров изображения вдвое, на стандартный экран они уже не помещаются, и приходится либо терять края, либо делать растяжку. Ни качества, ни скорости это не добавляет.

Самое главное, что ширина должна делиться нацело на 32 (W-модуль), иначе некоторые кодеки/проигрыватели либо вообще не смогут проигрывать фильм, либо начнут тормозить, что на медленных машинах приводит к необходимости выброса кадров. Высота изображения должна быть кратна 16 (H-модуль), из чего с неизбежностью следует тот малоприятный факт, что после обрезки изображения скорее всего нарушится аспект, поскольку его придется выравнивать по границе 16 пикселей за счет растяжки. Ошибки аспекта отображаются в окне Aspect Error, и чем они меньше (по модулю), тем лучше. Если отклонение составляет более 3,5%, это окно загорается злобным красным цветом, сигнализирующим о том, что смотреть такой фильм будет не очень приятно. Поэтому поговорим о том, как бороться с искажениями. Делать это можно двумя путями: либо меняя разрешение (но, как уже говорилось, от 640 пикселей лучше не отступать!), либо обрезая черные полосы по краям больше, чем это необходимо. Уже несколько пикселей с каждой стороны способы значительно повлиять на ситуацию, при этом практически без потерь значимой информации. Правда если перестараться, то легко можно обрезать затылки у всех героев по самые глаза, и такой уродский рип будет никому не нужен.

Шаг №10. Тест сжимаемости

На первых порах тест сжимаемости можно не проводить, особенно если фильм предполагается записывать на целое число CD, когда битрейт можно брать с запасом. Лишь при точной подгонке соотношения bits/(pixel*frame) имеет смысл тратить время на тест сжимаемости, чтобы определить, до какого размера можно жать avi-файл, не сильно проигрывая в качестве.

Покончив с обрезкой и определившись с разрешением, выбираем желаемый битрейт в режиме Calculate Avi File Size, подгоняя оценочное значение bits/(pixel*frame) до требуемой величины, после чего давим на кнопку «Save & Encode» в окне предварительного просмотра. На экране тут же появляется диалог «Save .avs», содержащий среди прочего секцию Compressibility Check. Несмотря на то что по умолчанию она выставлена в «Off», переводим ее в «Use» и указываем, какой процент от исходного фильма мы будем тестировать. По умолчанию берется 5%, что обычно бывает достаточно. Однако если фильм крайне неоднороден по своей структуре (например, состоит преимущественно из статичных сцен в начале и динамичных в конце), это значение лучше увеличить, иначе полученные данные окажутся далеки от реальности.

Нажимаем кнопку «Now» и даем компьютеру некоторое время поработать. По завершении тестирования в окне Compressibility Test, расположенном в секции bits/(pixel*frame), появится истинное значение bits/(pixel*frame), а слева от него — отклонение от оценочного значения в процентах. Подкручивая битрейт (разрешение), уменьшаем отклонение до разумного минимума или оставляем все как есть, если результат нас устраивает.

Шаг №11. Подготовка к сжатию

Можно, конечно, выполнить еще некоторые приготовления. Например, нажать «Set Credits Starts», установив время начала титров, которые можно кодировать с более низким битрейтом. Но выигрыш от этого получается совсем небольшой, а вот впечатление от рипа портит изрядно, ведь кое-кто титры все-таки читает, так что к этому стоит прибегать только в случае острой нехватки пространства. Поэтому займемся лучше приготовлениями к сжатию.

Для этого еще раз нажимаем кнопку «Save & Encode», чтобы открыть диалог «Save .avs», и смотрим на появившиеся секции. Расскажу о каждой по порядку.

Секция Resizing позволяет подогнать разрешение под формат VCD/SVCD, но никакого смысла в этом нет, так что оставляем разрешение как есть, то есть в Selected Output Resolution.

Секция Noise Filer позволяет подмешать в изображение некоторое количества шума, служащего своеобразным фильтром и улучшающего качество паршивого исходного материала (увы, такой материал не редкость даже на лицензионных DVD), однако в подавляющем большинстве случаев шум только мешает.

Секция Subtitles служит для вставки субтитров в видеопоток и нафиг не нужна. Субтитры получаются неотключаемыми и сильно ухудшают сжимаемость файла. Лучше подключать текстовые субтитры в кодеке типа ffdshow или самом плеере типа BSPlayer.

Секция Resize filter задает алгоритм для изменения разрешения с родного на 640xXXX. При увеличении размера (если вдруг кому это приспичит) следует использовать bilinear-фильтр, при уменьшении — все остальные. Какие именно — определяется битрейтом и вкусом. Лично мне нравится Lanczos, другие же предпочитают бикубические фильтры. Между soft (мягкий) и sharp (резкий) разница довольно значительна, и лишняя резкость сценам с плавными переходами от света к тени только вредит. Впрочем, это опять-таки дело вкуса.

Секция Field Operation используется лишь в том случае, если необходимо выполнить обратное IVTC-преобразование, при этом мне больше всех нравится Smart Bob, другие же рекомендуют TomsMoComp. Что поделаешь! Сколько людей, столько и вкусов.

Покончив с настройками, нажимаем «Preview» для предварительно просмотра видео (но реально мы увидим только аспект и обрезку, ни фильтры, ни что-то другое не окажет на предварительный просмотр никакого влияния) и, убедившись, что нигде нет косяков, давим «Save & Encode», подтверждая запрос о желании начать сжатие немедленно.

Шаг №12. Сжатие

Мы будем использовать двухпроходное сжатие, выбираемое Gordian Knot'ом по умолчанию. В этом случае в первом проходе собственно никакого сжатия не осуществляется, а лишь определяется степень сжимаемости каждого из кадров. Полученные данные пишутся в лог, позволяющий во втором проходе распределить битрейт по файлу с учетом реальных потребностей, то есть забирать битрейт у статичных сцен, отдавая его туда, где он конкретно нужен.

Однопроходное сжатие вдвое быстрее, но принципиально неспособно обеспечить высокое качество при минимальном размере файла. Двухпроходному режиму соответствует радиокнопка «Multi-Pass», позволяющая задавать не только 2, но и 3, и даже 4 прохода (количество которых задается боксе Number of passes), но по большому счету это пустая трата времени, совершенно не стоящая мизерного улучшения качества.

Давим на кнопку «First Pass» и подкручиваем настройки кодека по своему усмотрению. Настройки — это все! От ни них зависит скорость, степень, качество сжатия, а также совместимость с различными проигрывателями. На эту тему написано много статей, поставлено множество экспериментов, но начинающим тут делать нечего, это однозначно и обсуждению не подлежит! Чтобы не напортачить, лучше всего использовать «сертифицированные профили» с уже готовыми настройками от самих разработчиков кодека, среди которых наилучшее (разумное) качество обеспечивает Home Theater.

Бокс Encode Performance позволяет выбрать желаемый компромисс между качеством, степенью и скоростью сжатия. Кажется, что скорость сжатия – это не такой уж важный критерий, но если в Standard mode на 3 ГГц P-4 обычный полнометражный фильм сжимается в среднем за полтора часа, то на том же оборудовании slow mode отнимает до четырех часов! На старых компьютерах разрыв еще более заметен, и производительность рипа «один фильм за ночь» вряд ли кого-то может устроить. В идеале, конечно, для сжатия нужно приобрести отдельный компьютер (лично я так и поступил), но мир, в котором мы живем, далек от идеала, так что… лучше поговорим о панели управления кодеком.

Ползунок «Bitrate» устанавливается Gordian Knot'ом на нужную позицию автоматически (исходя из заданных ранее настроек) и трогать его нужно только тогда, когда Gordian Knot глючит и устанавливает его неправильно (а такое с ним довольно часто случается).

Кнопка «Nth Pass» задает настройки сжатия для второго прохода, и параметры DivX'а здесь должны быть такие же, как и в первом, иначе на выходе получится непонятно что и все наши усилия пойдут насмарку.

Закладки Audio 1/2 подключают одну или две звуковые дорожки, выбираемые кнопкой «Select». Для подключения звука как есть (а есть он, обычно, в формате AC3) переводим радиокнопку в положение «Just Mux». При этом не забываем, что кодек AC3 имеется не у всех и его придется класть на диск (из бесплатных AC3-кодеков можно порекомендовать ffdshow) или пережимать в mp3, выбрав постоянный или динамический битрейт (уж тут подходящий кодек окажется у всех наверняка).

Покончив со звуком, возвращаемся к первой закладке (с параметрами кодека) и жмем кнопку «Add Job To Encoding Query» (добавить задачу в очередь сжатия). Нас спрашивают: хотим ли мы начать работу немедленно. Что за вопрос! Конечно хотим!

Собственно, в самом сжатии ничего интересного нет. В свернутом окне VirtualDubMod'а отображается процентаж, который при развороте окна исчезает, зато появляется возможность залезть в статус и, отрыв вкладку «Video», понаблюдать, как меняется степень сжимаемости фреймов. Остается только ждать.

Заключение

Прочитав все это, можно понять, какое это непростое дело — правильный рип. А ведь мы рассмотрели только основные моменты, рассказав о важнейших пунктах меню Gordian Knot, который есть не что иное, как Front End - графическая «морда», скрывающая от пользователя массу более тонких настроек управляемых им утилит, полное описание которых заняло бы увесистый том.

Тем не менее, первый шаг в мир риперства уже совершен. Если исходный DVD был не косой, то никаких проблем возникнуть не должно, ну а если они все-таки возникли, просто отложи диск на полку до лучших времен и возьми другой. DVD-диски (как лицензионные, так и пиратские) зачастую создаются с грубейшими нарушениями всех стандартов. Они могут нормально воспроизводиться на DVD-плеере, но сильно косячить в финальном avi. И никакая это не защита, как некоторые говорят (хотя и защиты встречаются тоже), а просто кривизна рук производителя. Универсальных советов по выходу из ситуации, к сожалению, дать невозможно, во всяком случае, не в этот раз…

ВИДЕО

Видеоролик на нашем диске будет отличным подспорьем для изучения материала. Теперь ты можешь не только прочитать, но и посмотреть, как создаются правильные DVD-RIP’ы

Содержание
ttfb: 10.915040969849 ms