Воскресенье, 06.07.2025, 16:48
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Статьи Nokia [61] Картинки для Nokia [2]
Мини-чат
Статистика
тИЦ и PR сайта
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа


Главная » Статьи » Статьи Nokia

Обработка видео в VirtualDub. Объединение нескольких AVI-файлов в один

Обработка видео в VirtualDub.

Объединение нескольких AVI-файлов в один

Объединение нескольких AVI-файлов осуществить не так просто. Дело в том, что чаще всего отдельные фрагменты имеют разные значения FPS, и именно по этой причине VirtualDub отказывается их объединять.

Разное значение FPS, другими словами, количество кадров в секунду, могло стать следствием того, что при захвате видео делалась привязка видеопотока к звуку во избежание асинхронизации. Что же делать?

Чтобы избежать подобных проблем, нужно захватывать видео не кусками, а полностью (см. статью "Захват видео").

Второй способ избежать проблем при склеивании файлов - не привязывать видеопоток к звуку при захвате. К сожалению, при этом возникает риск рассинхронизации.

А теперь переходим к процессу объединения.



1. Идеальный вариант - AVI-файлы имеют одинаковый FPS

Открываем в VirtualDub первый фрагмент, с которого будет начинаться наш ролик.

К открытому фрагменту присоединяем следующий. Для этого выбираем команду Append AVI segment/

Выбираем файл. Открытый таким образом файл будет присоединен к концу предыдущего.

Последующие фрагменты присоединяются аналогичным способом. Фрагменты необходимо присоединять именно в той последовательности, в которой они будут воспроизводиться в конечном ролике.

Все фрагменты открыты. Перед тем, как перейти к сохранению, с ними можно производить любые манипуляции: накладывать фильтры, вырезать ненужные фрагменты и т. д.


2. AVI-файлы с разным FPS

Сразу склеить файлы с различным FPS при помощи VirtualDub не удастся. Поэтому для начала все имеющиеся фрагменты необходимо привести к одному FPS. К сожалению, это весьма непростая задача.

Меняя частоту кадров AVI, мы ускоряем или замедляем поток кадров, следовательно, меняем продолжительность AVI. Но при этом звуковая дорожка остается неизменной: VirtualDub не сопоставляет ее с видеопотоком. Поэтому асинхронизация видео- и аудиопотоков неизбежна.

Определим FPS фрагментов, которые нужно объединить. Для этого все файлы поочередно открываем в VirtualDub, и в меню Video выбираем Frame rate.

В открывшемся окне находится значение FPS текущего файла:

Запомните или запишите значение FPS. Откройте следующий AVI-файл и точно так же выясните его FPS, и т. д.

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

  • Если из всех имеющихся фрагментов всего один или несколько имеют значительно отличающееся значение FPS - обработайте их по отдельности. Этот один или несколько фрагментов пока не трогайте, а возьмите похожие на них, рассчитайте и приведите их к среднему FPS. Оставшиеся приведите к этому же среднему FPS другим способом (об этом - чуть ниже).

  • Если у всех файлов разбег FPS значительный, их также следует приводить к среднему значению, но несколько иным способом.


2.1. Приведение AVI файлов к одному FPS (незначительный разбег).

Если видеофрагменты захватывались из одного и того же источника, то, как правило, FPS у них отличается незначительно. Кроме того, чем фрагменты короче, тем меньше разбег.

Итак, нам известен средний FPS, к которому требуется привести все имеющиеся фрагменты. Открываем в VirtualDub первый AVI-файл:

Передвинете ползунок в конец фрагмента или нажмите соответствующую кнопку на панели, чтобы узнать его продолжительность:

Данный фрагмент имеет продолжительность 0 часов, 08 минут, 40,369 секунд.

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

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

Взгляните на полученную продолжительность фрагмента: теперь она другая.

В силу того, что данный фрагмент имел продолжительность всего 8 минут, а FPS изменялся незначительно, изменение в продолжительности составило лишь доли секунды. Это означает, что в конце фрагмента асинхронизация видео и звука составляет именно эти доли секунды. Это немного, поэтому все можно оставить как есть.

Сохраняем изменения FPS. Для этого предварительно убедитесь, что для видео- и аудиопотоков в соответствующих меню выбран пункт Direct stream copy, то есть потоки будут копироваться без обработки.

Сохраните.

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

После обработки всех фрагментов можно переходить непосредственно к соединению AVI-файлов. Делается это так же, как описано в пункте первом.

Теперь рассмотрим те случаи, в которых асинхронизация получилась заметной.

Рассинхронизацию в пределах 0,5 секунд к концу фрагмента можно в какой-то степени исправить имеющимися у VirtualDub средствами. Для этого нужно зайти :

Здесь выберете Preload и Interleave = 1000ms ... 1500ms. Изменяя значение Delay audio track, вы можете немного сдвинуть звук относительно видеопотока. Положительное значение используйте, если звук опережает видео. Отрицательные значения - если отстает.

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

К примеру, изначально мы имеем в начале полную синхронизацию, а к концу уход одного потока относительно другого составляет 0,5 секунд. Сделайте так, чтобы в начале асинхронизация составляла 0,25 секунд. Ближе к середине возникнет синхронность, а в конце - снова уход на 0,25 секунд.

Не следует думать, что 0,5 секунд - это ограничение, просто большую асинхронизацию простым сдвижением потока ни исправить, ни компенсировать не удастся: она все равно останется заметной.

Для сохранения изменений в AVI после изменения параметра Delay audio track достаточно выбрать для видео- и аудиопотоков Direct stream copy, после чего сохранить.

Если вас не устраивает устранение асинхронизации за счет сдвижения потока, а также если имеющаяся рассинхронизация значительна, читайте следующий пункт.



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 - кодеков, в которых каждый кадр при сжатии является ключевым. В противном случае обрабатываться будут только полные кадры (ключевые).

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

  • Автор - Олег Антошкив

    Как избежать процесса перезаписи AVI с целью изменения его Frame rate? Для этого достаточно использовать программу Avifrate1.10 - Frame rate changer for AVIs. Она изменяет Frame rate в заголовке AVI без перезаписывания всего файла, а это существенно экономит время и не требует свободного места на диске для промежуточного файла.

    Мы неоднократно использовали эту программу для приведения частоты кадров к одному значению у нескольких AVI и последующей склейки в VirtualDub.

    Со звуком мы работали немного по-другому: из каждого фрагмента сохраняли звук в отдельные файлы, корректировали их длительность, а затем склеивали все звуковые фрагменты в один кусок, который и подключали в VirtualDub в качестве источника звука для "виртуально" соединенных фрагментов видео.

по материалам сайта www.ixbt.com

Автор - Дмитрий Корнев

Категория: Статьи Nokia | Добавил: gyurgy (14.06.2010)
Просмотров: 15119 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • НОВОСТИ


    .:: Nokia N9



      подробнее >>>


    ..............................................
    .:: Nokia C7



    подробнее >>>

    ............................................
    .:: Nokia C2-00





     подробнее >>>


    .......................................
    .:: Nokia C1-02





     подробнее >>>


    .......................................

    WMlink.ru - рекламный брокерCopyright MyCorp © 2025