Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
Thread Tools | Search this Thread | Display Modes |
3rd December 2011, 17:55 | #1 | Link |
Registered User
Join Date: Oct 2011
Posts: 11
|
VHS: Here's How I Convert Theatrical Material, Your Comments?
The following outlines my strategy for converting VHS tapes of formally theatrical material to digital. I'd be interested in comments or reasoned criticism. It took me a lot of experimentation to develop this method.
1) Capture at 352 x 480 to RGB24 in VirtualDub. Why? Well, first I want be efficient, to capture no more than is necessary to get the best possible picture. 352 is something of a standard width, as in VCD for example. I know some say "hey you might be missing some detail" but VHS and analog TV really don't even have the equivalent of 352 columns, it's more like 304 or 310 I've read in reliable-appearing sources. As to the height, the number of horizontal lines, I go for 480, because virtually all sources I've read say that, and I think it's mechanically the way the NTSC technology works, i.e. there are literally 480 lines. Now as to RGB24, for a while I went with YUY2 which I thought was raw capture (and in a sense it is) but I found out it and similar (YUV12?) modes abbreviate the chroma (or maybe it was the luma) in neighboring pixels, to save space, and because it's supposedly imperceptible to the human eye. But I thought well wait a second, I want any-point-any-color conversions, no compromise, and RGB24 does this from what I've read. I capture in VirtualDub because I find it efficient and it gives me plenty of control over almost everything. 2) Once I've got video according to the above capture, I apply Telecide third-party filter in VirtualDub processing mode. Telecide is amazing and was a real awakening for me because it literally reassembles the progressive film frame from the telecine interlace used to make it display properly on old TVs. There's no fudging or dithering or interpretation, rather it takes the horizontal lines formerly "honeycombed" in sequential frames and restacks them in their original frames. I had no idea this could be done. I'll also crop the capture from 352x480 to 352x476 to eliminate the noise that is almost always seen on the very bottom lines of a VHS source. 3) I then convert the capture to HuffyUV lossless codec using another free program (well I think it's more of advanced GUI) called "Super." This saves a lot of space but is also necessary because a third free program I need, as I'll explain in the next step, won't read my raw RGB24 captures correctly for some reason. There's an option in Super for FFV1 lossless codec as well that produces much smaller files than HuffyUV, but I read up on it and I think it does it by abbreviating the chroma or luma measurements sort of like YUY2 etc. and again I don't want that. 4) Telecide leaves a double frame every fifth frame, just due necessarily to the way the process works, because theatrical material is 24 FPS and VHS/NTSC is 29.97. Without reducing the frame-rate you need the double frame otherwise it would play too fast. But there's a process called "Decimate" that'll lower the frame-rate and do away with those duplicate frames. I never could implement Decimate in VirtualDub though, so I turn to another great program AVIDemux to decimate. AVIDemux as I alluded to above won't read my RGB24 captures right, but it reads HuffyUV lossless fine. At this point, in AVIDemux I'm also encoding to XViD compression codec at quality 2. Oh, I'd love to keep going with lossless codecs but this stuff gets into the hundreds of gigabytes. XViD at level 2 as well will get me a file size for the movie that I can generally save to a data DVD (i.e. less than 4.7 gigs). Level 2 is a very high quality XViD setting. As well, XViD can be played on somewhat older computers with slower processors. 5) Now for whatever reason, AVIDemux in the preceding step mucks up the audio, at least for me it does, the audio won't play anymore though I thought it was just supposed to be direct streaming it over. So as a final step I'll go back to VirtualDub and stream the XViD video produced AVIDemux with the audio from the prior video from Super. All the above gets me to my final file: a 352x476 XViD level 2 video at 24 FPS with the audio from the original capture. I would make the claim that it's a great and versatile conversion at an efficient file size, and I'd challenge anyone to devise a way that yields better conversion from VHS, on those goals (quality, versatility, file size). Yeah, it's a five-step process, and a pain in the butt, but it's nice to watch the result and genuinely wonder if you're seeing better quality video than was originally seen by the people watching that videotape in the late 80s/early 90s/whenever. Now my questions. Do you think I could do the original capture at 352x484 or 352x486, crop to 352x480 to remove the static, and avoid the awkward 352x476 resolution? Or will that result in a few stretched or doubled horizontal lines? As well, I'm aware that 704x480 is a DVD-compliant resolution. I could get there easily by just having double-wide pixels. Is there a way to do that without re-encoding, and incurring more quality loss and bigger file size? Thanks for reading this long message. Last edited by VirtualDubFan; 4th December 2011 at 19:48. Reason: remove sig |
3rd December 2011, 22:16 | #4 | Link | |
Registered User
Join Date: Dec 2007
Location: Germany
Posts: 632
|
Quote:
It may sound weird from a digital point of view but it's true, you cannot represent the full horizontal resolution present in VHS with a horizontal resolution of just 352 digital pixels. You need at about 2 times the amount of pixels to hold all the 250 samples of VHS. So anything below about 500x480 is going to lose samples (of course only if there were such samples to begin with, which means the tape has to be a high fidelity recording, like a commercial one, not a copy of a copy for example and the deck should output a good picture, some like to soften it a lot). This is also why statements such as "VCD is about the same quality as VHS" which one can find commonly on the internet are very wrong. VCD is inferior to VHS in almost every way. But there's another "gotcha", most (if not all) capture hardware will always digitize internally with full NTSC/PAL resolution, the resolution you request is then simply downscaled by the driver, probably using an inferior resizer. The same goes for the color space. Internally the capture hardware uses YUY2, RGB is simply made by the driver from the YUY2 raw data, there is not point in capturing in RGB, you do not gain anything from that. YUY2 is perfectly fine, YV12 should by all means be avoided during capture. So, in conclusion, if you are not starving on HDD space there is no reason not to capture at the full resolution that your capture hardware supplies, which is in most cases either 704 or 720 (you should test which one is correct, otherwise you just get a scaled version of the other one) and 480 lines, some use all 486. Edit: Your workflow is very time consuming and outdated. You can do all that easily, faster and with better results in AviSynth. It would work like this: create a script which loads your raw capture, does inverse telecine and converts to YV12 (very basic script), then open this script in VirtualDub as if it was a video file. Serve to Xvid using VirtualDub's "fast recompress" mode. Done. No need for AVIDemux or SUPER. You can encode the audio straight to MP3 for example in VirtualDub (just install LameACM). It will be muxed into the AVI output together with the video. 352x480 is fully DVD-compliant, no reencode needed (but it has to be MPEG2 in an authored DVD structure of course, not Xvid). If you aim for "best versatility", then why not go for a standard Video-DVD, Xvid does not play on all hardware players. You also have a full 4.38 GB to play with then. Last edited by TheSkiller; 3rd December 2011 at 22:53. |
|
4th December 2011, 00:17 | #5 | Link | |
Registered User
Join Date: Oct 2011
Posts: 11
|
Quote:
I appreciate your notifying me that 352x480 is among the DVD-compliant resolutions. Wikipedia also says this, I found out. This must mean that DVD does long or "double-wide" pixels. I seek first of all to have an AVI file playable in VLC and Windows Media Player and MPlayer etc. But it would be GREAT to use a codec that I could additionally use to make a standard DVD for a DVD player. I think that means an MPEG-2 codec. I don't see any MPEG-2 codecs listed among my VirtualDub codec options. Do you figure this http://www.afterdawn.com/software/au...eg-2_codec.cfm (Stinky's) MPEG-2 codec would work? I read the other stuff you wrote TheSkiller (and from the others who commented, thanks) but I am not willing to expand the width (352) of my captures, because I have sort of settled on it, and besides, I'd be forced really to go to 704 or 720 and I'm not willing to do that, with all the increased hardware burden and file-size that would entail. I will however find a way to avoid the awkward 476 height, maybe by blacking the static at the bottom like Ghitulescu said, rather than clipping it off. Last edited by VirtualDubFan; 4th December 2011 at 19:48. Reason: remove sig |
|
4th December 2011, 00:28 | #6 | Link |
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
I am usually not doing film material but true interlaced though I do have some advice. I have also captured some film source VHS tapes.
My capture card (BlackMagic Infinity Pro) captures s-video as YUY2 720x486 if I save it as anything else it is converted or cropped by the capturing program (VirtualDub in my case) or the card's driver. I save the first copy as lossless UT Video, this gives about a 4:1 compression ratio. YUY2 does sample chroma at 1/2 the resolution in the horizontal direction but as you said 720 is a lot of horizontal resolution for (S)VHS anyway. Unlike YV12, YUY2 has full chroma resolution vertically. The conversion from YUY2 to RGB is not lossless and since almost all XVID/H.264 video is in YV12 or YUY2 there is no reason to convert to RGB. If my source is bad or I want the absolute best quality I capture the tape multiple times and average them together in avisynth. You need a TBC to do this as you obviously cannot have the frames change position or timing ( at least not often ). With five captures averaged together I can clean up the noise a lot and gain some detail but it does take a lot of work syncing up every capture. Even with a TBC the horizontal cropping needed might be different between each capture but the line length is the same and the cropping doesn't change throughout the entire capture. I sometimes do get frame duplication or drops that need to be fixed to keep the captures in sync but they are rare enough to be manageable. I also crop all the black borders at this step. Weather you do IVTC etc. is dependent on what is on the tape, of course. I have found the amazing collection of filters available for Avisynth to offer great solutions for deinterlacing and IVTC. They are better than the ones I have used in VirtualDub and you do not have to covert to RGB to use them. I resize in Avisynth to the closest mod8 4:3 resolution as the last step (~640x480, assuming a SAR of 10:11). If I am targeting DVD or Bluray I will add black borders back as needed and leave the video at the correct SAR. I like ResampleHQ with blackman 3 and softcubic 0.75 for the chroma but to each their own. It is better to resize at the end as you keep as much horizontal resolution as you can through the processing steps. I retain more horizontal detail by resizing in avisynth rather than capturing at a lower resolution. If you want to keep the anamorphic resolution resize to it at the end, you can set a flag to tell players that notice it to resize to the correct aspect ratio. Weather you capture at 720x480 or 720x486 just depends on what your card does. As I said mine always captures at 720x486 and I can crop during capture not rezise. Never resize vertically before doing IVTC or deinterlace. I often get the odd vertical resolution of 472 after cropping but if you want 480 you need to either add back black borders or resize up to 480 at the end. I always compress the final video with x264, is there a reason you want to use Xvid? Edit: what card are you using to capture with? Last edited by Asmodian; 4th December 2011 at 00:35. |
4th December 2011, 00:52 | #7 | Link |
Registered User
Join Date: Dec 2005
Posts: 110
|
Take a look at the VHS chroma channels. What's the benefit of capturing that low res ugliness with YUY2 (and end product being YV12 anyway)? I've tried comparing YUY2/YV12 captures of VHS's (UToY, VToY, upscale) and couldn't spot any difference so I'm curious to what's the rationale.
|
4th December 2011, 01:07 | #8 | Link | |
Registered User
Join Date: Oct 2011
Posts: 11
|
Quote:
I've used XViD for years, drawn to it at first because it was GPL. Theora and x264: I understand those are better, but you need a faster processor. XViD means generally you can play your videos on an old (or new and low-wattage) computer. But after the conversation today, I'm thinking I want to find some MPEG-2 codec that I can put on a DVD without reconverting or recompressing. Maybe Stinky's... That's a secondary goal though. The number one thing is to get a good transfer to AVI. I appreciate especially your comments about YUY2. Yeah, if my card hardware captures in YUY2, there is no way that I can get the RGB24 any-point-any-color potential, so why use that in software. Last edited by VirtualDubFan; 4th December 2011 at 19:47. Reason: remove sig |
|
4th December 2011, 01:35 | #9 | Link | |
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
Quote:
@VirtualDubFan Ah yes, a BT878. Yes, the 486 vs 480 is almost always just more lines of black, it can be nice to capture the full 486 if your tape has the extra black at the top while the card assumes it is at the bottom, but this is rare from what I have seen. If you have some black at the top and bottom with 480 486 won't change anything. H.264 AVC is actually quite easy to play back at SD resolutions, most computers still around have no trouble. Certainly a modern low wattage system can. edit: Even my phone can If you want to stick with VirtualDub for processing you might as well stay in RGB, it can only apply filters in RGB and you don't want to do extra YUY2->RGB->YUY2 conversions. Edit: Going to MPEG2 is not going to give you a good quality and a good sized AVI, you cannot even put MPEG2 into an AVI. Xvid is much better quality/size compared to MPEG2 let alone x264. Note that DVDs and Blurays all expect YV12 video. Last edited by Asmodian; 4th December 2011 at 01:57. |
|
4th December 2011, 02:52 | #10 | Link | |
Registered User
Join Date: Dec 2005
Posts: 110
|
Quote:
edit: I found one YUY2 SVHS sample from my collection where YUY2 is justified. It's a downloaded promo video from a highend transfer service and I cannot reproduce it with anything I got. Maybe a fake. edit2: Taste of 1st gen SVHS YV12 chroma (sorry no YUY2 at this time, maybe later if interested?) Last edited by juhok; 4th December 2011 at 02:59. |
|
4th December 2011, 03:00 | #11 | Link |
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
There is chroma information for every line on a VHS; why average the two lines together?
Sampling at one half the horizontal resolution of luma doesn't bother me at all; YUV 4:4:4 would be overkill. Edit: Here is a field from my current project in both YUY2 and YV12. Y, U, and V are in the same order as your image. YUY2: YV12: Last edited by Asmodian; 4th December 2011 at 03:38. Reason: add images |
4th December 2011, 04:11 | #12 | Link |
Registered User
Join Date: Dec 2005
Posts: 110
|
Your sample illustrates well what I mean. I upsampled (Photoshop bicubic sharper) the YV12 image and overlaid it with YUY2 version and then compared them by fast switching between both versions and there's hardly any difference.
YUY2 YV12: I would capture at YUY2 for archive and for the warm fuzzy feeling. I wouldn't worry about it when encoding MPEG2 or Xvid. All this comparing with my material suggests that in the case of SVHS YUY2 can be justified at times. My first source is just quite bad example of SVHS. |
4th December 2011, 05:29 | #13 | Link | |
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
Quote:
The real issue I have is going to YV12 before deinterlacing. With a progressive source averaging two adjacent lines is fine. With interlaced it averages the first and third lines. I don't really understand what happens when you deinterlace YV12, is there another interpolation or does it keep the color interlaced? Trying to get maximum quality for a lossless capture YUY2 is better, I consider hard drive space for intermediates meaningless. Converting to YV12 at the last step with the resize is fine, ResampleHQ() helps keep the warm fuzzy feeling. Using lossy compression and going for max quality at a set size I have noticed a YV12 video looks better than a YUY2 one. It is only after the video is already transparent that you might want to keep YUY2 (and you don't mind the file getting bigger). Specific images can also have issues, alternating red and cyan horizontal lines look much better in YUY2. YV12 vs YUY2 isn't really a (S)VHS issue, it should be just as significant with any source. VHS has discrete color information for each line, it is horizontally where the idea of pixels per color sample gets weird. ps. ResampleHQ()'s YUY2->YV12 only helps if it is also resizing the vertical resolution. Edit: After some testing I have decided interlaced YV12 is not reinterpolated when weaved, instead the wrong color value is used for every other line or you can convert it to YUY2 and then to progressive YV12, however this will blur the chroma vertically. This means you really should capture VHS in YUY2. Please see my post here if you want to see my experiment. Last edited by Asmodian; 4th December 2011 at 12:42. |
|
4th December 2011, 16:25 | #14 | Link |
Avisynth language lover
Join Date: Dec 2007
Location: Spain
Posts: 3,431
|
You're right it is not reinterpolated (chroma placement is unchanged), but why do you say it is the 'wrong' color? As long as it is handled consistently (by interlace-aware software), it is perfectly correct.
|
4th December 2011, 18:15 | #15 | Link |
Registered User
Join Date: Dec 2005
Posts: 110
|
I don't conceive what it is exactly that happens when deinterlacing that requires YUY2 in real world *VHS* material. Samples! If you want to record the test charts to VHS described in the another thread, YV12 is the least of the problems. Also this VHS chroma detail is mostly/only noise. When looking at it temporally it's usually quite horrible. Just because there's a difference doesn't mean it's real information -> detail. I can post some samples and tests later.
|
4th December 2011, 19:41 | #16 | Link | |
Registered User
Join Date: Oct 2011
Posts: 11
|
Quote:
The only reason I'm considering a MPEG-2 codec is secondary goal to use a codec that generates a file that could be put on a (play) DVD without any further compression/recompression and resulting video degradation. AVIDemux appears to allow me to use any of three MPEG-2 codecs in an AVI, but I have not tried this. I hear what you are saying Asmodian about h.264 but I will prob. stick w. XViD for now. Juhok, I see that you are critical of VHS, and rightfully so. However I look at it as trying to get the most of what is there on the source. Maybe a VHS chroma difference is not real information, maybe it is. I will go ahead and capture in YUY2. Last edited by VirtualDubFan; 4th December 2011 at 19:48. Reason: remove sig |
|
4th December 2011, 20:02 | #17 | Link |
Registered User
Join Date: Dec 2005
Posts: 110
|
If in doubt, going YUY2 is fine. It doesn't really add much to the bitrate or anything. I'm just curious to the technical points if there's a real world advantage to this (in deinterlacing). My relationship to VHS (and other vintage formats) is love/hate as I capture close to 1000~ hours a year.
|
5th December 2011, 01:48 | #18 | Link | ||
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
Quote:
Quote:
Edit: I take this back, I can notice a slight improvement by fixing the wrong values in avisynth, by this I mean using ConverttoYUY2(interlaced=true) before x264 or VirtualDub. I don't notice the blur or the YV12->YUY2 offset at all. Last edited by Asmodian; 5th December 2011 at 06:22. |
||
5th December 2011, 02:03 | #19 | Link | |
Registered User
Join Date: Feb 2002
Location: San Jose, California
Posts: 4,407
|
Quote:
You can still process in "Full processing mode" but capture in YUY2, capturing in RGB is just doing the YUY2->RGB conversion before saving the video. You do not want to resave any intermediates from a "Full Processing mode" pass to YUY2 though, try to keep it to one YUY2->RGB->YUY2/YV12. |
|
13th December 2011, 16:20 | #20 | Link | |
Registered User
Join Date: Dec 2002
Location: UK
Posts: 1,673
|
Quote:
Plus some decent encoders expect an AVIsynth file as an input (e.g. HCenc, MeGUI). Cheers, David. |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|