Статьи пользователей » 15.04.2005 - Перекодирование MPEG2 в DivX - Виктор Гаврилов

Перекодирование MPEG2 в DivX.

Автор: Виктор Гаврилов

Редакция: GOTVIEW

Введение:

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

Итак, есть исходник в MPEG2, требуется его перевести в DivX, аудио дорожку - в MP3 (хотя кодеки не столь уж и важны). Попытка просто перегнать видео в нужные форматы не увенчалась успехом - в итоге получилась рассинхронизация аудио и видео потоков. Можно было конечно вырезать аудио поток, привести его соответствующими редакторами (Sound Forge, Cool Edit и пр.) к нужной длине и присоединить обратно, но мы легких путей не ищем, да и редакторы эти не бесплатны, а рассинхронизации в исходнике не было. В общем, захотелось не иметь подобных проблем в принципе. Путь был выбран следующий: изначально разделить аудио и видео потоки, перевести аудио в не сжатый формат, а затем уже свести их вместе, вырезать лишнее и закодировать. Итог оправдал ожидание: фильм получился без рассинхронизации, да и времени было потрачено не так уж много.

Итак, приступим:

Шаг первый: разделение аудио и видео потоков, подготовка d2v проекта. Для этого потребовалась программа DVD2AVI.

Я воспользовался пакетом GordianKnot Rip Pack, программа DVD2AVI входит в его состав.

Этот пакет необходимо у себя иметь, он может помочь во многих вопросах. Я пользовался пакетом 0.28.8, на данный момент есть версии по новее, так что выбирайте на свой вкус.

Открываем в этой программе свой файл File->Open или (F3), не обращая внимания на то, что расширения mpg в предложенных вариантах нет.

Здесь же можно добавить несколько файлов, если ваш фильм состоит из нескольких кусков (я предпочитаю один кусок, как-то надежнее).

В открывшемся окне можно отметить начало и конец видео (в некотором приближении), для этого надо воспользоваться бегунком, который располагается внизу окна программы, а также кнопками "[ < > ]".

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

Установите в меню Video->Field Operation в None.

Теперь запустите предварительный просмотр: Option -> Preview, или кнопку (F5). Остановите его кнопкой Esc через некоторое время (10-20 секунд - пару минут). В окне справа у вас останется окно Information.

Здесь будет интересно посмотреть на информацию: Aspect Ratio, Frame Rate, Video Type и Frame Type. Frame Type в состоянии Interlaced указывает на наличие интерлейса, но DVD2AVI часто в этом параметре ошибается.

Просмотрите еще раз кадры с вашим видео, запустив предпросмотр (F5), если интерлейс присутствует, то вы его увидите (гребенку тяжело не заметить). Если гребенки вы не видите, значит, вам повезло - интерлейса в вашем фильме нет и вам не потребуется применять фильтры деинтерлейса. Если интерлейс присутствует, то не стоит огорчаться, попробуйте поставить Video -> Field Operation в Swap Field Order и посмотрите на кадры видео еще раз. Если интерлейса нет, значит в вашем исходнике просто перепутаны поля (четный и нечетный) и вам опять же повезло. Если интерлейс есть, то поставьте Video -> Field Operation обратно в None и запишите, что фильтр деинтерлейса вам понадобиться (если вы конечно хотите сделать видео без интерлейса).

Дальше проверьте, что в меню Video->Color Space выбран пункт YUV 4:2:2.

Теперь поставим установки для звука: Audio->Output Method выбираем Demux All Tracks (AC3, MPA, DTS), или Demux (AC3, MPA, DTS) (в этом случае необходимо установить Track Number, для захваченного видео с тв-тюнера - это всегда Track 1 - он же и единственный). Можно попробовать установить Decode to WAV, но у меня почему-то аудио дорожки в этом случае не появилось (возможно что-то криво установил).

В меню Audio->48 -> 44.1Khz устанавливаем off. Нормализацию я тоже отключил, но можно и поставить.

Теперь выбираем File->Save Project (или кнопка F4) и указываем имя и путь для d2v проекта. В результате получаем файл d2v и файл звуковой дорожки с расширением mpa. Обращаем внимание, что аудио дорожка в своем названии содержит величину задержки относительно видео потока.

Первый этап готов (Файл MPG ни в коем случае не удаляйте и желательно не переносите в другие директории, в файле d2v содержится ссылка на него, если вам необходимо перенести mpg файл, то не забудьте подправить ссылку). DVD2AVI можно закрывать.

