the enunn guide to vhs capture and cleanup
i've been doing vhs transfers regularly since 2019, and since then i've gained some knowledge of how to do it in high quality. there's a ton of ways to do it, but i will be sharing how i do things with my tape transfers.
now incase you haven't watched my tape captures on youtube, you really should. i upload them regularly on enunn and enunn2. when i upload to youtube, i do some "restoration" and cleanup. i don't even know if you can really call it restoration, but i guess some people use that term.
but in order to get a good restoration, you gotta start with a high quality source. here is my setup.

yes, i still use a traditional/conventonal setup. yes, i am aware of vhs-decode, and yes, i'm probably missing out. vhs-decode looks amazing but i do not have the equipment to tap my vcr, and given how expensive my vcr is, i don't know if i wanna do that to it. i do have a domesday duplicator, but i only use that for my laserdisc transfers. i might take a look at vhs-decode in the future when i get all the equipment i need.

now to the setup itself. first off, the vcr itself. i have a panasonic ag-1980. i've been told it's probably one of the best vcr's ever made. the quality on this vcr is excellent. but getting one used can be an issue. the capacitors on this thing suck ass. they die pretty easily, so if you find this thing in the wild, it almost always needs a recapping. the guy i bought this vcr from recapped it himself (in fact, i was his first client for a recapped unit), and he did a good job with it. there are some other recapping services out there, namely deter on videohelp.com, but i don't have expierience with him. for the best results on this vcr, use s-video and set the picture mode to edit. i'll explain later.

next up, my time base correctors. i have both a datavideo tbc-3000 and a panasonic dmr-es15. i use both regularly. the datavideo is a frame synchronizer, which means that it outputs a stable, constant signal to my capture card. the reason why this is important is because vhs is an unstable signal, so without it, capture cards can drop frames or lose audio sync. but unfortunately these are really expensive. like unobtainably expensive. my unit costed $3,000. HOWEVER, it was a birthday gift from a friend of mine. it wasn't my money ;)
the es15 does pretty much the same thing. so why have both? well, there's a reason. my vcr also has a time base corrector in it, but a tbc in a vcr is different than an external tbc. the vcr's tbc cleans up the image, the external tbc cleans up the signal so that there's no dropped frames. but vcr tbc's aren't perfect and can cause issues. the main issue i experience in some tapes is that with the ag-1980's tbc on, part of the left side of the screen is lagged behind for a frame, making it really distracting to watch in my opinion.


so with these problematic tapes, i turn off the tbc on my vcr, and run it through the es15 instead. the lagged frame is gone. the tbc-3000 looks the best if the vcr's tbc is on. there's less wobbles and such. the es15 can correct wobbles, so that's another reason why i run certain tapes through it.

unfortunately one of the main downsides to the es15 is that if you run a tape that has macrovision on it, you'll more than likely have issues with the white level clipping. basically your captures will be too bright. your whites will be clipped with no way of recovering them (example above). i found a solution online, i just need some money to get it going. it looks promising though.

then there is the capture card. i use an io-data gv-usb2. i've had it since 2019 and it's worked quite well for me. it's gotten quite expensive recently, and there might be fakes being sold online, so be careful. other good capture card options are a dazzle dvc-100, hauppauge wintv pci cards (i have an hvr-1290 personally), the diamond vc-500, the hauppauge usb-live2, and that one ati all in wonder card that lordsmurf prefers that only works on xp. stay away from the elgato. stay away from easycraps.
i capture everything via s-video. theres a common misconception in that vhs is composite video. this is not true. vhs is y/c, so the chroma and luma are separated. so if your vcr has an s-video port, use it. if not, that's ok too. if you use an es15 or similar dvd recorder with tbc, ALWAYS use s-video, even if your vcr is composite only. why is this? because the dvd recorder has its own comb filter that separates chroma and luma from a composite signal, so it can give you better results than just outputting composite, which will separate luma and chroma, then cram them back together, harming quality.
another tip, make sure your s-video cables are high quality. poorly sheilded cables can cause checkerboarding and interference issues. unfortunately it's quite hard to find good s-video cables nowadays for a good price. there's blue jeans cables, but they are expensive. high quality for sure, but expensive. ebay might be your best bet, just do some research on cables and find which ones are best for you.
so here's how everything is wired.
- panasonic ag-1980 - s-video -> datavideo tbc-3000 OR panasonic dmr-es15 - s-video -> io-data gv-usb2
now to the capture pc. yes, i use a separate pc for my captures. and i HIGHLY reccommend you do so too. it'll take less load off your main pc, and less load = less dropped frames = less potential for sync issues. you don't need a beefy computer to capture sd video. my capture pc is a dell optiplex 755. it has an intel core 2 quad q6600 @ 2.4hghz, an nvidia geforce 7900gs, 1gb of ram, and it's running windows xp integral edition. xp integral edition is a modified version of service pack 3 with a lot of updates and themes. i highly recommend installing this over the official service pack 3.
windows xp might sound silly, but there's a reason why i use xp. it's for stability. windows 11 does a lot of stuff in the background, especially over the internet, which can increase your chances of dropped frames and sync issues. and i don't want that. a lot of sd only usb capture cards support xp, so you'll probably be fine. just do your research.

