Home Up Donations DVD FAQ Guestbook

 

 

How Do You Do It?

I've been getting this question often. "How did you..." Here is a list of programs that I use during creation of my DVDs. I will update it as it changes. Hopefully I will also add some tips and tricks for some of these applications in the future.

Pinnace Studio 9 Plus - Available in stores for about $100.

MGI Video Wave - I originally purchased this for $50 several years ago. MGI is out of business now, but a newer version is available from Roxio, I think.

VirtualDub - This is freeware. You can download it from the internet.

AviSynth - This is also freeware available on the internet.

MenuEdit - Shareware available for a $15 PayPal purchase

Adobe Photoshop - This guy's expensive. I bought the student version for $300 when I was in college. Paint Shop Pro is a cheaper alternative.

Nero 6 Ultra Edition - I got it for free. Ask me how.

Canopus DV File Converter - Availble as a free download from Canopus.

Cool Edit 96 - The 2000 version has been bought by Adobe and is now sold for $300, but you can still find the '96 version for free on the net. A very good audio editor.

I know it probably sounds pretty complicated. It kinda is. The most important piece in the puzzle is Pinnacle Studio. You could probably get pretty good results with just Studio and the "Advanced Codec" add-on pack, which allows Studio to import DivX videos. As a warning, though, Studio is pretty complicated to learn. You may do better starting out with some of the simpler alternatives such as Sonic's MyDVD. You sacrifice flexibility for ease of use.

Resize Video Image

A question that I am frequently asked is how do I resize the image so that the subtitles are visible on a TV screen? Fansub material downloaded from the internet is invariably formatted for display on a computer screen. It is usually 640x480 resolution, and the subtitles that are added to the picture tend to be put right near the bottom of the frame, and can often extend out to the edges of the frame.

This format does not work well for display on your standard NTSC television screen. NTSC picture signal is 720x480 resolution, and all TVs display only a portion of the image, with the top, bottom, left, and right cropped slightly. The reasons this was done are historical, and stem from the needs of a market where precise information display is not the focus, but rather perceived picture quality. Anyway, the bottom line is that if you simply recompress the file you downloaded from the internet and then burn that recompressed file onto a DVD, then you will likely not be able to read the subtitles. You will need to re-scale the image to make it fit on your TV screen.

I do this with the most recent experimental version of VirtualDub (1.6.3 at the time of this writing). To scale down the video, open the video file in VirtualDub, and then select Filters from the Video menu. You will be presented with a screen that looks like the following:

Click the Add... button, and select the resize filter from the list. You will now see a screen as follows:

Fill the boxes in with the values I have shown above. The video content will be resized from 640x480 to 660x420. Notice that this scaling does not maintain the original proportions of the image. I am actually expanding it horizontally at the same time that I am shrinking it vertically. This will yield slightly strange looking results on the computer screen, but will look just fine on the TV, where the pixels are rectangular, rather than square-shaped. How did I come up with these numbers? Hours of experimentation. I played around a lot, and burned a lot of DVDs before I was satisfied that I had a good solution. I tend to select the Bilinear filtering for the resize operation because it gives good looking results with a minimum of processing overhead. You can select a variant of Bicubic if you want slightly higher quality output. I don't think that it produces noticeably better results with the source material I have been using. In addition to resizing the image, you will need to also expand the frame to the NTSC 720x480 resolution I mentioned earlier. These settings will cause the output video to be 660x420, with a black (or any color you pick) border of 30 pixels all around it.

Once you have set up your resize filter, make sure you select an output compression under the Video->Compression... menu option. If you don't select anything, then the output video will be uncompressed, and HUGE! I tend to use digital video compression from DVSoft, since this is one of the input formats that Pinnacle Studio accepts. After choosing the compression, go ahead and do a File->Save as AVI... to output your video. You can now load this video file into your DVD creation software to make a TV-viewable image.

NOTE: Some people have asked me about widescreen televisions. The above procedure produces a pleasing output for standard sized (4:3 aspect ratio) output that can be viewed on either a standard TV, or on a widescreen TV that is setup to watch a standard sized input signal. I have personally tested all my DVDs on both a standard TV and on a widescreen (16:9 aspect ratio) TV. If, on the other hand, you have a widescreen input, as some anime is, then you would need to modify some of the above steps to either maintain that widescreen aspect ratio, or to convert it to a standard aspect ratio.

Disc Ten  Menu

The menu on disc ten is a pretty cool achievement. The main menu on this DVD contains nine mini screens, each showing a random clip from the four episodes on that disc. The clips on each screen change frequently, so you never really know exactly what you're looking at. It's a pretty cool effect, and it makes a great background video for a menu. Below is a screen capture from the disc ten menu. 

This was done entirely in AviSynth, which is a freely downloadable video-scripting program. I wrote the script to create this multi-screen effect, myself. This script is shown below, and can be downloaded here.

clip = avisource("junk.avi")

horizontal_screens = 3
Vertical_screens = 3
Final_clip_length = 6 * 60
Sub_clip_min_length = 1
Sub_clip_max_length = 10

function create_clip(clip src, int frames, int min, int max, int in_frames)
{
    start = rand(framecount(src))
    len = rand(max - min) + min

    vid = (in_frames == 0 ? BlankClip(src, len) : trim(src, start, start + len))

    return (in_frames + len > frames ?
    \   trim(vid, 1, frames - in_frames) :
    \   (in_frames == 0 ? Dissolve(vid, create_clip(src, frames, min, max,
    \                              in_frames + len), 30)
    \                   : vid + create_clip(src, frames, min, max,
    \                                       in_frames + len) ) )
}

function create_pos(clip src, int x, int y, int frames, int min,
\                   int max, int in_x, int in_y)
{
    vid = create_clip(src, frames, min, max, 0)
    vid = PointResize(vid, 720/x, 480/y)
    vid = AddBorders(vid, in_x*(720/x), in_y*(480/y), (x-in_x-1)*(720/x),
    \                (y-in_y-1)*(480/y), color=HexValue("000000"))

    return vid
}

function create_grid(clip src, int x, int y, int frames, int min, int max,
\                    int in_x, int in_y)
{
    next_x = (in_x + 1 == x ? 0 : in_x+1)
    next_y = (next_x == 0 ? in_y + 1 : in_y)

    vid = create_pos(src, x, y, frames, min, max, in_x, in_y)
    return (next_y != y ? create_grid_elem(vid, src, x, y, frames,
    \                     min, max, next_x, next_y) : vid)
}

function create_grid_elem(clip vid1, clip src, int x, int y, int frames,
\                         int min, int max, int next_x, int next_y)
{
    vid2 = create_grid(src, x, y, frames, min, max, next_x, next_y)
    vid = Overlay(KillAudio(vid1), KillAudio(vid2), mode="Lighten")
    num_clip = x*next_y+next_x
    total_clips = float(x*y-num_clip+1)
    return AudioDub(vid, MixAudio(vid1, vid2, 1/total_clips, 1-1/total_clips))
}

return create_grid(clip, horizontal_screens, Vertical_screens,
\                  Final_clip_length*30, Sub_clip_min_length*30,
\                  Sub_clip_max_length*30, 0, 0)