Loading...
Error

Искусная конвертация DVD to Mpeg4 для "чайников"

Ответить на тему
 
Автор Сообщение

televizionchik


48Mbps    14Mbps

Рейтинг:

Стаж: 7 лет 5 месяцев

Сообщений: 1571

Откуда: Russia

Россия


post 07-Май-2009 09:59

Quote Сообщить о нарушении

I. КОПИРОВАНИЕ ВИДЕО НА ВИНТ
Выполняется с помошью DVDdecriptor'а
1. Переходим в режим IFO (из меню или жмем I)
2. Справа в окошке Input выбираем PGC с длительностью соответствующей фильму
3. Выбираем паку для сохранения
4. Запускаем процесс


II. ПОДГОТОВКА
Выполняется с помощью MeGUI
1. Подготавливаем звук и создаем D2V проект.
1.1 Выбираем первый *.vob (остальные будут обработаны автоматически)
1.2 Выбираем звуковую дорожку.
1.3 Отмечаем пункты on comletion load files и and close
1.4 Жмем Queue, при этом если вы незабыли отметить пункт and close окно должно закрыться.
1.5 Переходим на страницу с заданиями.
1.6 Жмем старт и ждём несколько минут.



2. Создание скрипта AviSynth
Если пункт on comletion load files был отмечен то должно появиться диалоговое окно создания скрипта AviSynth
2.1 Обрезаем края (при необходимости). Для этого отмечаем пункт Crop и жмем кнопку Auto Crop.
2.2 Изменяем размер (или разрешение) изображения. Для этого отмечаем пункт Suggest Resolution и выбираем понравившуюся ширину изображения, высота будет выстановлена автоматически.
2.3 Жмем Preview AVS Script. В окне предварительного просмотра визуально оцениваем пропорции изображения. Если картинка явно растянута в длинну или ширину меняем Input DAR и возвращаемся к началу пункта 2.3

Переходим к следующей странице Filters

2.4 Если кодируется аниме, то отмечаем пункт Source is Anime. В противном случае данный пункт не отмечать!
2.5 Жмем кнопку Analyse и немного ждем. После окончания анализа исходного материала программа сама выствит многие параметры. Если вы не уверены в назначении этих параметров, то изменять их не стоит. Исключение составляет Resize Filter.
2.6 Выставляем значение Resize Filter в значение Lanczos.
2.7 Отмечаем пункт On Save close and load to be encoded и жмем кнопку Save чтобы сохранить скрипт.



3. Последние штрихи
Далее должно появиться окно предварительного просмотра в котором можно отметить место где заканчивается вступление и начинаются титры, но вообще этот пункт можно пропустить.
3.1 Передвигая бегунок находим место где заканчиваeтся вступительный ролик.
3.2 Жмем кнопку Intro.
3.3 Передвигая бегунок находим место где начинаются титры.
3.4 Жмем кнопку Credits.
3.5 Закрываем окно.



III. КОДИРОВАНИЕ
Поскольку я буду рассматривать так сказать классический DVDRip, то в качестве видео кодека будет использоваться XVid, в качестве аудио кодека mp3 или AC3.

И так после закрытия окна предварительного просмотра, мы должны вернуться к главному окну MeGUI. Для дальнейшей работы нужно будет скачать профили которые я предлагаю использовать для кодирования. Они находятся в архиве, который нужно распаковать и его содержимое скопировать в папку MeGUI.

Заметьте что на главной странице MеGUI в настройках аудио и видео есть кнопки с одинаковыми названиями
Поэтому далее в иструкции по кодированию звука и видео имеются ввиду именно те кнопки и поля которые находятся в соответствующих разделах.