now for the software, i use virtualdub personally. some people also use amarectv, but for some reason it always varies from pc to pc. some people have issues in virtualdub, others have issues with amarec. just use what works best for you. you can capture to a boat load of codecs, but for my purposes i capture to the lagarith codec. i used to use huffyuv until very recently, but files captured with lagarith are smaller than huffyuv. both of these codecs are lossless, which means its capturing basically everything that the capture card sees. unfortunately, file sizes are huge. for me i get about 30gb/hr. so a 6 hour tape could be about 160gb. you can compress these in the future if you'd like, but i highly recommend keeping the lossless masters if you can afford the space. what i like to do is transcode to another lossless codec, ffv1, to save a few extra gigabytes. capturing to a lossless codec is important for restoration, as you have all the data to play with. capturing lossy isn't ideal, but i get it if you want to save space. just keep in mind, a lossless to lossy transcode will almost always look better than a lossy capture.
i always capture at 720x480. make sure you do that. why not 640x480? because 720x480 is the cards native resolution (for NTSC). it's wider than 4:3, but keep reading. we will correct the aspect ratio in post.
PLEASE DO NOT USE OBS FOR TAPE TRANSFERS!! it's not made for it. you will ALWAYS get duplicate frames regardless of your pc/tbc/vcr/capture card, and interlace support is hit or miss. the only plus it has is that it can easily capture lossy if you're THAT desparate to save space. other than that, you should use something else, please, i beg you.
now that i got the capture setup explained, how do i process my tapes for uploading to youtube? well, i use a combination of software.

first off, i extract the audio from the video file with ffmpeg. then, depending on if the tape has linear audio only or hifi audio, i do one or two things. for linear audio tapes, i import the audio file that has been extracted into adobe audition. there, i convert the audio file to mono (as vhs linear audio is almost always mono), and then do a little eq. it helps make the audio sound less muffled.

after i do that, or if the tape is in hifi, i import the audio into the izotope rx 11 audio editor. here, i do dehumming via the de-hum, denoisng via spectral de-noise, and (depending on how bad hifi crackling is on the tape) i do de-crackling via the de-crackle. i also normalize the audio to -1db. you don't want your final encodes to be quiet. i normalize before i do anything else, as the de-whatevers have more data to process if you normalize beforehand. if the tape is linear, i usually do the normalization in audition. i export the processed audio in both programs as a flac file. a wav file will work too, just make sure your exported audio is either wav or flac.

for the video side of things, i use avisynth scripts. avisynth is a scripting language that specializes in video processing. i use avspmod as a gui, as it has a live preview of your script, so you can see how it looks before you encode it.

above is my usual script. i took a chunk of it from another youtuber, randomvhstat, so shout outs to them for inspiring part of my script. it looks really complicated, but i'll explain this as best as i can.

