Скрипт для virtualdub для нарезки видео

У меня есть видео, которые я хотел бы обработать, чтобы удалить x секунд в их начале. Так как у меня около 140 видео, я начал писать сценарий для этого, но... он не работает!

Мой текущий сценарий:

      VirtualDub.audio.SetSource(1);
VirtualDub.audio.SetMode(0);
VirtualDub.audio.SetInterleave(1,500,1,0,0);
VirtualDub.audio.SetClipMode(1,1);
VirtualDub.audio.SetEditMode(1);
VirtualDub.audio.SetConversion(0,0,0,0,0);
VirtualDub.audio.SetVolume();
VirtualDub.audio.SetCompression();
VirtualDub.audio.EnableFilterGraph(0);
VirtualDub.video.SetInputFormat(0);
VirtualDub.video.SetOutputFormat(7);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetSmartRendering(0);
VirtualDub.video.SetPreserveEmptyFrames(0);
VirtualDub.video.SetFrameRate2(15,1,1);
VirtualDub.video.SetRange(600000,290000);
VirtualDub.video.SetIVTC(0, 0, 0, 0);
VirtualDub.video.SetCompression(0x6376736d,0,8000,0);
VirtualDub.video.SetCompData(4,"SwAAAA==");
VirtualDub.video.filters.Clear();
VirtualDub.audio.filters.Clear();

Как вы могли заметить, я также меняю частоту кадров и сжимаю видео.

Моя командная строка: "C:\Program Files\VirtualDub-1.10.4\VirtualDub.exe" /s "C:\Users...\framerate.vdscript" /c /b "C:\Users... \видео" "C:\Пользователи...\выход" /r /x

Это позволяет мне обрабатывать все видео в папке "C:\Users...\video" и сохранять их в папке "C:\Users...\output".

Изменение частоты кадров и сжатие работают отлично, но не обрезка!!! Озадачивает то, что когда я открываю одно из видео в VDub, а затем загружаю скрипт, он на самом деле определяет диапазон и обрабатывает его именно так, как я хочу !!!

Дополнительный вопрос заключается в том, как я могу определить конкретные запуски для каждого видеофайла (я могу изменить сценарий, открывающий каждый диапазон настроек файла, закрывающий его и имеющий процедуру изменения диапазона в соответствии с каждым файлом - не уверен, что это возможно в сценарии, и я не знаю, как это сделать, но я еще не проверял).

Любая помощь будет очень высоко ценится !

Ксавье

1 ответ

Я исследовал свою вторую цель (обработку нескольких файлов), используя приведенный ниже скрипт, который является упрощенной версией предыдущего (без звука и, казалось бы, бесполезных вещей):

      VirtualDub.Open("C:/Users/.../File1.avi",0,0);
VirtualDub.video.SetFrameRate2(15,1,1);
VirtualDub.video.SetRange(600000,290000);
VirtualDub.video.SetCompression(0x6376736d,0,8000,0);
VirtualDub.video.SetCompData(4,"SwAAAA==");
VirtualDub.video.filters.Clear();
VirtualDub.SaveAVI("C:/Users/.../Output1.avi");
VirtualDub.Open("C:/Users/.../File2.avi",0,0);
VirtualDub.video.SetFrameRate2(15,1,1);
VirtualDub.video.SetRange(600000,290000);
VirtualDub.video.SetCompression(0x6376736d,0,8000,0);
VirtualDub.video.SetCompData(4,"SwAAAA==");
VirtualDub.video.filters.Clear();
VirtualDub.SaveAVI("C:/Users/.../Output2.avi");

И это сработало!!! Может быть, проблема заключалась в рекурсивной обработке содержимого одной папки?

Обратите внимание, что при перемещении из командной строки в скрипт \ в пути необходимо изменить на /

Ваше здоровье,

Ксавье

Другие вопросы по тегам