1. Сжатие звука.
Данный пункт можно пропустить если вы хотите оставить звук в фильме в формате AC3, но учтите что объем звука в данном случае будет составлять ~300Мб. Если при этом вы хотите сделать рип на 1CD то под видео останется ~400Мб, что для хорошего рипа маловато. Так что я не рекомендую использовать звук в AC3 для рипа на 1CD.
1.1 Audio Profile устанавливаем в значение mp3 ABR 128kbit/s stereo
1.2 Жмем Enqueue.
1.3 Переходим на страницу с заданиями, жмем Start и ждем... По окончании возвращаемся на страницу ввода
2. Расчет видео битрейта.
2.1 Открываем калькулятор битрейта через меню Tools->Bitrate Calculator или жмем Ctrl+B.
Настройки выставляем следующим образом
Codec - XVid
AudioTrack1 - жмем кнопку Select и выбираем файл с звуковой дорожкой, размер, битрейт и тип будут установлены автоматически
AudioTrack2 - если предполагается в фильме использовать две звуковые дорожки то проделываем тоже что и в AudioTrack1, но выбираем другой аудио файл, если вторая дорожка не нужна то жмем кнопку с крестиком
Container - Avi
Total Size - обязательно отмечаем пункт File Size, значение Storage Medium устанавливаем равным предполагаемому размеру конечного файла
B-frames - отмечем если еще не отмечено.
2.2 Жмем Apply, после чего мы должны вернуться к главному окну.
3. Сжатие видео.
3.1 Video Profile устанвливаем в значение XVid video
3.2 Жмем Enqueue.
3.3 Переходим на страницу с заданиями, жмем Start и ждем... процесс кодирования займет несколько часов
Теперь осталось только свести звук и видео в один файл. Делать это лучше спомощью сторонних программ так как в самом MeGUI эта функция сильно глючит.


Замечания к части I
1. Для корректной работы нужно установить все настройки по умолчанию. Это делается через меню Tools->Settings, в появившемся окне жмем кнопку Defaults

2. На DVD кроме самого фильма может находится различная реклама, ролики и т.д и т.п. Они обычно помещаются в отдельный PGC, поэтому выбирать PGC нужно ориентируясь на время, оно должно соответсвовать времени фильма.
Но иногда на одном DVD могу находится несколько серий фильма, или несколько фильмов, тогда отдельному PGC могут соответствовать отдельные серии, или отдельные фильмы соответственно. Если нужно скопировать всё, то делается это по отдельности для каждого PGC, либо можно перейти в режим File (из меню Mode или нажать F) и выбрать нужные *.vob файлы.

3. Копирование на винт с помощью DVDdecriptor'а необходимо только в случае если DVD зашифрован, в противном случае, можно просто скопировать файлы с DVD на винт.

Замечания к части II
1. MeGUI в настоящее время находится в развитии, поэтому в программе встречаются глюки. Для работы программы нужно скачать и установить .NET Framework и Avisynth 2.5.6a или 2.5.7. Кроме того понадобятся еще некоторые утилиты, которые можно скачать с помощью функции Update MeGUI.

2. При открытии Vob'ов возможно появления окна с сообщением об отсутствии некого файла DVDDecriptor'a. Данное предупреждение можно игнорировать.

3. Если в качестве исходного материала используется avi, или любой другой отличный от d2v видео файл то нужно начинать подготовку к кодированию с создания скрипта AviSynth. В таком случае окно создания скрипта AviSynth можно запустить через пункт меню Tools->Create AviSynth Script. Напротив Video Input вводим нужный файл.

4. Одним из факторов, возможно самым главным, влияющих на качество рипа является выбор размера изображения. Дело в том, что сжатие изображения происходит по большей части за счет высоких пространственных частот. Это значит, что мелкие детали изобажения будут размыты либо исчезнут совсем. Таким образом если оставить высокое разешение, в надежде что картинка будет более четкой, то большАя часть мелких деталей после кодирования не сохранится, т.е. большой размер катринки не поможет. Если выставить слишком малое разрешение, то картинка изначально будет не четкой и кроме того при кодировании на изображении могут остаться детали которые в действительности не заметны или малозаметны, т.е. битрейт будет потрачен в пустую. Чтобы выбрать правильное разрешение, можно ориентироваться на технический параметр который обычно называется "качество" и показывает сколько бит в среднем требуется на кодирование одного пикселя. Он рассчитывается по следующей формуле средний видео битрейт / (количество кадров в секунду*ширину*высоту изображения). Для хорошего DVDrip'a это соотношение находится в пределах 0.3-0.4, для более менее приличного ~0.2 Но этот параметр не всегда соответствует действительности. Иногда рип с качетвом 0.2 может выглядеть отлично, в то время как другой рип с 0.3 будет смотреться полохо. Например, почти у всех HD фильмов качество ~0.1 и смотрятся они при этом замечательно .
Таким образом выбор размера картинки это важная задача. Для ее решения сушествуют специальные способы и программы. В частности пакеты GordianKnot и Auto GordianKnot используют логи полученные после кодирования. После анализа этих логов они предлагают пользователю (это в случае GK, Auto GK делает все самостоятельно, без спроса ) изменить разрешение картинки или битрейт если по их мнению они не соответствуют дуг другу. В MeGUI есть кнопка Queue analysis pass которая, судя по названию, должна выполнять похожие функции, но как она работает я не понял, если кто подскажет я буду рад.

