Quote:
Originally Posted by ehbowen
The videos were, apparently, originally shot with a Hi8 camcorder (Hi8 logo appears occasionally). However, they were all transferred to a single VHS tape in EP mode.
|
Ouch!

That smarts!
Quote:
Originally Posted by ehbowen
I'm still not certain of the eventual destination. I know I want to render it to MP4 (and I have) for viewing directly on a computer, but I may be asked to burn it to DVD and/or Blu-ray for storage (you can fit a lot of SD video on a single Blu-ray; there's almost 4 hours of material on just this one VHS tape). My aspect ratio question regards how to handle it during the intermediate steps when your planned final aspect ratio is 4:3.
|
You seem to be on the right track so far. I'm posting a script and some samples of what i think is an easy way to get into multiple final encodes.
However, you should avoid the following:
For both clips I cropped the garbage from the bottom and a little from the side, then ran it through Neat Video for noise reduction and finally resized the output. [/QUOTE]I don't see any necessity to crop off from the sides, but it's up to you, But resizing to fill the frame vertically -- that's an ouch!

. From the results I can see that the aspect ratio is stretched vertically. You ought to crop off the bottom noise but leave the replacement pixels, because the part that you resize to flll the borders will be covered by TV overscan (yes, modern HDTV does have overscan and on most sets it can't be disabled). Besides, Hi8 and many other consumer video cameras don't really shoot a 4:3 image, it's less like 1.3333:1 and more like academy movie 1.378:1, which is just slightly wider. That means that a slight letterbox is common for such videos and I see it on Turner Classic movies all the time. In the Avisynth script, I used cropping that keeps all of the core image intact.
Another major problem you have is that no attempt was made to control the signal level during capture. the result is some very bad bright clipping and easily visible loss of detail in highlights. There is also some detail loss and murky, grimy shadows because of crushed blacks. The red arrows in the image below show the clipping areas:
If you submitted that video for local broadcast or a CCTV network, it would be refused because of those bad levels. I was able to retrieve just a little of the clipped brights and keep the darks from looking so grimy by adjusting levels in YUV in the Avisynth script;
I added some color tweaking in RGB later in
VirtualDub, along with a slight touch of NeatVideo. I hesitated to use NV because I had no reliable sample frame from your clips, but the result was still too noisy with all the generational mistracking damage.
I made a plain vanilla interlaced version of the generator clip. I was not satisfied with the way the multi-generation tape totally screwed up the interlacing. I don't think it's possible to clean up the bad edge buzzing and aliasing by keeping the video interlaced -- and the video is further damaged by all the mistracking in the area of the generator itself. The interlaced version I came up with is attached as GenClipCapt_Bad_Interlace.mp4.
The samples I'm attaching are physically progressive @29.97fps. The script produces a progressive video by dropping the even-numbered framer (I thought the odd-numberd frames looked cleaner). The clip comes mfrom the script at 720x480. Although it's physically progressive, it's encoded with interlace flags for DVD and for BluRay, which are normally interlaced or encoded as such. For standard definition BluRay it's required. So I'm attaching and MPEG DVD version as GenClipCapt_DVD.mpg. I'm also attaching a BluRay version encoded with h.264 but in an mp4 container (we can't post m2ts files). The BD menu version is attached as GenClipCapt_BluRay.mp4 and is BDMV compatible except for the mp4 container and the AAC audio track, which will have to be Dolby AC3 for BluRay. The target h.264 bitrate for the BDMV version was 7000 vbr, which is about the limit for any improvement in Standard Def Bluray, higher bitrates would be a waste. That bitrate would probably allow 4 hours of video on one side of a BD disc. 7000vbr in jh.264 would be the equivalent of about 10000 to 12000 vbr in MPEG, but you can't use bitrates that high for DVD.
The other attachment is GenClipCapt_4x3p.mp4, which is the results of the 720x480 script resized to square-pixel 640x480 and encoded as h.264 progressive for computer play or web posting.
Here is my script for the 720x480 version (you don't have to use this same script., it's very sloooow):
Code:
Import("D:\Avisynth 2.5\plugins\ContrastMask.avs")
Import("D:\Avisynth 2.5\plugins\RemoveDirtMC.avs")
Import("D:\Avisynth 2.5\plugins\Santiag_v16.avs")
Import("D:\Avisynth 2.5\plugins\MDG2.avs")
AviSource("D:\forum\faq\ehbowen\D\GenClipCapt.avi")
ColorYUV(cont_y=-25)
Levels(14,0.95,255,16,245,dither=true,coring=false)
Tweak(sat=1.1,cont=1.10,dither=true,coring=false)
AssumeTFF()
### --- Note: input is already required YUY2 for filters below. --- ###
### --- These filters and routines address edge halos and aliasing --- ###
SeparateFields()
w = width
h = height
nnedi3_rpow2(2, cshift="Spline36Resize", fwidth=w*2, fheight=h*2) # restore width
FixVHSOversharp(20,16,12)
FixVHSOversharp(20,8,4)
FixVHSOversharpL(20,12,8)
Spline36Resize(w,h) ### --- restore original dimensions
Santiag(2,2)
AssumeFieldBased()
Weave()
ConvertToYV12(interlaced=true,ChromaOutPlacement="MPEG2",matrix="Rec601")
ContrastMask(enhance=2.5)
SeparateFields()
DeHalo_Alpha(rx=2.1,ry=2.1)
MDG2()
RemoveDirtMC(30,false)
Weave()
QTGMC(preset="Medium",ChromaNoise=true,DenoiseMC=true,border=true,Rep0=1).SelectOdd()
AWarpSharp2()
Crop(0,2,0,-14).AddBorders(0,8,0,8)
return last
In order to get the 640x480 version, I opened that saved 720x480 progressive file and used the code below to resize. The 640x480 is encoded as progressive.
Code:
###--- change the path statement to match your system ---###
AviSource("Drive:\path\to\720x480po_videp.avi")
ConvertToYUY2(matrix="rec601",interlaced=false,ChromaInPlacement="MPEG2")
Spline36resize(640,480)
ConvertToYV12(matrix="rec601",interlaced=false,ChromaOutPlacement="MPEG2")