Printable Version of Topic
Click here to view this topic in its original format
Unofficial VirtualDub Support Forums > Testing / Bug Reports > Jobs And Multiple Virtualdub Instances


Posted by: schleimboitel Jul 16 2012, 07:52 AM
Hi

I occured the following problem: If I have multiple instances / processes of VirtualDub started, and save files as jobs, it comes to conflicts with the VirtualDub.jobs list file.

E.g. If you start a first instance of VDub and save a file as job, it gets stored to the local VirtualDub.jobs-file. If you start a second instance, the jobs-file gets read correctly. If you delete the job in the 2nd instance, and close VirtualDub, the jobs-file gets emptied. But if you open now the jobs list with the first instance, the job is still there - and it's rewritten to the jobs-file.

So the instances of VirtualDub seem to cache the jobs internally, and output them every time the "job control" gets opened or VirtualDub gets closed. I think it would be better to import the local jobs file evertime the jobs window gets opened and to update the jobs file only when a new job gets added, changed or deleted etc.

I know there's the possibility to save job lists manually but as I use VirtualDub with scripts it would be much more comfortable if the local jobs file would be only changed if there are made changes by an instance of VDub...

Checked on VDub 1.10.1 & 1.10.2...

Posted by: dloneranger Jul 16 2012, 12:57 PM
Or you could use Virtualdubs master/slave system where you can have multiple pc's or/and instances all sharing one jobs list

From the jobs control dialog, pick use shared list from the file menu
Or you can do what I do and automate it completely, as follows

First make a shared jobs list from the jobs control dialog eg c:\Sharedjobs.jobs
Then, make 2 shortcuts to virtualdub
Rename one of them to something distinct like VirtualDub Master
Right click on the shortcut and select properties
In the target box move to the end and add
/master "c:\SharedJobs.jobs'
Now, whenever that shortcut is opened, virtualdub will open in master mode, and use the shared list
eg here's mine, that starts it in master mode, loads my default script that has my processing settings etc in (x264 codec, pcm audio, a list of unticked fave filters) and sets the video to direct stream copy
(It's a bit weird selecting a codec, and direct stream copy, but all I have to do is pick full processing and the codec's already set up for me)
CODE

"C:\Program Files (x86)\Common Files\Dlone\VirtualDub\VirtualDub.exe" /cmd "VirtualDub.video.SetMode(0)" /master "F:\Karls DropBox\Dropbox\NewVids.jobs" /s "C:\Users\Public\Documents\X264.vdscript"


With the other shortcut, do the same, but in the target box, add this instead
/slave "c:\sharedjobs.jobs"

(there's a space before the /)

When the slaves are opened, they will use the shared jobs list, and start encoding right away

What I do, is move the slave shortcut into the startup section of the start menu, so it automatically runs
Then all I have on the desktop is the master shortcut
With that one, i just load/edit and then queue jobs, letting the slave do the work in the background
But you could just open as many slave instances as you like

You can also do this across multiple pc's as long as the shared list and video files are accessible from all the pc's

There's more info in the help file under batch operation->distributed mode

With this, you can also write batch files that load scripts and saves them to the shared jobs list
eg here's my batch file that re-encodes any video's dropped onto it using my Lagarigh script that resaves using Lagarith, and pcm audio (and changing the file extension to .avi) - you could use any script you like though
CODE
@echo off

set vdub="C:\Program Files (x86)\Common Files\Dlone\VirtualDub\VDub.exe" /master "F:\Karls DropBox\Dropbox\NewVids.jobs" /s "C:\Users\Public\Documents\LagsFullProcess.vcf"
set dest=H:\Video Output\lags\

set count=0
set failed=0

:loop
if .%1.==.. goto ex
%vdub% /p %1 "%dest%%~n1.avi" /x >nul:
if errorlevel 1 goto fail
:ok
echo %~n1
set /a count=count+1
goto nxt

:fail
echo **FAIL** %~n1
set /a failed=failed+1

:nxt
shift
goto loop

:ex
echo.
echo Added %count% files
if %failed% EQO 0 goto nofail
echo Failed %failed% files
:nofail
pause

Posted by: schleimboitel Jul 16 2012, 09:24 PM
Big thanks for the very detailed answer.

I did not knew about the master/slave feature yet, that's great. It works like charm doing it as you explained. Now I can render video sequences in the background and work on with editing without have to wait till the render process gets finished.

Thanks again.

Posted by: dloneranger Jul 16 2012, 09:44 PM
You're welcome

Powered by Invision Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)