the first thing i do in my script is to load my source files. so in this case, my capture, and my processed audio. then i do levels adjustment. i like my whites white and my blacks black, so i adjust the levels so that the brightest parts of the image is at 235, and the blackest parts of the image is at 16. i think it makes the colors pop, especially on an oled. make sure you convert your bit depth to 10 bit before you do this, as there will be less banding. i use avisynth's histogram to help me out with that. my levels settings are different for every tape. i also lower the saturation, as my raws are a little too saturated.
then for my youtube uploads, i do my "secret sauce" if you will. i do deinteracing and cleanup.
the first part of the cleanup is ccd, aka camcorder color denoise. this will denoise the chroma noise that's in a lot of vhs captures. it is a virtualdub plugin, so you'll need to load the plugin at the top of your script, then convert to rgb32 before you apply the filter. honestly, the effect is really subtle. it's only really noticable if you zoom in. but trust me, it helps out.
next, i use chromashiftsp to shift the chroma a few pixels. just incase the reds are slightly shifted. this depends on the tape
for both ccd and chromashiftsp, i separate the fields and apply the filters to each field, then weave them back together. this is because both plugins work best with progressive video.
next, i deinterlace with qtgmc. it is by far the best deinterlacer out there. you can tweak the parameters for your liking, to add more detail and such.
if the tape is entirely 24p or 30p, i use the tfm plugin to remove the 3:2 or 2:2 pulldown instead of qtgmc. for 24p i also use tdecimate to bring the video back to 24p. then, i use vinverse to get rid of residual combing. i rarely use this for vhs.
replaceframex is a plugin i use rarely. for some reason my vcr likes to show some white static for a frame. i don't know why. i use this if the content is 24p or 30p. i can reuse a previous or next frame to get rid of it. this only works well for 24p or 30p sources. with 60i, i just recap the segment. it's a pain in the ass.
i don't really know what mergechroma and santiag do. i don't really pay attention to it. but according to randomvhstat, mergechroma "sharpens colour, useful for smeary VHS colour", and santiag "further suppresses time-base jitter". it does help out, that's for sure.
neo-dfttest is a denoiser. i denoise all my tapes. you don't have to denoise if you don't want to, but i just like it. when i do denoise, i do it very lightly. this is the main reason why i keep my vcr in edit mode. the noise reduction on the vcr isn't up to snuff in current year, plus it adds ghosting. edit mode shows the tape as raw as possible. you can get a better result denoising in post than with the vcr. the denoising strength value (the sigma) varies from tape to tape. i usually go very light on sp tapes, but i do a little more on lp/slp/ep tapes.
lsfplus is a sharpener. it sharpens the video. finedehalo is a dehalo-er. it reduces the effect of halos/ringing artifacts on a capture.






combine all this, and i'd say you got a good clean result. honestly, it still looks great raw. so if you prefer, you don't have to do anything.
the next step i do is aspect ratio correction. as you can see in the script, i resize to 652x480 and not 640x480. why? because i've read online that to get the right aspect ratio on analog tapes, you basically crop 8 pixels from the left and right, making your image 704x480, and then resize that to 640x480. doing that however, you risk losing parts of the visible image, which i do not prefer. i found that resizing to 652x480 gives that exact same result without cropping, so thats what i do. 652x480 is wider than 640x480, but the difference is negligible. but honestly, there's nothing wrong with resizing to 640x480. both are a-ok.
then, i crop. i like cropping out any black borders and head switch noise for some reason. i dunno why, i just do. values differ from tape to tape.
the last step is the upscaling. i do not do ai upscaling. it never works for vhs or live action content. it only really works with 2d animation, and that varies from scene to scene. please don't use it. it's awful. what i do instead is use a plugin called avisynthshader. it has a function called superres, which is a high quality upscaler. it can only scale in powers of 2 (so 2x, 4x, 8x, 16x, etc.). i scale 4x, then do one more scale to my target resolution, which is 2176p. i find that doing that is indistinguishable from a superres 8x scale, then downscale to 2176p, and it encodes faster.
if you're uploading to youtube, you should always scale your videos to at least 1440p to get the vp9 codec and a better bitrate. upscaling to 4k will look better on youtube than 1440p, but 1440p will be just fine. i scale a little more than 4k (2160p) because i thought it looked a little better on youtube than uploading in 2160p. but most people won't care, so uploading in 2160p is just fine.
the last line in my script is a conversion to 4:2:0. all streaming sites are in 4:2:0, so it saves a step on youtube's end. depending on my crop values, i have to scale to 2178p or 2180p for my script to work. the width of 4:2:0 video must be a multiple of 2, so that's why i scale to those oddball resolutions sometimes
video cleanup is done. how do i encode my scripts for youtube? i use ffmpeg personally. it is the swiss army knife of encoding. i use the hevc_nvenc encoder for most of my uploads. sometimes i will use ffv1 but only for the super short uploads. you want your encodes to be as high quality as possible so it can look good on youtube.
this is what i use for encoding with hevc. please note you'll need an nvidia gpu for this one.
ffmpeg -hwaccel auto -i "script.avs" -pix_fmt yuv420p10le -c:v hevc_nvenc -gpu any -g 30 -rc vbr -cq 16 -qmin 16 -qmax 16 -b:v 0K -b_ref_mode 1 -spatial_aq 1 -temporal_aq 1 -preset p7 -c:a copy "output.mkv"
and here's what i use for encoding to ffv1
ffmpeg -hwaccel auto -i "script.avs" -field_order 0 -c:v ffv1 -level 3 -coder 1 -context 1 -g 1 -slices 12 -c:a copy "output.mkv"
replace "script.avs" with the path and name of your script. replace "output.mkv" with the path and name of your output file.
and that's all! thanks for reading!! i'll have some useful links if you want to tinker around with your captures. please keep in mind, this'll work best on a lossless video. if you have any questions, don't hesitate to reach out to me via my discord server.