Шаг второй: перекодирование, а точнее раскодирование, аудио дорожки. Здесь можно использовать любой аудио редактор, или утилиту перекодировки аудио файлов, умеющих сохранять аудио в формате wav и понимающие MPEG Layer II. Я использовал утилиту dBpowerAMP Music Converter (данная утилита является бесплатной).

Интерфейс ее не замысловат и прост - при запуске она предлагает выбрать ваш аудио файл, затем предлагает меню, выбрать в какой формат вы хотите произвести кодирование. Я советую выбрать Wave.

После выбора формата вы получите окно с настройками.

Лично я здесь ничего не менял, но можете поэкспериментировать. Жмем кнопку Convert и ждем окончания кодирования.

Второй этап закончен. Теперь у вас есть файл d2v и wav файл. Файл с аудио дорожкой можно удалить, если место для вас критично.

Шаг третий: создание avs проекта. Те, кто знаком с AviSynth могут без проблем сделать его самостоятельно, да еще и нужные себе фильтры прикрутить (но это уже выходит за рамки данного повествования, да и не сильно я знаком с AviSynth). Я же пошел по пути наименьшего сопротивления и максимальной, для себя выгоды - воспользовался пакетом GordianKnot.

На этом этапе, кроме avs проекта, я получил оптимальное значение разрешения картинки и средний битрейт для DivX. Оптимальное разрешение получилось в результате проведенного теста сжимаемости моего фильма. Для теста сжимаемости, необходимо произвести настройки кодека, для первого и последующих проходов. Делается это на закладке Options. Эти установки дело личное и описывать их я не буду, т.к. не считаю себя большим специалистом в настройках DivX.

Теперь открываем свой d2v проект (кнопка Open).

При открытии проекта появиться окно Preview. Можно сразу же в нем создать avs проект, и перейти к следующему этапу, но я предлагаю немного поиграться с настройками и выяснить несколько полезных данных. Итак, появившееся окно не закрываем, но пока переходим в окно настроек GordianKnot. Для начала зайдем на закладку Bitrate.

Здесь GordianKnot уже произвел некоторые вычисления. Выбираем размер CD и их количество (или конечный размер файла), отмечаем в Audio нужный битрейт звука, в Interleaving & AVI-Overhead отмечаем 1x ac3/cbr mp3 (или выбираете свой вариант). Можно в опции Files выделить место под какие-то файлы (например кодеки), либо указать небольшой запас, тем более если фильм планируется делать на несколько CD, то разрезать файл лучше по сценам, а не четко по середине, дабы не резать фразы актеров. Теперь можно запомнить значение Average Bitrate - это и будет ваш битрейт, который надо будет подставить кодеку.

Теперь переходим на закладку Resolution.

Проверяем Input Resolution, Input Pixel Aspect Ratio (Gordian Knot здесь может наврать). Теперь обрежем лишние края и выставим конечное разрешение. Лично я предпочитаю обрезать края и делать resize непосредственно в VirtualDub'е, но для получения статистических данных это лучше проделать, а можно эти процедуры оставить на совести AviSynth и Gordian Knot и не мучиться с фильтрами в VirtualDubе - ничего плохого здесь нет. Для начала жмем кнопку Auto Crop.

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

Режьте не жалея, все равно телевизионное изображение на 2-3% больше. Оставшиеся края будут неприятно выглядеть потом при просмотре, да и сжимаются они не очень хорошо и вы зря потратите выделенный битрейт. После этого выбираем пункт Smart Crop All.

Теперь надо выбрать разрешение фильма. Это будет предварительный результат и в дальнейшем, возможно его придется скорректировать. Следует понимать, что для каждого фильма и выбранного битрейта, а также степени сжимаемости файла, необходимо подыскать оптимальное значение разрешения картинки. Если картинка будет слишком большой, то качество фильма будет ниже среднего (хотя это понятие вообще субъективное). Если картинка будет слишком маленькой, то вы потратите битрейт почти впустую. Здесь решать вам, довериться вычислительной мощи вашего компьютера и алгоритму пакета Gordian Knot, или сделать все исходя из собственного опыта и предположений.

Смотрим на раздел Output Resolution, там есть информация о размере видео.

При помощи бегунка выставляем интересующее нас разрешение. Параллельно пересчитывается параметр Bits/(Pixel*Frames).

Именно на этот параметр надо обратить внимание на этом этапе. Не буду говорить почему и как, но не стоит опускать этот параметр ниже 0.17 (кстати, при подходе к этому значению, окошко этого параметра станет желтым, сигнализируя, что вы выбрали слишком высокое разрешение для выбранного битрейта). Если желаемого результата вы не можете достичь не занижая этот параметр, лучше увеличьте битрейт путем выбора большего количества дисков, или уменьшив качество звуковой дорожки. Также не забывайте, что это выбор предварительный, впереди вас ждет тест сжимаемости, который поможет вам скорректировать это значение.

