Вы будете использовать DGIndex.exe и DGDecode.dll из поставки DGMPGDec, поэтому распакуйте их из ZIP-архива и положите их вместе в одну папку.
Если Вы хотите видеть декодированное видео, то Вам понадобится VirtualDub:
Мы предполагаем, что у Вас есть VOB-файлы которые Вы получили из DVD (использованием Smart Ripper или подобной программы).
Теперь выбираете 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. Есть ли ещё вкусности?
Допустим у нас есть ".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$