Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Описание работы в VirtualDub.doc
Скачиваний:
18
Добавлен:
14.11.2018
Размер:
1.2 Mб
Скачать

2.2. Приведение avi файлов к одному fps (разбег большой).

VirtualDub хорошая программа - это в не сомнения. Однако нет в ней опций, которые могли бы устранить значительную рассинхронизацию видео и звука при большом изменении частоты кадров. Поэтому способ описываемый далее, предполагает обработку звука отдельно от видео...

Открываем в VirtualDub первый AVI файл:

Сохраняем звук открытого AVI в отдельный WAV файл :

Для видео выбираем "Direct stream copy", для звука "No audio" :

Переходим к знакомому диалоговому окну:

Выбираем пункт "Change to...". Вписываем среднее известное значение, остальное по умолчанию, нажимаем ОК.

Перейдите на конец фрагмента, что бы посмотреть его продолжительность, после изменения FPS.

Запишите значение времени. Сохраните AVI.

Таким образом, мы имеет отдельно звук в WAV файле, и имеем AVI файл, с измененным FPS без звука.

Теперь нам понадобиться звуковой редактор, например SonicFoundry Sound Forge или Syntrillium Cool Edit (конечно же, есть и другие). У меня под руками оказалась программа Cool Edit, поэтому я буду рассказывать, и показывать на ее примере.

Запускаем Cool Edit, открываем WAV файл.

Для сжатия/растяжения звука по времени, выбираем в меню:

В диалоговом окне, в поле "Length" необходимо ввести новую длину WAV файла, т.е. то значение, которое мы переписали поле смены FPS в VirtualDub. Значение необходимо вводить в секундах (например, у меня значение 0:07:13.595, в секундах это 7*60+13.595=433.595). Вводим, нажимаем OK :

По окончанию обработки убедитесь, что продолжительность соответствует необходимой. У меня она отличается на 1 тысячную долю секунды, думаю это в пределах допустимого. :-)

Сохраняем.

Запускаем VirtualDub, открываем наш AVI файл без звука. Через меню "Audio" подключаем новый звук:

Для сохранения AVI с новым звуком, для видео и аудио потоков выбираем "Direct stream copy" :

Сохраняем.

Так обрабатываем все AVI файлы. Ну а после того как все будет готово, файлы можно соединять так, как это делается при идеальном варианте, пункт 1.

 

Ну вот вроде и все! :-)

 

3. Советы и замечания :

  • Приводить частоту кадров имеет смысл только в случае, если исходник не сжат, или сжат MJPEG-ом, Huffyuv-ом. Т.е. кодеком, при сжатии которым, каждый кадр является ключевым. В противном случае, все равно, обрабатываться будут только полные кадры (ключевые) и ничего хорошего не выйдет...

  • Если не исключена возможность пропуска кадров в обрабатываемых фрагментах, то первое, что нужно сделать после открытия исходного авишника ВиртуалДубом (ВД) - проверить его на dropped frames. Жмете shift + "}" для поиска вперёд либо shift + "{" для поиска назад. Удаляете клавишей Delete. Если это не сделать - звук неизбежно разбежится с видеопотоком. Эти манипуляции нужно делать несколько раз, пока ВД не сообщит "no next (previous) dropped frame" (в нижнем левом углу). Эти фреймы ВД просто игнорирует - так что лучше удалить больное место сразу. Только после этого следует переходить к обработке AVI : изменению FPS, сохранению отдельно видео/звука и т.д.

  • Copyright © Олег Антошкив Хочу дать совет как избежать процесса перезаписи AVI с целью изменить у него Frame Rate. Для этого достаточно использовать программу : Avifrate1.10 - framerate changer for Avis. Она изменяет Frame Rate в заголовке AVI без перезаписывания всего файла, а это существенно экономит время и не нужно свободного места на диске для промежуточного файла. Я неоднократно использовал эту программу для приведения частоты кадров к одному значению у нескольких AVI и последующей склейки в VirtualDub. Со звуком я немного по другому работал: из каждого фрагмента сохранял звук в отдельные файлы, корректировал их длительность, потом склеивал все звуковые фрагменты в один кусок и уже его подключал в VirtualDub в качестве источника звука для "виртуально" соединенных фрагментов видео.