Теперь переходим в окно предварительного просмотра. Выставляем View -> Resized.

Если вы хотите сжимать титры с пониженным битрейтом, то необходимо выделить начало титров. Для отметки начала титров есть кнопка (Set Credits Start). Теперь жмем кнопку Save & Encode. Появляется окно с кучей параметров. Те кто в этом понимает, или хочет использовать фильтры AviSynth - можете экспериментировать, для меня же важным здесь является только тест сжимаемости файла.

Итак по порядку Resizing -> Selected Output Resolution; Resize Filter я предпочитаю выставить в Sharp Bicubic (может у кого-нибудь другие предпочтения, тогда выбирайте свой); Noise Filter - здесь даже подсказать ничего не могу, у меня обычно задача - перегнать MPEG2, полученный с тв-тюнера и качество картинки меня обычно устраивает, поэтому я очень редко пользуюсь фильтрами шумоподавления (тем более в GoTView PCI DVD весьма приличный фильтр встроен на аппаратном уровне), поэтому я ставлю None; Field Operations - фильтр деинтерлейса - если фильм не требует деинтерлейса, ставьте None, если нужен, опять же на свой вкус, я в таких случаях ставлю Field Deinterlace (no blend), но повторяю, фильтры предпочитаю выставлять в VirtualDub'е.

Вообще, если вы планируете серьезно заниматься видеообработкой, настоятельно советую освоить AviSynth (у меня, к сожалению, на это не хватает времени), а также фильтры VirtualDub'а, эти два продукта прекрасно дополняют друг друга.

Теперь проведем тест сжимаемости файла. Если вы не отмечали начало титров, то в разделе Trim поставьте - No Trim, иначе Both. Дальше в разделе Compressibility Check ставим Use.

В принципе, достаточно 5%, но если хотите, можете выставить больше, тест даст лучшие результаты, но и времени потребует больше. Жмем кнопку Now (отвечаем утвердительно на вопрос о желании запустить тест) и ждем окончания тестирования.

После окончания тестирования переходим снова в окно настроек Gordian Knot и смотрим в раздел Bits/(Pixel*Frame), там появились новые цифры, в частности коэффициент сжимаемости и процентное соотношение относительно выбранного вами коэффициента.

Именно на это процентное соотношение и надо обратить внимание. Если оно равно 100, то вы нашли самый оптимальный вариант соотношения разрешения картинки и битрейта для выбранного вами фильма. Если значение выше 100%, то стоит задуматься об увеличении разрешения картинки. Если значение ниже, значит разрешение высоко и может быть придется его понизить. Советуют следующее: если процент находится в районе 80-100, то смело оставляйте выбранное разрешение - это очень хороший результат. 60-80% - вы получите нормальное качество, для некоторых фильмов приемлемым будет интервал 40-60%. Ниже 40% залезать не советуют. Также помните, что качество будет зависеть от используемых вами фильтров. Этот пункт я выполняю лишь для получения размера картинки, стараясь получить значение в пределах 60-100%.

Если у вас % получился довольно низким, а разрешение вы менять не хотите, попробуйте увеличить битрейт (снизив качество аудио потока, или увеличив размер будущего файла). Также можно попробовать добавить фильтр шумоподавления и провести тест еще раз.

В общем, этот пункт целиком на вашем желании (можно тест сжимаемости и не проводить и полностью положиться на собственные знания и навыки).

Для полноты картины и завершения третьего шага осталось только создать avs файл. Перейдите снова в окно предварительного просмотра и нажмите кнопку Save и укажите место, и название вашего файла. Дальше я редактирую полученный файл, т.к. как уже писал, буду пользоваться фильтрами VirtualDub'а. Все, что я оставляю в avs файле - это строки PLUGINS и SOURCE:

# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\mpeg2dec3.dll")
#
# SOURCE
mpeg2source("Путь и имя файла d2v")

Остальные строки я комментирую (#), либо удаляю.

Итак, шаг третий закончен и у вас есть все, что необходимо для дальнейшей работы (файл mpg с исходным видео, d2v -проект, wav файл и файл avs). Также у вас есть полезные сведения о среднем битрейте, рекомендуемом разрешении картинки, размере обрезаемых полей, данные о необходимости использования фильтра деинтерлейса.

Теоретически, можно использовать для кодирования и пакет Gordian Knot, но я предпочитаю здесь немного пофантазировать с фильтрами и отслеживаю процесс самостоятельно.

@Mail.ru Rambler's Top100