5. При нажатии кнопки Analyse со страницы Filters окна создания скрипта Avisynth, программа пытается определить тип исходного видео материала. Конечно в каких-то случаях программа может ошибаться. В таком случае на изображении может появиться "гребёнка", увидеть ее можно в окне предварительно просмотра (но сначала нужно еще раз нажать Preview AVS Script).

6. На качество рипа, так же оказывают влияние шумы изображения. Что представляет из себя шум на изображении?
Если вы когда-нибудь смотрели по телевизору канал с плохим приёмом, то наверняка замечали, присутствующие на изображении хаотично расположенные точки и черточки. Это и есть шум ТV изображения. У старых фильмов на пленках шумы пердставляют собой хаотично расположенные царапины, иногда вертикальные линии. Обычно шумы DVD - это мелкие хаотично расположенные точки, причем они могут присутствовать даже на очень качественных, лицензионных дисках.
Таким образом шумы обычно выглядят как мелкие хаотично расположенные объекты (точки, черточки, царапины). Картина шумов в разных кадрах будет разной, т.е. они будут "бегать". Далее я буду говорить только о шумах DVD, хотя в какой-то степени это относится и к шумам других видов.
Поскольку шумы несут некоторую информацию (в данном случае бесполезную ), то для их кодирования потребуется и некторый битрейт, который будет вычитаться из битрейта выделенного вами на кодирование изображения, т.е. шумы вешь вредная и от них желательно избавляться. Но все существующие типы шумодавов, порождают различного рода артефакты (типа размытия изображения или появление "призраков"), поэтому лучше оставить небольшие шумы, чем удалить их полностью и заодно испортить картинку .
В MeGUI при создании AviSynth скрипта можно включить в этот скрипт шумодав (пункт Noise Filter на странице Filters), но на мой взгляд они не достаточно качественные (т.е. они либо оставят слишком много шума либо будут давать сильные артефакты). Чтобы добится действительного хорошего шуподавления, нужно использовать сложные адаптивные шумодавы о которых можно много писать и дискутировать. Из простых шумодавов могу посоветовать FFT3Dfilter. Это плагин для AviSynth, обеспечивает наверное наиболее качественное шумоподавление (но при этом является достаточно медленным).


Принципы сжатия избражений и видео.
I. В основе современных принципов сжатия изображений и видео лежат различные преобразования, и в частности DCT (Discrete Cosine Transform - дискретное косинусное преобразование). Это преобразование является разновидностью преобразования Фурье и имеет обратное преобразование. Если Вам понятие преобразование ничего не говорит, то сейчас достаточно знать только то что, с помощью преобразования можно из одного набора цифр (значения пикселей), получить другой, которые я буду называть коэффициентами. Обратное преобразование позволяет восстановить по коэффициентам исходный набор чисел. Вообще коэффициенты могут иметь оперделенный смысл, но он будет варьироваться в зависимомти от преобразования.
И так сжатие изображний состоит из следующих этапов

