V1 24-Jun-2004 - вроде исправлены все линки на софт
V0 04-Jun-2004
Непреодолимые ограничения описанного процесса
OS - Windows NT 4.0, Windows 2000, Windows 98, Windows XP
Установка необходимых программ
Ссылки на упомянутые здесь программы содержат некоторые минимальные
варианты установки, помещённые в виде отдельных файлов на одном сервере
с этой документацией. Если Вы воспользуетесь wget или teleport с
соответствующими ключами, Вы выкачаете не только эту документацию,
но и весь необходимый софт.
Версии практически всех устанавливаемых программ не принципиальны.
Если Вы установите более позднюю, то, как правило, все утверждения данного
текста для неё будут верны.
Кодеки
Всё, что Вам требуется для получения результата - один видеокодек
и один аудиокодек.
Звук: Я использую
MP3 Pro classic CBR codec
для большинства применений, так как реальная разница в размере
между VBR и CBR упакованным звуком теряется на фоне размеров
видеофайла. Если же ставится задача сохранить максимальное
качество звука, я предпочитаю оставить оригинальный AC3 звук
без перепаковки. Конечно, у Вас на эту тему может быть другое
мнение. Выбирайте сами.
Однако помните, что VBR-кодированный звук замечательно синхронизирован
с картинкой только при непрерывном проигрывании потока. Если кому-то
понадобится вырезать кусочек фильма или отмотать участок при проигрывании
назад, он обнаружит рассинхронизацию, с которой ничего не сможет сделать.
Кроме того, применяя VBR, Вам придётся провести заметно более сложную
процедуру для разделения AVI файла на части, если Вы делаете 2-хдисковый
вариант. Исходя из этого, я РЕКОМЕНДУЮ не использовать VBR.
Утилиты командной строки
Никакой установки не требуется, просто распакуйте их в каталог,
находящийся в PATH.
Установка заключается в создании каталога вида
C:\Program Files\PGMNAME\, распаковку
ZIP архива С ПОДКАТАЛОГАМИ в этот каталог и создании
удобных Вам шорткатов на исполняемый файл программы
Сначала просто попробуйте скопировать фйлы с DVD на винт. Если процесс
споткнулся на первом же большом файле, воспользуйтесь программой
DVD Decrypter и скопируйте файлы на винчестер через него
(например, в каталог D:\FILM\). Выберите только файлы фильма,
как правило, это самый большой по размеру комплект файлов,
имена которых начинаются с VTS_NN. Вы должны получить файлы:
D:\FILM\VIDEO_TS\vts_01_00.ifo
D:\FILM\VIDEO_TS\vts_01_00.vob
D:\FILM\VIDEO_TS\vts_01_01.vob
D:\FILM\VIDEO_TS\vts_01_02.vob
D:\FILM\VIDEO_TS\vts_01_03.vob
D:\FILM\VIDEO_TS\vts_01_04.vob
это и есть результат данного этапа.
Этап "Graphic Subtitles"
Если на DVD присутствуют английские субтитры и субтитры языка,
который установлен у Вас в системе, то я настоятельно рекомендую
превратить их в текстовые файлы (Этап Text Subtitles). Если же на DVD
находятся субтитры языков, отображение текста которых затруднено или
невозможно в Вашей стране, правильным будет сохранить такие
графические субтитры в формате, проигрываемом DirectVobSub
фильтром.
Сделать это следует до упаковки видео, чтобы при вычислении необходимого
битрейта видео учесть размер довольно больших по размеру бинарных файлов
графических субтитров.
Запустите шорткат VobSub Configure.lnk из пакета VobSub:
Нажмите кнопку Open, выберите тип открываемых файлов "ifo and vobs"
Откройте D:\FILM\VIDEO_TS\vts_01_00.ifo
Выберите каталог, в который будут писаться выходные файлы
Верхней парой кнопочек "<--" и "-->" выберите по одному
потоку субтитров каждого языка (часто их там по два,
картинки совершенно идентичны)
По окончании процесса переименуйте файлы
vts_01_0.sub и vts_01_0.idx в filmname.sub и filmname.idx
файлы filmname.sub и filmname.idx - результат этого этапа.
Этап "Text Subtitles"
Запустите Subripper
Откройте D:\FILM\VIDEO_TS\vts_01_00.ifo, выберите дорожку, которую хотите
распознавать. Matrix File: New File; Start new text file;...
Запустите процесс (процесс интерактивный, в начале Вас будут
спрашивать о каждой букве или паре букв, потом всё реже и реже).
Заметьте, что русскую букву "ы" и "Ы" программа рассматривает как
две отдельных буквы. Следует ввести для первой мягкий знак
(соответствующего размера), для второй - например, символ
вертикальной черты. Позднее в текстовом редакторе Вы сделаете
поиск-замену.
Заметьте, что если субтитры на языке, который не установлен в системе,
то у Вас будут проблемы с вводом букв национального алфавита.
Пока Вы можете отложить обработку субтитров в сторону
до этапа `VideoPack" и возвращаться по мере появления свободного
времени
Запишите результат в формате .srt
маленькие текстовые файлы russian.srt, english.srt
- результат этого этапа.
Этап "DVD2AVI"
Запустите DVD2AVI, откройте файл D:\FILM\VIDEO_TS\vts_01_01.vob
(ЗАМЕТЬТЕ! _01.VOB, НЕ _00.IFO и НЕ _00.VOB). Вы увидите картинку:
Нажмите OK.
Попробуйте посмотреть куски фильма, перемещая движок
внизу слева направо.
Выберите кадр с наиболее чёткими чёрными границами и выберите в меню
Video -> Clip&Resize:
Пометьте чекбокс "On" в интерфейсе Clip&Resize и движками
обрежьте чёрные поля:
Запишите получившиеся значения (left 8, top 60, Width 704, Height 360)
как 8,60,704,360 и сохраните эти числа для этапа
"Build Script"
ВЫКЛЮЧИТЕ чекбокс в интерфейсе Clip&Resize
Выберите в меню Audio->Dolby Digital->Demux All tracks
Выберите в меню Audio->Mpeg Audio->Demux All tracks
Выберите в меню Video->Field Operation->None
Выберите в меню Video->Color Space->YUV 4:2:2
Выберите в меню Option->Process Priority->Low
Выберите в меню File->Save Project и назовите файл FILM.D2V
Программа читает входные файлы. Это не процесс упаковки. Все входные файлы
прочитываются, из них вытаскиваются звуковые потоки, и записывается
табличка смещений и параметров в текстовый файл.
по состоянию FINISHED на статусном окне закройте DVD2AVI
большие двоичные файлы T0...*.AC3,
маленький текстовый файл film.d2v - результаты этого этапа.
Этап "Build Script"
Общие замечания
Основной принцип работы AviSynth заключается в некотором универсальном
методе обращения к видеоинформации, помещённой в .vob и в других файлах.
VirtualDub или avs2avi открывают .avs файл так, как будто это обычный
видеофайл. На самом деле они передают его в AviSynth.dll, а от неё уже
получают распакованные кадры.
Если у Вас ещё нет опыта в написании скриптов - начните с
создания текстового файла FILM.AVS и поместите его в тот же каталог,
где лежит FILM.D2V. Содержимое файла FILM.AVS:
Если Вы получили сообщение об ошибке, перечитайте
документацию на AviSynth и исправьте скрипт.
Файл открыт. Теперь нажмите стрелку вправо и увидите первый кадр.
Переместите движок куда-нибудь в середину.
Что делать с чересстрочной развёрткой?
Общие замечания по IVTC
Выберите сцену с движением (лучше в одном направлении) и достаточно чёткими
краями. Просмотрите её покадрово кнопкой "стрелка вправо". Если Вы видите
ХОТЯ БЫ ЧАСТЬ кадров "расчёсанными", Вам следует совершить над материалом
процесс "Inverse Telecine", дабы получить приемлемый для просмотра результат.
Если Вы плохо представляете, что это такое, сначала
прочтите эту документацию
Простейший путь совершить IVTC процесс - использовать плагин Decomb
Вот пример изменений в FILM.AVS (добавлено,
пример NTSC DVD):
Telecide(post=false,guide=2,blend=false)
Decimate(cycle=5)
После любых вносимых в скрипт изменений следует перезагружать его
в VirtualDub, чтобы увидеть результат.
Прочтите документацию на Decomb, дабы понимать, что Вы делаете и какие
параметры в функциях Telecide и Decimate следует ставить.
Наиболее стандартные ситуации:
Таблица установок Decomb
fps на DVD
итоговый fps
нужные строки в скрипте .AVS
DVD структуры NTSC, сделанный с FILM оригинала
Вы видите 2 прогрессивных кадра, затем 3 "расчёсанных"
ИЛИ 3 прогрессивных кадра, затем 2 "расчёсанных". Период 5 кадров
DVD структуры PAL, сделанный из FILM оригинала
дублированием 1 из 24-х кадров
25
24
Telecide(guide=1)
Decimate(cycle=25)
Сложные случаи. Ручная работа.
Некоторые сложные и повреждённые потоки не могут быть корректно
восстановлены плагином Decomb. Если после применения строк из
вышеприведённой таблички Вы не смогли получить картинку без
"расчёсок" или "двоящихся контуров", следует более внимательно
рассмотреть, не изуродована ли оригинальная картинка.
Закомментируйте все Telecide-Decimate строки. Вставьте строку:
SeparateFields()
в конец файла FILM.AVS.
Перезагрузите файл в VirtualDub и просмотрите внимательно
на получившиеся картинки. Сейчас Вы видите _поля_ или полукадры
по отдельности. Если Вы видите, что хотя бы часть таких полукадров
"расчёсана" или "двоится", - это испорчен при изготовлении
DVD сам доставшийся Вам материал, и нет никакого способа это исправить.
Правда, если испорчены таким образом НЕ ВСЕ картинки, Вы можете
попытаться отобрать только нормальные и пересобрать видеопоток из них,
выкинув испорченное. Для этого понадобится функция SelectEvery() и
много терпения.
Вот такой пример для обработки DVD, построенном из FILM оригинала
путём вставки дополнительного пятого поля, сделанного процедурой "blend"
из двух его "соседей". Хотя Decomb по большей части ловит такие поля,
из-за повышенного интеллекта при сравнении он порой выкидывает "не то"
поле на практически статичной сцене.
Что приводит к нарушению порядка полей и подёргиванию (bobbing)
картинки вверх и вниз. Данный же простой скрипт восстанавливает
исходный поток, выкидывая порченые кадры без дополнительных размышлений.
Итогом данного пункта должно стать нормальное, без рывков, движение
и отсутствие артефактов "интерлейсинга" на всех кадрах фильма.
Корректировка соотношения сторон кадра
Основная информация:
Пиксел на компьютере практически всегда квадратен, 1:1 aspect ratio.
Пиксел на телевизоре практически всегда НЕ квадратен.
Типично TV пиксел имеет отношение сторон 4:3.
Пиксел DVD/MPEG2 потока МОЖЕТ обладать практически любым
отношением сторон из списка: 1:1, 4:3, 16:9, 2.23:1.
ОБЫЧНО "Aspect Ratio", обозначенное на обложке DVD,
НЕ есть соотношение сторон пиксела, а есть отношение между
шириной и высотой экрана, на котором, по идее, следует показывать
оное кино. Как показывает опыт, это число ни о чём не говорит и
не поможет Вам на этом этапе (а скорее помешает).
Обычно DVD файлы содержат верную информацию об отношении сторон
пикселов. Однако порой эта информация неверна. Поэтому я всегда проверяю
отношение сторон пикселов и преобразую картинку в состояние
"пикселы квадратные".
Методика (с применением VirtualDub):
Находим кадр, в котором присутствует объект с заведомо известным
отношением сторон. Колесо, видимое с оси, сфера, квадрат. Края должны
быть достаточно чёткими. Размер объекта должен составлять хотя бы 20%
высоты кадра. Запоминаем номер кадра.
Нажимаем Ctrl-1, тем самым копируя кадр в буфер обмена.
Запускаем любой удобный граф редактор растровых картинок
и вставляем в него из Буфера Обмена.
Измеряем в пикселах высоту и ширину получившегося
изображения объекта.
Например, измеренный размер изображения Солнца 220 x 221 пиксел не
требует коррекции Aspect Ratio. Если же мы получили изображение Солнца
размером W x H = 160 х 180 пикселов, нам следует уменьшить высоту
картинки, умножив её на коэффициент 160/180. Здесь стоит учитывать,
что неточность определения правильной высоты картинки в пикселах
примерно равна отношению полной высоты картинки к высоте измеренного
объекта. Если в данном примере Вы при измерении объекта ошиблись на
1 пиксел, то в размере картинки ошибка составит 2 пиксела.
Заметьте, что коричневые числа 8,60,704,360
- это те самые значения, которые Вы сохранили на этапе "DVD2AVI", и они
предназначены для корректного обрезания краёв картинки.
Синие числа 704,320 - есть измерения картинки
после resize. Если вместо них вы поставите "коричневые" 704,360, ресайза
не будет, будет только обрезание.
Выбор конечного размера кадра
На самом деле для большинства видеоматериалов не так уж важен
точный размер сделанной Вами картинки. Да, чем больше пикселов
приходится на одну и ту же часть картинки, тем чётче изображение
тонких деталей. Поэтому я предпочитаю сохранять настолько большое
разрешение картинки, насколько это возможно. Однако большая картинка
требует большего битрейта и большей мощности процессора при воспроизведении.
Как же выбрать верные величины? Прежде всего вспомним, что мы хотим
поместить фильм на малое количество 700-мегабайтных болванок. Это означает,
что 1-1.5 часа видео должны поместиться в 570-600М. Таким образом,
диапазон привлекательного битрейта составляет примерно 600-1000кбпс.
Например, мы насчитали 800к битрейт для 1.5 часового фильма.
Отмечу, что нет НИКАКОГО резона применять битрейт выше 1300 на DVD
материале.
Возьмём 1 секунду - это 24 картинки по (704 х 320) пикселов. Что
примерно равно 5 мегапикселов в секунду. Поделим 800к на 5М и получим
0.16 бит на пискел.
Есть эмпирическое правило, по которому значение 0.2 бита на пиксел
достаточно для большинства фильмов, пакуемых в мпег4. В нашем случае
для того, чтобы получить 0.2 вместо 0.16, надо или поднять битрейт
до 1000, или уменьшить размер картинки до 4 мегапикселов.
Мой опыт показывает, что при применении кодека XviD разумная величина
этого параметра составляет 0.11-0.12 для чёрно-белых и 0.14-0.16 для
цветных фильмов.
Далее, все мпег4 кодеки разбивают картинку на блоки размером 32 х 32
пиксела. В случае НЕкратного 32-м размеру кадра некоторые кодеки дают
"краевые эффекты" самого порой неприятного вида, заметность которых
максимальна на мультипликационном материале. Для примера см. картинку
справа от этого абзаца. На ней изображены кусочки трёх последовательных
кадров с титров фильма "Kikujiro no natsu", в котором розовый объект
движется по равномерно окрашенному фону из-под края экрана направо.
Кодек - DivX 5.11 Pro, при ЛЮБОМ качестве упаковки вылазящий объект
оставляет за собой "кильватерный след". Формат картинки - 720*304 пиксела.
При сведении обоих измерений к кратным 32 значениям дефект пропал.
Поэтому имеет смысл откорректировать ширину и высоту так, чтобы они
были кратны 32. В нашем случае проще всего уменьшить итоговую ширину
до 696 пикселов, частично распределив это уменьшение на стадии
обрезания и масштабирования. Итак последняя строка нашего примера:
BicubicResize(696,320,0,0.75,10,60,700,360)
Этап "VideoPack" упаковки видео
Замечание. Почему я не использую VirtualDubMod для этого шага?
В нём есть обработчик ошибок, который интерпретирует таймауты, порождённые
обработкой картинки в AviSynth как ошибки чтения:
Это наиболее долгий и процессороёмкий этап работы. Запускаем:
avs2avi film.avs video.avi -p 0 -P 2 -s codec.ini
При появлении диалога конфигурации кодека выбираем сначала первый проход,
устанавливаем его параметры, нажимаем Ok и устанавливем параметры второго
прохода кодека и нажимаем Ok.
Пока пакуется видео, можно продолжить распознавать субтитры. :)
video.avi - результат этого этапа.
Этап "SoundPack" упаковка звука
Это можно делать отдельно, на другом компе.
Для каждой нужной звуковой дорожки (T01...AC3, T02...AC3,...):
Упаковываем утилитой AC3DEC, запускаемой с командной строки:
ac3dec.exe "T01...AC3" -wav -out russian.wav и из появляющегося меню выбираем кодек MP3 и параметры.
Рекомендую при выборе битрейта звука руководствоваться следующим списком:
Полифония, симфоническая музыка, тихие звуковые эффекты - 128-160 k Stereo
Только речь, или старые фильмы, особенно если оригинал - VHS - 32k Mono
Я НЕ рекомендую ставить битрейт ниже 24k - ошибки упаковки в MP3 и
шум в паузах слишком заметны даже неискушённому слушателю, голоса актёров
становятся менее различимы.
russian.wav, japan.wav - результаты этого этапа.
Этап "VirtualDubMod"
Чтобы собрать окончательный AVI файл, запускаете VirtualDubMod.
открываете видео файл video.avi
Video -> Direct Stream Mode
Streams -> Add -> выберите russian.wav
Add -> japan.wav (если нужна ещё одна звуковая дорожка)
Выберите, какой звук будет по умолчанию, и закройте меню Streams.
Проверьте результат, нажав кнопку Play в VirtualDubMod
File -> Save as AVI
В течение довольно короткого времени файл будет записан.
Если Вы сделали более чем 1-дисковый вариант, Вам следует поделить
получившийся AVI файл на две части. Замечу, что при VBR MP3 у вас МОГУТ быть
проблемы с синхронизацией звука во второй части... Хехе.
Делить AVI файл следует непременно по КЛЮЧЕВОМУ кадру, для этого просто
перемещайтесь клавишами Shift-стрелки, следя за размером, который виден в
VirtualDubMod. Найдя правильную точку деления, нажимаете End.
Теперь у вас выделена первая часть фильма. File -> Save As AVI -> именуете
файл filmnam1.avi.
Теперь в этой же точке нажимаете Home. Если фильм делится на две части
- нажимаете Ctrl-стрелка вправо и End. теперь у вас выделена вторая часть.
File -> Save As AVI -> именуете файл filmnam2.avi.
filmname.avi или filmnam1.avi filmnam2.avi - результат этого этапа.
Этап "AVI tags"
AVI файл содержит помимо видео и аудиопотоков ряд текстовых полей.
Часть из них показываются программами-проигрывателями.
Вы сделаете хорошую работу, если внесёте в эти поля верную информацию.
Наилучшее место, где Вы можете почерпнуть сведения о фильме - база
данных IMDB.COM.
Запустите ABCAVI, откройте filmname.avi
(или сразу filmnam1.avi, filmnam2.avi) и отредактируйте:
ISBJ - Поле "Subject" в AVI Tags -> Primary Tags.
Показывается как "Clip" в Media Player. Национальные алфавиты допустимы.
Впишите сюда оригинальное название фильма. Например:
Back to the Future III
Если файлов несколько:
Back to the Future III (part 1 of 2) и так далее
ICOP - Поле "Copyright" в AVI Tags -> Primary Tags.
Показывается как "Copyright" в Media Player
Впишите название студии и короткую информацию о себе. Например:
2002 Tri Star Pictures. (DVD ripped by SQ)
ITCH - Поле "Encoded by" в AVI Tags -> Additional tags.
Впишите здесь короткий текст о себе
IMED - Поле "Medium" в AVI Tags -> Additional tags.
Впишите - с какого оригинала это делалось (DVD).
ISFT - Поле "Software" в AVI Tags -> Additional tags.
Впишите версии AviSynth, VirtualDubMod, ac3dec.
Если Вы делаете двух и более дисковый вариант, не забудьте нажимать кнопочку
"Clone tag" для каждого поля, кроме поля "Part" (в него впишите номер части).
Конечно, Вы можете заполнить и прочие поля.
Этап "SubKonv"
Если у Вас есть файлы субтитров на двух разных языках, лучший способ
сохранить их для последующего просмотра - применить различные форматы
файлов при именах, идентичных имени файла AVI. Один из файлов оставляется
в .srt формате, второй конвертится в .smi. Эти оба формата понимают и
большинство современных плееров, и ffdshow, и DirectVobSub. При этом
и те и другие субтитры можно будет выключить.
Переименуйте english.srt в filmname.srt
программой SubKonv откройте как SRT russian.srt
Convert to SAMI format
Назовите получившийся файл filmname.smi
Поместите filmname.srt и filmname.smi в один каталог с AVI
filmname.srt, filmname.smi - результаты этого этапа.
Как сделать наиболее удобно проигрываемый CD
Диск с видеоданными обязан содержать ДАННЫЕ, а не программы.
Чем большую долю оригинального DVD потока Вы сохранили, тем лучше
результат.
Пользователь выбирает программы для проигрывания видео по СВОЕМУ
вкусу, под свою операционную систему. НЕ ПЫТАЙТЕСЬ делать выбор за него.
НЕ помещайте на диск свой любимый видеоплеер, не тратьте на это место.
Не лениться!
Назовите файлы удобопонятными ASCII именами, БЕЗ применения
национальных алфавитов. Не делайте "безликих" имён типа
"videoout.avi", "track01.avi"
Создайте descript.ion - старый DOS-style, DOS-кодировки файл с
описаниями файлов
Впишите название фильма в Volume Label диска в ASCII
Отсканируйте обложку DVD, впишите, скопируйте описание фильма в файл
filmname.htm.
Список файлов на таком CD
descript.ion (Файл с однострочными описаниями файлов)
filmname.htm (Текстовая информация о фильме)
filmname.jpg (сосканированная обложка DVD)
filmname.avi (собственно фильм)
filmname.smi (русские субтитры)
filmname.srt (английские субтитры)
Файлы с используемыми в этом процессе программами и указанием версий
Меня НЕ интересуют методы работы "в одно нажатие кнопки".
Я предпочитаю устанавливать многие параметры вручную, не полагаясь на
неестественный интеллект многих программ.
Я принимаю коррективы и пожелания по данному тексту в формах:
Программа, которую ты используешь, не умеет (описание)...
Программа, которую ты используешь делает (описание)
неверным способом...
Для получения лучшего результата (описание разницы)
следует сделать (описание)... Это возможно такими-то программами...
Я ИГНОРИРУЮ неконструктивные реплики вида "Твой софт слишком старый!"
или "У меня есть кульная софтина!", или "Я знаю единственно верный способ!".
Я читал много документации на все эти темы. Не повторяйтесь. :)
Сейчас я использую в качестве кодека XviD 1.0 RC3. Я тестировал
DivX 4.12, 5.02, 5.11Pro, но не нашёл ни единой причины для их
преимущественного применения в риповании с DVD. Я не занимаюсь рипованием
с VHS, поэтому не берусь судить о том, лучше или хуже какой-либо кодек
для других применений. Мне ещё не доводилось работать с потоками формата
картинки большего, чем 720 x 576 пикселов, поэтому я не утверждаю ничего
и про HDTV и аналогичные источники.
Для обоснования применения другого кодека Вам следует предоставить:
Видеофрагмент (.VOB файл, менее 200М размером), файл .D2V и скрипт .AVS
Результат его упаковки кодеком XviD (.AVI файл, без звука)
Установки кодека, использовавшиеся для этого процесса (.vcf файлы для VirtualDub)
Результат его упаковки представляемым кодеком (.AVI файл, без звука)
Установки кодека, использовавшиеся для этого процесса (.vcf файлы для VirtualDub)