Здавалка
Главная | Обратная связь

Соединяем несколько AVI файлов в один



Соединять воедино несколько AVI файлов не такое простое дело как может показаться по началу. Дело в том, что чаще всего отдельные фрагменты, имеют разный FPS, и именно по этой причине VirtualDub отказывается их соединять.
Разный FPS, другими словами разное количество кадров в секунду, могло получиться из-за того, что при захвате видео вы делали привязку видео потока к звуку, во избежание рассинхронизации видео и звука. Что же теперь делать, спросите вы...
Самый простой и верный способ избежать таких проблем - это захватывать видео не кусками, а все сразу. Тем более, то, как создавать большие по продолжительности и по объему AVI файлы вы уже знаете, и знаете, что особых проблем при этом нет (если вы еще не в курсе, обратитесь к главе «Захват видео»).

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

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

Присоединяем, к уже открытому фрагменту, следующий, для этого выбираем команду:

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

2. Не идеальный вариант - AVI файлы имеют различный FPS.
Мы имеем некоторое количество видео фрагментов, которые в свою очередь имеют различный FPS. Склеить при помощи VirtualDub нам их не удастся. По этому для начала все имеющиеся фрагменты необходимо привести к одному FPS. Процесс этот очень трудоемкий и по этому как я уже говорил лучше до этого не доводить.
Для начала надо узнать некий средний FPS всех фрагментов, что бы к нему приводить все файлы. Можно конечно и не ломать голову, а привести все файлы к целому числу, допустим 25 FPS, особенно это актуально если число FPS всех фрагментов будет близко к этому целому числу.
Чтобы узнать какой FPS имеет отдельно взятый файл необходимо открыть его в VirtualDub.

Затем в меню "Video" выбрать:

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

Открывая поочередно фрагменты (хотя бы часть из них) вы узнаете их FPS, при желании (если разбег значительный) можно оценить некоторое среднее значение, к которому будете приводить AVI файлы.
Переходим к обработке, открываем в VirtualDub первый фрагмент и переходим к уже знакомому диалоговому окну:

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

Теперь что бы сохранить изменения, сохраняем AVI файл.

При этом, выбирая для видео и аудио потоков - Прямое копирование потока - "Direct stream copy".

2. Не идеальный вариант - AVI файлы имеют различный FPS. - продолжение

Дело в том, что, изменив FPS для AVI файла, мы неизбежно получили рассинхронизацию видео и звука, и чем больше вы изменили при этом FPS, тем больше рассинхронизация. Именно по этому, лучше приводить FPS файлов к среднему значению, в этом случае уход будет меньше.
В некоторой степени, эту рассинхронизацию можно поправить, VirtualDub обладает для этого необходимыми средствами (см далее). Но как бы вы при этом не старались - синхронизация, к сожалению, не будет уже идеальной, как это было ранее. Что бы синхронизировать видео и звук зайдите:

Здесь изменяя значение - Задерживать аудио - "Delay audio track by" вы можете немного сжать или наоборот растянуть аудио поток. Положительное значение используйте, если звук опережает видео. Отрицательные значения используйте, если наоборот звук отстает от видео.

Таким образом, подбирая данное значение, можно добиться приемлемой синхронизации видео и звука.
Далее что бы сохранить изменения, необходимо так же сохранить AVI файл, при этом потоки можно не пережимать, т.е. снова выбираем для видео и аудио потоков - Прямое копирование потока - "Direct stream copy".

Не торопитесь закрывать VirtualDub и открытый AVI файл в нем...
После того как файл сохранен, откройте его любым видео проигрывателем и убедитесь еще раз, что звук соответствует изображению. Я сталкивался с тем, что даже всех этих манипуляций была рассинхронизация, и приходилось еще корректировать значение - Задерживать аудио - "Delay audio track by". А если вы еще не закрыли данный файл, в VirtualDub, это будет сделать проще. Просто подкорректируйте еще значение - Задерживать аудио - "Delay audio track by" и сохраните снова.
Таким мутным образом обрабатываются все фрагменты, которые нужно склеить, для всех вы меняете FPS на одно и то же число. Ну а после того как все готово, файлы можно соединять так, как это делается при идеальном варианте, пункт 1.
Ну вот вроде и все!
Если вы знаете более простой способ, буду очень рад с ним познакомиться. Хотя я для себя уже сделал некоторые выводы :
· Захват кусками (фрагментами) не допустим, захватывать необходимо все сразу.
· Если куски все же получились - ничего не делать с ними.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.