Изображение разбивается на блоки (обычно 8х8 или 16х16 пикселей). Один такой блок можно представить в виде матрицы, буду обозначать его А.
Над над каждым блоком производится дискретное косинусное преобразование (или какое-либо другое). В результате получается набор коэффициентов, причем эти коэффициенты вобщем случае будут числами с дробной частью (в отличие от исходных пикселей которые являются целыми числами от 0 до 255), и кроме того этих коэффициентов будет столько же сколько исходных чисел (пикселей). Коэфиициенты так же можно представить матрицей, буду обозначать ее B. Т.е. само по себе преобразование не уменьшает объем данных. Но коэффициенты можно немного "изменить", и при этом обратное преобразование даст почти исходную картинку. Это свойство используется для сжатия.
Далее применяется т.н. матрица квантизации (буду обозначать ее D), т.е. коэффициенты полученные в результате проебразования (матрица B) делятся на элементы матрицы D. В результате получаем модифицированную матрицу коэффициентов В'.
Далее каждый элемент матрицы В' делится на квантайзер (буду обозначать его q) и затем полученные коэффициенты матрицы округляются, а те коэффициенты матрицы которые получаются близкими к нулю обнуляются. Полученную матрицу коэффициентов обозначу B".
В результате манипуляций с коэффициентами, мы получаем что матрица B" будет иметь, во-превых, целочисленные коэффициенты, а во вторых, часть коэфиициентов будет нулевая, а такой набор чисел (коэффициентов) будет хорошо сжиматься (т.к. есть повторяющиеся элементы). Собственно остается только сжать эту матрицу. Обычно для сжатия применяется метод Хафмана.
Таким образом, основной способ увеличить сжатие это взять квантайзер по больше (будет больше нулей и следовательно будет выше сжатие), но тогда при восстановлении матрицы В (для последующего восстановления картинки) мы получим более сильные отклонения от превоначальной матрицы В, что приведетт к появлению т.н. "артефактов сжатия". С другой стороны брать квантайзер очень маленьким, тоже нет смысла, т.к. получим большой файл и при этом на картинке будет множество деталей не заметных на глаз. Для кодеков Xvid и DivХ кватайзер 2 считается самым приемлемым, т.е. разница между q=1 и q=2 будет минимальной, но при этом файл (при q=2) будет несоизмеримо меньше (чем при q=1).

Еще пара статей на эту тему II. Далее в процессе кодирования видео устраняются избыточные видеоданные в серии рядом расположенных кадров. Процесс удаления избыточных данных производится следующим образом.
Прежде всего создается опорный кадр (I, Intra frame) который представляет собой обычную картинку и используется для восстановлении остальных кадров.
Соседние кадры обычно содержат много одинаковых элементов изображения. Информация в них отличается на малую часть от всей информации содержащейся в кадре. Поэтому логично вместо сжатия последующего кадра кодировать только изменения относительно предыдущего и тем самым можно значительно уменьшить объем сжимаемых данных.
Кроме I-кадров, различают еще два типа кадров:
предсказуемые кадры (P, Predicted), содержащие разность текущего изображения с предыдущим I кадром или с учетом смещений отдельных фрагментов;
двунаправленные предсказуемые кадры (B, Bidirectionally-predictive), содержащие только отсылки к предыдущим или последующим кадрам типа I или P с учетом смещений отдельных фрагментов.
I-кадры составляют основу MPEG потока и через них осуществляется случайный доступ к какому-либо отрывку видео. Сами I-кадры для обеспечения визуально высокого качества сжимаются незначительно.

P-кадры кодируются относительно предыдущих кадров (I или P) и используются как сравнительный образец для дальнейшей последовательности P-кадров. В этом случае достигается высокий уровень сжатия.

B-кадры кодируются с высокой степенью сжатия. Для привязки B-кадров к видеопоследовательности необходимо использовать не только предыдущее, но и последующее изображение. B-кадры никогда не используются для сравнения.

Расмотрим простейший вариант телекино преобразования (из моего небольшого опыта рипа HDTV 30 кадровых исходников)

Немного теории:

При преобразовании кинофильма из 24 в 30 происходит

Код:

A  B  C  D  E            разделение исходных кадров
AA BB CC DD EE           на полукадры
AA BB CC CD DE EE        генерация нового кадра с использованием полей от соседних кадров
A  B  C  D  E  F         после слияния полей получаем через каждые 4 кадра один новый
как видим поля кадра D смешиваються с полями C и E

так вот при просмотре по кадрово такого видео в местах где в кадре есть движение заметна гребёнка

задача телекино преобразования востановить кадр D и выкинуть дубликаты полей C, E

При создании проекта в DGIndex необходимо использовать Field Operation > Honor Pulldown Flags

простейший скрип выглядит так:

Код:

AssumeTFF()                #TFF верхнее поле первое
                           #иногда требуеться установить первое поле нижним AssumeBFF()
SeparateFields()           #разделить на поля
DoubleWeave()              #удвоить число полей это необходимо для последующего прореживания
Pulldown(0,2)              #первая цифра откуда начать прореживание,
                           #вторая интервал к первой +2 или +3

_________________
Всё хорошо по-настоящему, когда у всех всё хорошо!!!
Мне хорошо тогда, когда тебе хорошо!
СкрытProfile PM
Показать сообщения:    
Ответить на тему

Текущее время: 07-Дек 17:49

Часовой пояс: GMT + 3



 Сообщить о нарушении в теме 

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Проверка сайта