Capture: Multi-segment mode

VirtualDub

VirtualDub help - Capture: Multi-segment mode

Spill mode allows a video capture operation to be split across multiple files. This allows file size limits to be bypassed and also permits use of multiple partitions.

Selecting spill drives for capture

Select the Capture > Capture drives to set up the drive array for spill mode:

Add/remove spill drive

Add a new spill drive, or remove the currently selected drive. When adding a new drive, click on the threshold or path portion of the entry to edit it.

Capture drives can be on the same physical hard drive, but should not share the same logical hard drive (volume). It is a bad idea to add two entries for the same volume, as the two will have the same free space totals. For instance, C:\ and C:\Capture should not both be added to the list unless a different partition is mounted at C:\Capture.

Threshold

The threshold controls the minimum amount of disk space, in megabytes, that must be free on the drive for VirtualDub to use it. For instance, if the threshold is set to 50MB and the minimum capture file size is 100MB, VirtualDub will not start a new file on that drive unless there is at least 50MB + 100MB = 150MB free space, and will stop writing to a file being generated there once free space drops below 50MB.

Try not to create AVI files smaller than... MB
Sets the minimum file size that should be creatable above a spill drive's threshold before a file should be started on it. This prevents VirtualDub from switching to a spill drive that only has 14MB above its threshold; not only is this annoying, but it can result in back-to-back file switches, which can cause problems.
Try not to create AVI files larger than... MB
Sets the maximum file size that VirtualDub should aim for before switching to a new file. The maximum value for this file is 2048MB, because VirtualDub disables its large AVI file support when writing spill files. It should be set some amount below that to provide a buffer to account for latency during the video capture, which is why the default is 1900MB.

Using multi-segment capture

Enable Capture > Enable multisegment capture to allow use of spill drives. The capture filename will then be used to generate the prefix for sequentially numbered files, so that a base name of capture.avi produces capture.00.avi, capture.01.avi, capture.02.avi, etc. Then begin capture as usual to start capturing to a series of sequential files.

Note Make sure the capture path is on one of the spill drives, or VirtualDub will switch to one of the drives shortly after the start of the capture, leaving a ~50MB runt as the first file.

Caveats with multi-segment capture

As when editing, audio and video compression can impact the ability of VirtualDub to produce clean cuts between segments. In the interest of speed, VirtualDub is a bit sloppy when writing capture segments. Issues include:

  • If video compression with delta frames is being used, a segment can start on a delta frame. This is OK if VirtualDub is loading the capture segment, but can be a problem if you are trying to load individual segments into a program that doesn't expect raw stream slices, because the delta frame is undecodable without the previous segment.
  • Audio compression can cause a segment's audio to be slightly desynchronized from the video, subject to the block size of the audio compression. This isn't a problem when joining all of the segments together, though.
  • There may be one additional segment that has a video stream with no video frames in it; this can occur when writing out the final audio during a capture, more audio has been captured than video, and the audio spills over into a new segment but the video doesn't.

If you will attempt to load individual segments or load the files into a different program, it is recommended that you use video compression that does not use delta frames, and disable audio compression.

Reading multi-segment capture files

Each capture segment written by VirtualDub contains a record in it that indicates the location of the next segment. This makes it possible for VirtualDub to follow the sequence of capture files without knowing the list of spill drives, even if the sequence hops between drives. The algorithm for following the chain is as follows:

  • Try the same directory as the previous segment.
  • If that doesn't work, try the directory indicated by the segment hint in the AVI file.
  • If that still doesn't work, ask the user to locate the next segment.

It is thus not a good idea to mix segments from different captures, as VirtualDub may get confused if it sees a capture.06.avi that is actually from a different sequence than capture.05.avi in the same location.

The format of the segment hint is a chunk with the FOURCC segm within the AVI header block. It consists of a single byte which is 00 if no further segments are present, or 01 if more segments should be loaded, followed by the filename of the next segment, null terminated. (Regrettably, this is 8-bit ANSI encoded, not 16-bit Unicode.) The full filename is encoded, although only the path is used, and the filename should still follow the basename.nn.avi convention.