Current version

v1.10.4 (stable)


Main page
Archived news
Plugin SDK
Knowledge base
Contact info
Other projects

VirtualDub documentation: Using the Frameserver

Frameserving allows VirtualDub to stream data directly to another application without going through an intermediate file. However, it can be difficult to get working.
How do I install the frameserver?

The frameserver is an integral part of VirtualDub, but you will need to install various clients. There is an auxsetup.exe application included that will install the AVIFile client; directions for installing the codec (VCM) client are in the help file. In addition, there is an aviproxy directory in the binary distribution which will allow you to boost the AVIFile client into proxy mode, the most compatible mode.

When should I use the frameserver?

Frameserving is useful when you are attempting to feed an MPEG-1 file to a program that does not otherwise support it, multiplexing audio into a video stream for clients that expect only one source, or want to use VirtualDub filters without creating an intermediate file.  If you are simply attempting to feed OpenDML or multiple AVI files into an application, you will likely find Avisynth to be a faster solution.

Which options do not work during frameserving?

The following options will work:

  • Video filters.
  • Audio offset (displacement/skew correction).
  • Audio source switching (remultiplexing).
  • Range cropping (start/end) and segment deletion (i.e. crappy edits).

The following options will not:

  • Inverse telecine (IVTC/3:2 pulldown removal).
  • Audio conversion.
  • Audio interleaving -- this is handled by the client app.
  • Audio and video compression.
  • Any filter that shows a lag value in its description, particularly the "temporal smoother."

Which frameclient should I use?

Use the standard AVIFile client if at all possible; it's the least intrusive of all the clients and tends to work for most applications. The proxy mode works with applications that try to force the .avi file extension; however, you should only enable it when needed, since it takes over the regular AVI handler and can interfere with applications that try to write AVI files through the AVIFile interfaces.

The VCM client is harder to use, since it requires that a special file be written, and is probably less stable than the AVIFile client. Use it only as a last resort.

What does the proxy mode do?

The regular frameclient is an AVIFile handler that takes the .vdr file extension and sits alongside the standard Windows AVI, WAV, and AU handlers; it only activates when a vdr file extension or RIFF file type is detected. The proxy mode installs VirtualDub's AVIFile handler directly on top of the AVI slot; all AVI requests then go through VirtualDub's handler first. Signpost files activate the frameclient, and AVI files tunnel through to the regular Windows handler. Because of the tunneling, it's possible that other applications may malfunction even when frameserving isn't active, which is why you shouldn't leave the proxy handler installed.

One side benefit to the aviproxy system is that the proxyoff.reg file restores some original Windows registry settings and can sometimes fix MMSYSTEM296 errors in Media Player. Another is that, when active, the proxy driver will tunnel any text file that begins with #avisynth through to Avisynth, if it is installed.

Which applications can connect to the frameserver?

I haven't tracked this in a long time, but generally, any application which can connect to Ben Rudiak-Gould's Avisynth should be able to connect to VirtualDub; see the Avisynth applications page for a non-exhaustive list.  It is likely that if an application accepts MPEG-1 files, it will have difficulty connecting to VirtualDub because the usual way of supporting MPEG-1 is to use DirectShow for input, which has problems with the frameserver.

I've heard that Windows Media Encoder 8 will connect if you use the VCM codec, but I haven't tried it myself.

What is the procedure for starting a frameserving session?

VirtualDub must always be started in frameserver mode before the client connects; initialize all necessary settings and then start the frameserver from the File menu. Save a signpost with the .vdr extension for the regular AVIFile client, or .avi for AVIFile proxy mode; the frameserver status window should then appear. Open the signpost in the client application, and you should start to see message counts rising in the status window, and possibly the first frame in the client.

How do I get Avisynth to connect?

Use the AVISource filter.  DirectShowSource is unreliable and OpenDMLSource definitely won't work.

How do I get Tsunami MPEG Encoder (TMPGEnc) to connect?

The latest versions of TMPGEnc (12a+) should be able to connect automatically through its "AVI VFW compatibility reader" plugin, as long as you have the AVIFile client installed. If that doesn't work, download the ReadAVS VFAPI plugin from the Avisynth applications page, and install it in TMPGEnc's directory. If you already have the ReadAVS plugin installed, try disabling it temporarily, since it sometimes goofs up when the AVI VFW reader doesn't (!).