Быстрое начало работы с DGMPGDec

Общая информация

авторы: Graft
версия: 1.4.7
категория: MPEG декодеры (источники)
загрузка: http://neuron2.net/dgmpgdec/dgmpgdec.html
требования:
лицензия: GPL

Содержание


Что такое DGMPGDec?

DGMPGDec это для декодирования MPEG. Он используется для декодирования MPEG1 или MPEG2 потоков из таких источников как VOB'ы из DVD-Video, захваченный транспортный поток (TS), *.mpg/*.m2v/*.pva файлы и т.п. Наверное наиболее часто применяется для декодирования VOB'ов из DVD.


Что нужно для его использования?

Вам понадобится DGMPGDec и Avisynth. Для начала возьмите Avisynth 2.5 (или выше) и установите его:

Avisynth 2.5

Вы будете использовать DGIndex.exe и DGDecode.dll из поставки DGMPGDec, поэтому распакуйте их из ZIP-архива и положите их вместе в одну папку.

Если Вы хотите видеть декодированное видео, то Вам понадобится VirtualDub:

Сайт VirtualDub

Мы предполагаем, что у Вас есть VOB-файлы которые Вы получили из DVD (использованием Smart Ripper или подобной программы).


Хорошо. Что дальше?

Запустите DGIndex. Используя File/Open, откройте ваши VOB. Вы должны увидеть видео. Теперь используйте Audio/Output Method/Demux All Tracks. Это сохранит звук в файл(ы), когда Вы будете делать проект.

Теперь выбираете File/Save Project и введите имя для файла индексов (D2V файла), который будет сгенерирован. Будем считать что ваш VOB имеет имя 'myvob.vob'; Вы можете выбрав имя 'myvob' нажать ввод, потому что DGIndex сам автоматически добавит '.d2v'. Хорошо. Жмите "Save". Процесс индексирования начнётся и Вы увидите индикатор, движущийся вдоль линии отсёта времени, который показывает прогресс. Потерпите, если фильм длинный. Когда процесс окончится, выйдите из DGIndex.


Что такое файл индексов и что мне с ним делать?

DGIndex создал файл индексов, имеющий название вида *.d2v. Он читается DGDecode'ом, который декодирует MPEG и отдаёт видео поток. Файл индексов содержит информацию, которая сообщает DGDecode, где расположен каждый кадр и некоторую другую информацию о каждом кадре.

Но Вы не можете использовать DGDecode напрямую! Это нужно делать через Avisynth. Мы создадим скрипт myvob.avs, используя текстовый редактор. Дальше в этом документе я покажу Вам, как настроить DGIndex для автоматического создания скрипта, но сейчас Вам нужно научиться старым способом. Запишите этот текст в новый текстовый файл, который Вы делаете, названный 'myvob.avs':

  LoadPlugin("...\DGDecode.dll")
  MPEG2Source("myvob.d2v")

Замените путь '...' в первой строке на путь, указывающий на DGDecode.dll.

Наконец, используйте VirtualDub чтобы открыть скрипт 'myvob.avs', как будто это простой AVI. Именно так! Вы получили Ваше видео и Вы можете пользоваться случайным поиском в VirtualDub. Есть ли ещё вкусности?


Конечно, конечно, но что со звуком?

DGIndex сохранил Ваше аудиодорожки в файл(ы). Они будут иметь расширение ".wav", ".ac3", или ".mpa". Если у Вас ".wav", Вы можете загрузить его прямо в VirtualDub. Но Вы также можете использовать Avisynth, что даст Вам возможности фильтрации аудиопотока.

Допустим у нас есть ".wav" файл. Наш Avisynth скрипт будет наподобие этого:

  LoadPlugin("...\DGDecode.dll")
  video=MPEG2Source("myvob.d2v")
  audio=WAVSource("myvob.wav")
  AudioDub(video,audio)

Теперь когда Вы открыли свой скрипт в VirtualDub, у Вас появилось видео и аудио.

Мы описали обработку над ".wav" файлом. Вам нужен соответствующий типу источника фильтр. Используйте WAVSource() для ".wav", MPASource() для ".mpa", AC3Source() для ".ac3", и т.д. WAVSource() встроен в Avisynth. Другие фильтры могут быть найдены здесь: Коллекция фильтров Avisynth.

Не забывайте использовать LoadPlugin() для загрузки фильтра. И прочитайте документацию по Avisynth, чтобы узнать как можно избавиться от аудио/видео рассинхронизации, используя DelayAudio(), и другие полезные функции.


Ага, а как я могу использовать автоматический генератор скриптов?

А! А за это нужно доплачивать сверху! Нет, честно не надо.

Давайте предположим, что у Вас есть скрипт, который Вы всегда используете. Возможно наподобие этого:

  loadplugin("...\DGDecode.dll")
  loadplugin("...\Decomb.dll")
  mpeg2source("myvob.d2v",cpu=6)
  fielddeinterlace()

Скопируйте это в файл и назовите его 'template.avs'. Далее замените имя D2V файла на __vid__ (тут именно ДВА подчерка до "vid" и два после). template.avs теперь должен выглядеть примерно так:

  loadplugin("...\DGDecode.dll")
  loadplugin("...\Decomb.dll")
  mpeg2source("__vid__",cpu=6)
  fielddeinterlace()

Как Вы видите, DGIndex начал использовать это как шаблон и вставляет правильное имя файла вместо __vid__. Ловко, да? Вы также можете использовать __aud__ создания имени аудио файла; смотрите помощь к DGIndex для деталей.

OK, all you have to do now is fire up DGIndex, выбирайте файл своего шаблона через меню Options/AVS Template, и сохраняйте проект File/Save Project. Если *.avs файл не создан, то DGIndex создаст его, основываясь на шаблоне! Конечно же создаётся только однажды, а далее AVS скрипт будет автоматически создаваться каждый раз, когда Вы сохраняете проект DGIndex.


Круто. Последний вопрос...

Давай!


Почему танго в два шага? Почему я не могу делать все в DGIndex?

Хороший вопрос! Мы хотим чтобы Ваше видео было доступно из любого приложения, которое Вы считаете удобным. Конечно же мы не можем включить все возможные функции в DGIndex. Поэтому мы даём возможность 'поставлять' видео в другие приложения. Avisynth - это AVI файл сервер. Он создаёт 'поддельный AVI', а приложение считает, что это настоящий AVI, когда открывает *.avs файл.

Если Вы просто хотите создать AVI со своим видео - это просто. Открываете AVS в VirtualDub, выставляете сжатие, и нажимаете Save AVI.

Есть ещё один способ поставления который называется 'VFAPI', он также поддерживается, но Вы уловили мысль: мы просто поставляем декодированное MPEG2 видео через DGMPGDec. Приложение-получатель должно работать не зная, что его обманывают.


Copyright (C) 2004, 2005 Donald A. Graft, All Rights Reserved

$English Date: 2006/09/18 19:02:03 $
$Russian: Русский перевод 16.05.2006 SCIF [email protected] scif.net.ru$