Hi,
I'm running VirtualDub2 64bit build 44015 in a Windows10 64bit enrironment.
I've created a windows batch script to add jobs to VDub job list. The processing input is from the AviSynth+ frame server via a .avs input file. The job file created fails when run. Creating the same job within the VDub GUI runs as expected. I've noticed differences in the job file which appear to result in a null video file being processed.
Using the GUI interface, the resultant job file is as follows:
// VirtualDub job list (Sylia script format)
// This is a program generated file -- edit at your own risk.
//
// $signature 0 1
// $numjobs 1
//
// $job "Job 1"
// $data ""
// $input "D:\Users\miket\Videos\Process VHS Tapes\Files De-Interlaced\Test 01.avs"
// $output "D:\Users\miket\Videos\Process VHS Tapes\Files De-Interlaced\Test 01.mov"
// $state 2
// $id b0a07ec542738288
// $runner_id b0a05aad000035dc
// $runner_name "MIKE-PC"
// $start_time 01d5d837 f5df5c78
// $end_time 01d5d838 26b4ef69
// $script
// $script
VirtualDub.Open("D:\\Users\\miket\\Videos\\Process VHS Tapes\\Files De-Interlaced\\Test 01.avs","",0);
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.SetCompressionWithHint(255,48000,2,16,48000,1536,5,"EZBW5QA=","ffmpeg_aac");
VirtualDub.audio.SetCompData(16,"AgAAAAAAAADAAAAAAQAAAA==");
VirtualDub.audio.EnableFilterGraph(0);
VirtualDub.video.SetInputFormat(0);
VirtualDub.video.SetOutputFormat(15);
VirtualDub.video.SetOutputMatrix(2,1);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetSmartRendering(0);
VirtualDub.video.SetPreserveEmptyFrames(0);
VirtualDub.video.SetFrameRate2(0,0,1);
VirtualDub.video.SetIVTC(0, 0, 0, 0);
VirtualDub.video.SetCompression(0x68637061,0,10000,0,"avlib-1.vdplugin");
VirtualDub.video.SetCompData(20,"AAAAAAQAAAAKAAAAAwAAAAQAAAA=");
VirtualDub.SaveFormat("ffmpeg","mov");
VirtualDub.SaveAudioFormat("");
VirtualDub.video.filters.BeginUpdate();
VirtualDub.video.filters.Clear();
VirtualDub.video.filters.Add("null transform");
VirtualDub.video.filters.instance[0].SetClipping(18,2,14,12);
VirtualDub.video.filters.Add("resize");
VirtualDub.video.filters.instance[1].Config(960,720,0,4,3,0,320,240,4,3,0,4,1,0x000000);
VirtualDub.video.filters.Add("smoother");
VirtualDub.video.filters.instance[2].Config(200,1);
VirtualDub.video.filters.instance[2].SetEnabled(false);
VirtualDub.video.filters.Add("temporal smoother");
VirtualDub.video.filters.instance[3].Config(2);
VirtualDub.video.filters.instance[3].SetEnabled(false);
VirtualDub.video.filters.Add("sharpen");
VirtualDub.video.filters.instance[4].Config(5);
VirtualDub.video.filters.instance[4].SetEnabled(false);
VirtualDub.video.filters.Add("Histogram");
VirtualDub.video.filters.instance[5].Config(0);
VirtualDub.video.filters.instance[5].SetEnabled(false);
VirtualDub.video.filters.EndUpdate();
VirtualDub.audio.filters.Clear();
**VirtualDub.subset.Clear();
VirtualDub.subset.AddRange(0,1464);
VirtualDub.video.SetRange();**
VirtualDub.project.ClearTextInfo();
// -- $reloadstop --
VirtualDub.SaveAVI("D:\\Users\\miket\\Videos\\Process VHS Tapes\\Files De-Interlaced\\Test 01.mov");
VirtualDub.audio.SetSource(1);
VirtualDub.Close();
// $endjob
//
//--------------------------------------------------
// $done
Using the batch command : %VDub% /s%SCRIPT% /p%INPUT%,%OUTPUT% the job file generated is as follows:
// VirtualDub job list (Sylia script format)
// This is a program generated file -- edit at your own risk.
//
// $signature 0 1
// $numjobs 1
//
// $job "Job 1"
// $data ""
// $input "D:\Users\miket\Videos\Process VHS Tapes\Files De-Interlaced\Test 01.avs"
// $output "D:\Users\miket\Videos\Process VHS Tapes\Files De-Interlaced\Test 01.mov"
// $state 0
// $id b0a0e5ed428df577
// $start_time 00000000 00000000
// $end_time 00000000 00000000
// $script
VirtualDub.Open("D:\\Users\\miket\\Videos\\Process VHS Tapes\\Files De-Interlaced\\Test 01.avs","",0);
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.SetCompressionWithHint(255,48000,2,16,48000,1536,5,"EZBW5QA=","ffmpeg_aac");
VirtualDub.audio.SetCompData(16,"AgAAAAAAAADAAAAAAQAAAA==");
VirtualDub.audio.EnableFilterGraph(0);
VirtualDub.video.SetInputFormat(0);
VirtualDub.video.SetOutputFormat(15);
VirtualDub.video.SetOutputMatrix(2,1);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetSmartRendering(0);
VirtualDub.video.SetPreserveEmptyFrames(0);
VirtualDub.video.SetFrameRate2(0,0,1);
VirtualDub.video.SetIVTC(0, 0, 0, 0);
VirtualDub.video.SetCompression(0x68637061,0,10000,0,"avlib-1.vdplugin");
VirtualDub.video.SetCompData(20,"AAAAAAQAAAAKAAAAAwAAAAQAAAA=");
VirtualDub.SaveFormat("ffmpeg","mov");
VirtualDub.SaveAudioFormat("");
VirtualDub.video.filters.BeginUpdate();
VirtualDub.video.filters.Clear();
VirtualDub.video.filters.Add("null transform");
VirtualDub.video.filters.instance[0].SetClipping(18,2,14,12);
VirtualDub.video.filters.Add("resize");
VirtualDub.video.filters.instance[1].Config(960,720,0,4,3,0,320,240,4,3,0,4,1,0x000000);
VirtualDub.video.filters.Add("smoother");
VirtualDub.video.filters.instance[2].Config(200,1);
VirtualDub.video.filters.instance[2].SetEnabled(false);
VirtualDub.video.filters.Add("temporal smoother");
VirtualDub.video.filters.instance[3].Config(2);
VirtualDub.video.filters.instance[3].SetEnabled(false);
VirtualDub.video.filters.Add("sharpen");
VirtualDub.video.filters.instance[4].Config(5);
VirtualDub.video.filters.instance[4].SetEnabled(false);
VirtualDub.video.filters.Add("Histogram");
VirtualDub.video.filters.instance[5].Config(0);
VirtualDub.video.filters.instance[5].SetEnabled(false);
VirtualDub.video.filters.EndUpdate();
VirtualDub.audio.filters.Clear();
**VirtualDub.subset.Clear();
VirtualDub.video.SetRangeFrames(0,0);**
VirtualDub.project.ClearTextInfo();
// -- $reloadstop --
VirtualDub.SaveAVI("D:\\Users\\miket\\Videos\\Process VHS Tapes\\Files De-Interlaced\\Test 01.mov");
VirtualDub.audio.SetSource(1);
VirtualDub.Close();
// $endjob
//
//--------------------------------------------------
// $done
I've highlighted the differences (hopefully). The issue appears to be that the command line version sets up a null video subset for processing in the job file.
In my application, the files do not exist when running the batch command, so determining the frame size is not possible. It may be that VDub is defaulting to a null file in that case. If it is, it may be preferable (for me at least) to default to processing the full file.
My current workaround is to post process the job file and comment out the lines.
VirtualDub.subset.Clear();
VirtualDub.video.SetRangeFrames(0,0);
Messy, but works for me.
Anonymous
Highlighting differences failed - Difference contained within bold delimiters.
By frame size, I really meant frame count.
Thanks for report. Your suggestion about the default range sounds right.
I'm surprised it actually created any job with missing input file!
For my application, I'm using the batch file to set up a series of chained jobs (each job utilising the file output from the previous job). The batch file is simply used to automate the set-up process. In my case, each job processess the the full input file, without any trimming. I'd guess that would be the required default position for most users (in the case of an input file of unknown length).
Last edit: Mike Tough 2020-01-31
fixed in build 44065
The new behavior is to not write subset commands at all if entire file is processed.