> Еще раз о прогрессирующей рассинхронизации звука
 VxWorks Member is Offline
 Posted: 04-10-2006, 18:17 (post 1, #660069)

Daysleeper
Forum moderator
Group: Privileged
Posts: 21921
Warn:0%-----
Еще раз о прогрессирующей рассинхронизации звука
VxWorks


О чем эта статья?

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


Софт

Нам понадобится Microsoft GraphEdit

Эта программа не предсталяет собой законченный продукт, а, скорее, является демонстрацией работы DirectShow системы DirectX. В связи с этим, багов в этой программе предостаточно, что, впрочем, не мешает ей оставаться одним из самых мощных инструментов для тех, кто заинтересован в конверсии видео.


Поехали!

Запускаем GraphEdit и первым делом идем в меню Graph, где выбираем раздел Insert Filters:

user posted image

Откроется окно со списком фильтров. В нем мы ничего делать пока не будем, просто отодвинем его в сторону, чтобы не мешало. Зачем это делать? А потому что, иногда просто невозможно открыть это окно после того, как сформирован граф. C'est la vie.

Теперь идем в меню File и выбираем там Render Media File:

user posted image


В открывшемся окне, выбираем имя нужного файла и нажимаем на кнопку Open:

user posted image

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

user posted image

Откроется список всех DirectShow фильтров, установленных в системе. Сразу могу сказать, что коротким он вряд ли будет, так что надо будет хорошо поискать, чтобы найти фильтр WAV Dest. Нашли? Ну и отлично! Выделяем его мышкой, а затем кликаем на кнопку Insert Filter:

user posted image

Теперь надо найти в списке фильтр с названием File Writer и повторить операцию с кнопкой Insert Filter:

user posted image

Откроется окно, в котором надо выбрать имя файлa, который будет создан GraphEdit'ом. Поскольку нам нужен только звук, то создаем файл типа WAV. Строго говоря, расширение файла не имеет никакого отношения к его содержанию. Можно дать этому файлу расширение TXT, например. Но, чтобы нам было понятнее, дадим ему все-таки WAV, после чего нажимаем на кнопку Open (хотя логичнее, наверное, было бы поставить там кнопку Save):

user posted image

Теперь, окно Insert Filters можно со спокойной совестью закрыть. На графе надо найти элемент Default DirectSound Device сразу после Morgan Stream Switcher и удалить его из графа. Для этого надо кликнуть на нем мышкой и нажать кнопку Delete (на клавиатуре).
Если вместо Default DirectSound Device на графе присутствует какой-то другой элемент после Morgan Switcher, то надо удалить его. Говоря другими словами - убрать все, что после Morgan:

user posted image

Получим такой граф:

user posted image

Соединяем выход (Output) Morgan Stream Switcher со входом (In) WAV Dest. Для этого, нажимаем мышкой на Output и, продолжая удерживать нажатой левую клавишу мыши, тянем курсор к In. Если все сделано правильно, то граф станет таким:
PM
Top Bottom
 VxWorks Member is Offline
 Posted: 04-10-2006, 18:18 (post 2, #660072)

Daysleeper
Forum moderator
Group: Privileged
Posts: 21921
Warn:0%-----

user posted image

Находим на графе элемент File Writer (он обычно располагается в самом начале графа), перетаскиваем его мышкой после WAV Dest и соединяем выход (Out) WAV Dest со входом (In) File Writer'a:

user posted image

Сейчас очень желательно записать граф (не ровен час, GraphEdit упадет), выбрав File->Save Graph. А потом смело нажимать на кнопку Play:

user posted image

GraphEdit начнет воспроизведение файла (без звука, естественно, он будет записываться в файл):

user posted image

Понимая, что смотреть видеофайл без звука неинтересно, можно пойти пить кофе, потому что звук будет записываться на диск столько же, сколько длится видеоролик. Например, если длительность видео - 1 час, то и запись займет столько же времени (если GraphEdit не "упадет" раньше).
PM
Top Bottom
Topic Options