Тема: VBScript & JScript надо связать ширину видеокадра и перенос файла
В видеоредакторе Avidemux 2.5 командная строка основана на ECMAScript 5. Для обработки видеофайлов я давно пользуюсь такой конструкцией из 2х файлов.
Avidemux.vbs
input = "f:\00\"
output= input&"output_xvid\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
If not objFSO.FolderExists(output) Then objFSO.CreateFolder output
RecursiveFolderScan input
'Создаём процедуру рекурсивного обхода каталога
Sub RecursiveFolderScan(FolderPath)
'Получаем объектную модель текущего каталога
Set Folder = objFSO.GetFolder(FolderPath)
'Перебираем все файлы в текущем каталоге
For Each File in Folder.Files
WSHShell.Run """C:\Program Files\Avidemux 2.5\avidemux2_cli.exe"" --force-alt-h264 --force-unpack --load """ & File & """ --run xvid.js --save """ & output & File.Name & """ --quit",2,True
Next
End Sub
Set WSHShell = Nothing
xvid.js
var app = new Avidemux();
var width, height;
width = app.video.width; // ширина видеокадра
height = app.video.height; // высота видеокадра
if (width > 700) // если ширина видеокадра больше 700px
{
различные видеофильтры итд
}
app.setContainer("AVI");
Сейчас захотелось отсортировать видеофайлы по ширине видеокадра т.е. если ширина видеокадра больше 700px то файл переносим в др.папку. Вот с переносом возникли проблемы. Попробовал так
xvid.js
var app = new Avidemux();
var width, height;
var sSrcFolderName = ".";
var sDstFolderName = "f:\\000";
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var file2 = FSO.GetFile(app);
width = app.video.width; // ширина видеокадра
height = app.video.height; // высота видеокадра
if (width > 700) // если ширина видеокадра больше 700px
{
file2.Copy(sDstFolderName);
file2.Delete();
}
app.setContainer("AVI");
не работает. Пробовал так
app.Copy(sDstFolderName);
app.Delete();
тоже не работает.
Я вижу три возможных варианта решения
1.в js-файле перенести файлы. Как?
2.в vbs определить ширину видеокадра. Как?
3. в js-файле создать флаговую переменную, а потом в vbs ее прочитать и на основании ее значения переносить файл. Как? (но, по-моему, это извращение)