![>](style_images/2/nav_m.gif)
![]() |
NetLab · Rules · Torrent Tracker · Have a problem? · Eng/Rus |
![]() ![]() ![]() ![]() ![]() |
Welcome Guest ( Log In | Register | Validation ) | Resend Validation Email |
![]() |
|
Posted: 30-09-2006, 18:43
(post 1, #658239)
|
||
Homo Sapiens Laxus Group: Members Posts: 720 Warn:0% ![]() |
Руководство по приготовлению DVD рипов программой VirtualDub-MPEG2 и кодеком XviD. Данное руководство написано с целью ознакомить потенциальных рипперов с некоторыми общими вопросами кодирования видео и дать им простой, но достаточно качественный и эффективный инструмент для приготовления DVD рипов с помощью кодека XviD и прораммы VirtualDub-MPEG2. Автор, а также корректоры и редакторы данного руководства очень надеются, что, освоив методику кодирования, изложенную в этом пособии, вы, уважаемые новоявленные рипперы, не остановитесь на достигнутом, а обязательно перейдёте к более мощному и широкому по предоставляемым возможностям инструменту – связке Avisynth и VirtualDubMod. Данные рекомендации с успехом опробованы и хорошо себя зарекомендовали при кодировании DVD материала PAL и NTSC, как цветного, так и чёрно-белого, с прогрессивным и интерлейснутым изображением и частотой кадров 25 и 23,976 в секунду. Весьма вероятно, что при попытке кодировать иной материал (оцифровки видеокассет, TV сигнала), вы, уважаемые начинающие рипперы, столкнётесь с вопросами, ответов на которые здесь не найдёте. Пожалуйста, имейте это в виду. Уважаемые рипперы, принимавшие участие в создании руководства! К сожалению, не все ваши теоретические выкладки нашли своё отражение в окончательном варианте. Я взял на себя смелость и подвергнул их некоторой редакции для упрощения понимания излагаемого материала новичками. Надеюсь, вы с пониманием отнесётесь к этому решению. В написании руководства принимали участие: agor, - формула расчёта соотношения сторон для разных форматов и типов изображения, ресайз, частота кадров, проходы, матрицы квантования. grif - стандарт MPEG4, помощь в формировании структуры руководства в целом. valja - соотношение сторон, структура видеоряда стандарта MPEG4, типы кадров и их отличия, оптимальный выбор фильтра для ресайза изображения. Legas - идея создать руководство, ключевые кадры, зональное кодирование, цветовые пространства YV12 и RGB, тестовые кодирования, ряд общих замечаний и уточнений, выбор фильтра для ресайза изображения, настроики для совместимости со стационарными проигрывателями, web-оформление. Рыжий Тигра AKA Elic - проходы, криволинейная компрессия, ключевые кадры, цветовые пространства, происхождение артефактов при кодировании сцен с градиентом яркости, различие форматов звука, ряд общих замечаний по структуре руководства. Ночной сторож, http://forum.xvid.ru/ - b-frames, ресайз, форматы звуковых дорожек, терминология, ключевые кадры. Ещё одно лицо, http://netlab.e2k.ru/, пожелавшее остаться инкогнито: общие вопросы и принципы кодирования, существенные уточнения терминологии. Masah – претворение идеи: общее описание процесса, набор текста, скриншоты, тестовые кодирования. Этап I: сброс содержимого DVD на жёсткий диск. Запускаем DVD decrypter. Справа мы видим содержимое имеющегося DVD, снизу - лог работы. Всё, что нам необходимо для рипа - файлы с расширением *vob. Именно они содержат видеоряд (или ряды), аудиодорожки и потоки субтитров. Отмечаем их вручную или в меню "Edit" выбираем "Select main movie files". Затем проверяем выделенное и при необходимости добавляем необходимые *vob-ы вручную с нажатым ctrl. Помните, что заставки и рекламные ролики - тоже *vob-ы, но небольшого размера. Нет смысла их копировать на диск, хотя убедиться в том, что это действительно так, необходимо. В графе "Destination" можно выбрать место сохранения содержимого DVD. ![]() Кроме данного режима можно использовать режим "IFO", включив его в меню "Mode". В этом случае, если отметить чекбокс "Enable stream processing" (закладка "Stream processing"), станет доступен сброс выделенных потоков напрямую с диска. Для копирования потоков по отдельности отметьте чекбокс "Demux" и выделите каждый поток. ![]() У меня этот режим работает некорректно - происходит сброс не всех выделенных дорожек, а только видео, несмотря на отмеченные потоки. Поэтому я использую режим "File". Ещё одна настройка, которую можно использовать - установить разбиение конечного файла. Это делается в меню "Tools" - "Settings" - "File splitting" отдельно для "File mode" и Ifo mode". Если поставить "None", мы получим один большой *vob и *ifo к нему. Этого не следует делать, если планируются тестовые кодирования и понадобяться небольшие отрезки *vob-ов. ![]() Помните, что в случае сброса *vob-ов единым файлом, необходима файловая система, отличная от FAT16 и FAT32 (для Windows) на том разделе жёсткого диска, куда мы сбрасываем *vob. Нажимаем большую кнопку и после окончания операции закрываем DVD decripter. Больше он нам не нужен. Итак, мы имеем 2 файла с примерно такими именами: VTS_01_0.ifo и VTS_01_1.vob. В дальнейшем нам понадобится только *vob (-ы). Этап II: демаксинг *vob-ов. Запускаем DGIndex. 1. Открываем первый *vob. Он обозначается примерно так: vts_01_1.vob, затем в открывшемся окне последовательно добавляем остальные *vob-ы кнопкой "Add" и нажмаем ок: ![]() 2. Не трогая никаких настроек в меню "File" выбираем "Save project and demux video". Указываем директорию для сохранения файлов. ![]() 3. когда программа закончит работу (статус: finish) запомните частоту кадров - framerate. ![]() Мы должны получить файл с расширением *m2v - видеоряд без звука и субтитров, *d2v - проект для Avisynth, который нам не понадобится, и файлы аудиопотоков - сколько дорожек, столько и файлов с соответствующм расширением - на DVD это может быть *AC3, *DTS, *AAC, *MPA и *PCM. Более DGIndex нам не нужен. Этап III: кодирование звуковых дорожек. Большинство рипперов кодируют звуковые дорожки в формат *MP3, кодек - Lame или MPEG Layer-3. Если фильм не музыкальный, и не имеет 5-ти или 6-тиканального звука, то достаточно 48000 Hz, 96 – 128 kbps, stereo. Использование переменного битрейта целесообразно только в том случае, если ваш рип не будет разрезаться на куски или склеиваться из двух кусков в один. Иначе человек, осуществивший операцию резки/склейки, получит рассинхронизацию звука с изображением, для избежания которой ему придётся заново перекодировать звук в тот же формат с постоянным битрейтом. Это касается и файлов со звуком *AC3 - при склеивании таких файлов в месте стыка появляется громкий щелчок с последующим снижением уровня громкости (не всегда, впрочем, но тем не менее). Такой звук можно, конечно, починить, но ведь мы делаем рип для просмотра, а не конструктор "Собери фильм сам", верно? Резюмируя вышеизложенное, можно предложить следующие рекомендации: 1. если наш рип подразумевает возможность деления/склеивания, например, 1,4 GB на 2 по 700 MB и наоборот, и вы делаете звук *MP3 - кодируйте с постоянным битрейтом. 2. Если вы оставляете звук *АС3 - не режьте файл на части, чтобы не создавать проблем людям, имеющим DVD-райтеры и желающим смотреть фильм как одно целое. Плюс, в последнее время появляются сообщения от пользователей (и я сам присоединяюсь к ним), говорящие, что имеет место рассинхронизация видео и аудио при кодировании последнего с переменным битрейтом при просмотре на стационарных DVD проигрывателях с поддержкой MPEG4. 3. следует попытаться оставить оригинальный звук *АС3, даже если это просто стерео. Одним из достоинств АС3, помимо широко известной панорамности и многоканальности звука, является DRC, сжатие динамического диапазона. Поскольку AC3 разрабатывался для кинотеатров и домашнего видео, а акустика у них разная, то был предусмотрен дополнительный поток данных - управление усилением звука. Как правило, этот поток сочиняется звукорежиссёром фильма ещё на стадии монтажа. Перепаковка в МР3 убьёт динамический диапазон звукового ряда. Таким образом, если замысел режиссера нам не безразличен - оставляйте AC3. Итак, нам понадобиться программа BeSweet и графическая оболочка для неё – BeLight. Просто поместите файлы BeSweet в директорию с файлами оболочки: ![]() А затем запустите BeLight.exe. "File" – "Open" – загружаем нужный файл или файлы. ![]() Переходим на закладку требуемого формата, в нашем случае – MP3 и ставим требуемые настройки. Если мы зайдём в "Advanced settings’, то увидим следующее: ![]() Здесь, если мы кодируем материал с частотой кадров отличной от 25 в секунду, и мы планируем привести её именно к этой цифре – например, с 23,976 до 25, то тоже самое надо сделать и со звуком, иначе мы получим рассинхронизацию. Стартовую и требующуюся частоту кадров ставим в соответствующие окошки, отметив чекбокс "Convert Frame Rate From..." Запускаем кодирование. Получившийся файл по умолчанию помещается в папку исходного. Этап IV: кодирование видеоряда. Получившийся *m2v открываем в VirtualDub-MPEG2. Просматриваем его. Затем идёт следующая последовательность действий в указанном порядке: 1. Если нужен деинтерлейсинг - устранение гребёнки по краям объектов в кадре, выбираем фильтр deinterlace, а в нём - первый алгоритм – "Blend fields together". Можно использовать внешние фильтры, которые, по оценкам риперов дают лучший результат, например, Smart Deintarlace 2. Производим кроппинг - с тех сторон кадра, где есть необходимость, на должное количество пикселей. Оперируя ползунком на таймлайн можно найти наиболе удобное место для этого 3. Добавляем фильтр "Resize" и указываем желаемую высоту - height и ширину - width кадра. Высота должна быть кратна 16, а ширина - 32. Однако можно провести ресайз с кратностью и длины, и ширины равной 16 - в том случае, если такое отступление даст возможность сохранить или максимально приблизиться к оригинальному aspect ratio. Если это не удаётся и получаемое соотношение сторон далеко от оригинального, желательно сохранение кратности по ширине равной 32. Некоторые рипперы сообщают о появлении нежелательных артефактов при декодировании видеопотока при отступления от этого правила. Стоит быть готовым к тому, что после кроппинга, особенно значительного, особенно неравномерного с разных сторон кадра, сохранение исходного соотношения сторон (Aspect ratio) весьма и весьма затруднительно. Обратите внимание на этот параметр в разных рипах других людей и вы увидите огромный разброс: 2,44:1, 1,72:1, 1,26:1, 1,38:1... Две важнейшие составляющие нам надо втиснуть в рамки жёстко заданного aspect ratio: а. правильная геометрия кадра; б. кратность длины сторон кадра. Не факт, к сожалению, что они удачно соотнесутся друг с другом. Тогда все бы делали рипы со стандартным соотношением сторон - 4:3 или 16:9 и мы бы не имели такого разнообразия этого параметра. Однако попробовать стоит. Рассчитаем необходимое соотношение сторон по пропорции (для исходного 4:3): 4:3 = высота (пикселях):ширина (пикселях), причём ширина кратна 32, а высота - 16. Реальный пример: кадр с разрешением после кроппинга 672*464. Высота (она более важна, поэтому пляшем от неё) - 464. Делим на 32, получаем 464/32=14,5. Округляем до 14 (помним про кратность!) Итоговая ширина получается 14*32=448. Таким образом, пропорция имеет следующий вид: 4:3 = высота (пикселях):448. Отсюда по правилу решения пропорций (произведение крайних членов пропорции (в нашем случае это 4 и высота, то есть 448 равно произведению средних членов (3 и искомая высота)), вычисляем требуемую длину: ширина = 4*448/3 = 597,3. Делим 597,3 на 16 (помним про кратность!), получаем 37,3. Округляем до 37, умножаем на 16, получаем 592. Искомое разрешение нашего кадра, максимально близкое к aspect ratio 4:3, так как мы округляли (0,5 пикселя мы отбросили по высоте - 14 вместо 14,5 и 0,3 - по ширине - 37 вместо 37,3) - 592*448. Проверим: 4/3 = 1,3(3), 592/448=1,321 То есть финальный кадр будет чуточку уже стандартного, очень не намного. В фильтр "Resize" подставляем найденные значения - 592 и 448 и сохраняем. Но (!) - вернее, большое жирное НО! - если предпросмотр показывает нарушение геометрии кадра, круглое у вас не кругло, квадратное не квадратно, то хоть тресни, а придётся: а. попробовать принять кратность по высоте равной 16. б. отступать от правила кратности вообще - большой минус рипа, так как может сделать его несмотрибельным, да и просто дурной тон; в. Сделать кроппинг больше необходимого – исключительно теоретическая опция; меньше - допустимо; г. отказаться от стандартного соотношения сторон, то есть выбрать меньшее зло, что и делает большинство риперов. В нашем примере так и произошло. Арифметически рассчитанное разрешение сопровождалось искажением картинки – она выглядела вытянутой по вертикали. После коррекции вручную нормальная геометрия кадра появилась при разрешении 704*448. Учитывая, что соотношение сторон пикселя на DVD равно 1,094 для PAL 4:3, 1,459 для PAL 16:9 и 0,9113 для NTSC 4:3 и 1,215 для 16:9, для нашего примера можно воспользоваться следующей формулой: Искомая ширина (для нашего примера)= ширина после кроппинга (672)*соотношение сторон пикселя (1,094)*желаемую высоту (448 )/ширину после кроппинга (464) = 709. Округляя её по правилу кратности (709/16=44,3 => 44*16=704), мы получили ту же ширину, но автоматически. "И не надо мучить глаза", - как сказал один риппер. Более подробно о правильном ресайзе и выборе разрешения кадра можно прочитать здесь. 5. Предпросмотром убеждаемся в отсутствии геометрических искажений, причём делаем это как можно более тщательно, просмотрев не менее 20 кадров из разных частей видеоряда. Я сравниваю пропорции картинки на мониторе и телевизоре, на экране которого запускаю оригинальный DVD. 6. В ниспадающем меню "Filter Mode" выбираем один из алгоритмов интерполяции. Некоторые риперы указывают на следующие особенности разных алгоритмов интерполяции: "Precise Bicubic" - он дает четкую картинку и в то же время сглаживает (при уменьшении) шумы, "Precise Bilinear" - он больше сглаживает картинку и способствует повышению сжимаемости видеоряда, "Lancros3" – даёт самый чёткий ресайз. Я использу. этот алгоритм. 7. Имеющиеся в окне фильтров два чекбокса не отмечаем и нажимаем ок. Фильтры выбраны, приступаем к кодированию. Стоит ещё раз обратить внимание на последовательность включения фильтров: деинтерлейсинг, кроппинг, ресайз. В противном случае можно получить артефакты в виде чёрных полос или неожиданные пропорции кадра. Итак, настройки кодека. В начале немного теории. Стандартный рип, сделанный кодеком XviD, содержит 3 типа кадров (frames): 1. ключевые кадры - i-frames 2. промежуточные кадры - p-frames 3. b-frames - аналога на русском я не знаю. i-frames содержат видеоинформацию и кодируются с минимальным сжатием, следовательно, имеют максимальную детализацию изображения; размер их по моим наблюдения составляет от 4 килобайт до 150 килобайт; навигация по видеоряду, операции резки/склейки осуществляются только по i-frames. В начале видеоряда всегда стоит ключевой кадр. p-frames содержат видеоинформацию об отличии видеокадра от предыдущего - то есть, при его распаковке мы получим не полный кадр, а, грубо говоря, отличие от предыдущего. На статических сценах кадры меняются сравнительно мало, поэтому отличия содержат меньше видеоинформации, чем полный кадр, и, благодарая этому, p-frames значительно меньше, чем i-frames. Но, для получения полного видеокадра, нам нужно иметь полный предыдущий кадр, чтобы добавить к нему это отличие. Для получения следующего – полный предыдущий и так далее, то есть, нам нужно декодировать подряд всю цепочку кадров, начиная с ближайшего i-frame, имеющего полную информацию о кадре. b-frames содержат видеоинформацию, вычисляемую по двум кадрам - предыдушему и последующему. Алгоритм весьма сложный, разный у разных кодеков. Очень грубо говоря, делается однозначная и легко вычисляемая интерполяция между предыдущим и последующим кадрами, и b-frame содержит информацию о том, насколько реальный кадр отличается от этой интерполяции. Поскольку чаще всего предыдущий и последующий кадры, как правило, p-frame, (хотя может быть и i-frame), а b-frame вычисляется по их отличию, то он является разницей между двумя разницами. Это очень грубая аналогия, конечно. Они разработаны для того, чтобы уменьшить размер файла на выходе и сэкономить битрейт для кодирования i-frames и p-frames. Например: нам надо закодировать, чисто теоретически, 3 одинаковых кадра: i, p и ещё один p с битрейтом 20 бит/сек. На i-frame уйдёт 10 бит, на p-frames - по 5 бит соответственно. А теперь представьте, что вместо одного p-frame у вас b-frame, на который уйдёт не 5, а 3 бита. Оставшиеся 2 бита кодек добавит либо к i-frame, либо к p-frame - куда нужнее, тем самым увеличив качество данного кадра, то есть детализацию. Это раз. Два: размер b-frame будет меньше, чем заменённого им p-frame (данное справедливо для кодека XviD), так как b-frame - это не картинка, а разница между двумя другими разницами, как было сказано выше. Таким образом, мы выигрываем ещё и в размере. Итак, стандартный видеоряд представлен следующей последовательностью кадров: i-p-b-p-b-p-b-p-b-p....i в следующей пропорции (она установлена в кодеке по умолчанию и может быть изменена): ключевой кадр, по 150 чередующихся p-frames и b-frames, и вновь ключевой кадр. То есть на 300 кадров видеоряда мы имеем 1 ключевой кадр. Это, я напоминаю, по умолчанию; в то же время кодек, определяя начало новой сцены, ставит первым ключевой кадр; таким образом, этот параметр не значит, что у нас на 300 кадров действительно будет лишь 1 ключевой; как минимум, их будет столько, сколько новых сцен в данном отрезке видеоряда. Разные рипперы используют разное количество, вернее, величину этого параметра – от 100 до 10 000. Количество ключевых файлов влияет на три параметра: 1. облегчение навигации по фильму и операций резки/склейки; 2. качество видеоряда; 3. размер файла; Второй элемент кодирования, который нужно рассмотреть - квантайзер. Это так называемый DRF - Detail Removal Factor - величина, показывающая степень потери детализации изображения, то есть обратно пропорциональная качеству. Чем больше квантайзер, тем меньше детализация кадра. Визуально это проявляется появлением блоков - квадратных артефактов в кадре. Соответственно, чем меньше квантайзер, тем больше детализация кадра, следовательно - его качество, а также битрейт, необходимый для его сжатия и, - частично - его размер. По умолчанию минимальный квантайзер равен 1; максимальный – 31. Третий теоретический элемент, который каждый знает, но, возможно, плохо представляет себе, что же это такое (так было со мной) - битрейт. Что это такое легко понять на элементарном житейском примере: представьте себе, что нам надо отправить почтой открытку. Если размер почтового ящика равен или больше размера открытки, то проблем не возникнет. А если нет? Тогда вы берёте и делаете копию открытки, уменьшив её размер до размера ящика. Соответственно, часть деталей при этом неизбежно теряется. А теперь представьте, что у вас 150 000 открыток (1:40 продолжительность видеоряда) и один почтовый ящик. Ящик, точнее его размер - как раз и есть битрейт, в который кодек должен поместить кадры (открытки). Представьте теперь, что этот ящик резиновый, но, втиснув в него очень большую открытку, другую мы должны будем пропорционально уменьшить – это пример переменного битрейта, с которым кодирует XviD. А операция по уменьшению, сопровождающаяся потерей детализации, называется квантизацией, степень уменьшения детализации - соответственно, квантайзером. Кодируя кодеком XviD в два прохода, вы имеете возможность ограничить кодек в размере файла и в величине битрейта. В первом случае во время первого прохода кодек анализирует видеоряд на фиксированном квантайзере равном 2, рассчитывает средний битрейт, рассчитывает размер, который может получиться на выходе, а на втором проходе кодирует, опираясь на полученную информацию. Во втором случае, поскольку средний битрейт уже задан, на первом проходе кодек распределяет его согласно необходимости - динамике кадров и прочим параметрам, а на втором кодирует - размер файла в этом случае определяется самим кодеком. Теперь мы подошли к так называемому Quality Factor-у. Этот индекс качества рассчитывается следующим образом: QF = средний битрейт (бит)/количество пикселей в кадре (т. е. высота*ширина)*частоту кадров/секунду (PAL - 25). Как вы видите, основными составляющими этого индекса, которыми стоит оперировать, являются битрейт и разрешение кадра. Битрейт прямо-, а разрешение обратнопропорционально ему. Считается, что для цветных рипов вполне достаточно 0,23, для чёрно-белых - 0,13. В последнее время многие рипперы не придерживаются этого правила, без заметных на глаз потерь в качестве кодирования. Второй показатель качества кодирования - средний квантайзер. Возможно, он более объективен: допустим, у нас есть динамичный видеоряд, сложный для кодирования и спокойный - более простой. При одинаковом битрейте и разрешении, а следовательно, и QF, качество кодирования тоже должно быть одинаковым. Однако это далеко не факт, что подтверждается практикой. Таким образом, для оптимальной оценки качества рипа следует использовать два этих показателя. Теория закончена. Перед тем как приступить к кодированию, следует настроить кодек и VirtualDub-MPEG2 для кодирования в цветовом пространстве YV12. Использование YV12 позволит сохранить оригинальную цветовую палитру видеоряда и увеличит скорость кодирования до 20 – 30% за счёт отсутствия перекодировки сигнала в RGB. Преимущества данного пространства перед RGB, что стоит по умолчанию, можно прочитать здесь. Для этого делаем следующее: |
||
![]() |